文档章节

NC57查询引擎技术经典知识点总结

辉煌霸猪
 辉煌霸猪
发布于 2017/08/23 10:07
字数 1706
阅读 12
收藏 0

1、“筛选条件”相当于where条件,这里支持两种条件,固定和待定。固定,顾名思义就是写好后就不能变化,而待定条件是跟参数设置相关的,可以根据用户输入的参数变化。

2、各种数据源的概念区分:

      业务数据源(上面说的A)通常指当前登录账套的数据源,是NC运行所需要的业务数据源。

      定义数据源(上面说的B)是指查询引擎自身的系统表所在的数据源,执行切换功能后,主界面上的对象树的内容会作相应改变。请注意查询引擎自身的系统表可以和当前的业务数据源不是同一个数据源,例如当前登陆账套是Account1,数据源是datasource1,而查询引擎的系统表可以不在该数据源下,而在另一个数据源datasource2下,datasource2可能是账套Account2的数据源,也可能是任何其他的数据源。但是前提是该数据源中必须含有查询引擎自身的系统表。

      执行数据源(上面所说到的C)是指该查询定义取数的数据源,我们知道查询定义设计的最终目的还是去特定的数据源查取用户所需的数据,执行数据源就是存储这些用户所需数据的数据源,查询引擎本身的系统表所在数据源可以跟这个取数数据源不同,也就是说定义数据源和查询数据源可以分离。

3、数据加工数据源:

查询引擎中高级功能“数据加工”所使用的数据源,二次开发人员需要特别注意在使用数据加工这个功能时,在获取数据源的时候有如下语句:

getEnv().getDefaultDsn();

这句话返回的就是在这里定义的“数据加工默认数据源”。V5版本支持多种数据加工数据源,这里定义的时在默认情况下的数据源,下表列出在各种查询引擎版本下的数据加工数据源及其含义。

 

版本号

                                                                                                                           对应数据源及其含义

LOGIN

查询引擎单数据源版本,数据源为当前登陆账套数据源

Default

默认数据源,在查询引擎环境变量设置中显式定义的数据加工默认数据源

DW

查询引擎的DW版本,数据源为查询引擎环境变量中定义的DW数据源

BPM

查询引擎的BPM版本,数据源为查询引擎环境变量中定义的BPM数据源

QMD

查询引擎多数据源版本,数据源为查询对象设计中查询对象的数据源

                                                                                                                   表 2‑1

 首选项配置的内容还包括数据仓库应用的一些配置,以及界面操作过程中的与个性化或性能相关的设置,比如后面会提及的查询执行的最大行数限制等等。首选项对应的配置文件是%NC-HOME%\ierp\bin\queryengine.xml,是被全集团共享的。

4、(1)参数定义: 当数据类型为枚举时,枚举项为用“@”分隔的枚举值,或者是一个单字段的查询SQL;当类型为参照时,枚举项为基础参照名,或者是用尖括号括起的自定义参照的类名。

致开发者:在V5.0中 该类应该放置在client以上的包中,对于放置在private中的类,则会抛出ClassNotFoundException

(2) 参数引用:参数可在SQL设计的筛选条件页签引用,也可在SQL整理或数据加工的嵌入代码中利用编码向导引用。这里当筛选条件是待定条件的时候,双击“值”,文本框,就可以弹出参数选择对话框,点击选择对应的参数即可。

 

(3)替换型参数:是指参数名以#开头并以#结尾的参数,多用于手工SQL设计中,也可用于向导SQL的非待定条件部分。这种参数通常相当于preparestatment中的?占位符,关于替换型参数,后面的章节中还有详细介绍。在设置替换型参数的时候,不输入值将不被认为是忽略此参数对应的条件。

5、NC数据字典通常在安装产品时候由系统生成,如果想自己为某些数据库对象生成字典,可以采用数据字典管理界面提供的导入方法。导入方式包括三种(详细操作可参见《数据字典导入说明》):

1、 解析PDM文件(xml格式);

2、 解析NC标准建库脚本;

3、 提取数据库元数据;

如果需要给非NC数据库(比如用户采用的第三方数据库)生成数据字典,可以利用PowerDesigner提供的逆向工程功能将库里的物理表生成PDM文件,修改其中表和字段的中文名称,然后以xml文件格式存储,再使用上述第一种方法导入。

6、字段定义:V5中增添了这样的功能,可以在查询字段中添加NC的公式,但是这些公式需要特定的格式,例如取得前台数据库缓存中某表的一个或多个字段,可以使用’{getColvalue(xx,yy,zz)}’,请注意单引号和大括号是必须的。这里的处理机制是先将上述公式作为一个字符串,在查出结果集之后再把公式翻译执行。

7、筛选条件定义: 即SQL语句中的where部分,可定义确定条件和待定条件。如果是待定条件,在值编辑框获得焦点时双击编辑框可弹出参数界面并作引用(或者在值编辑框获得焦点时按F12键或者双击弹出参数引用框);如果是固定条件,在值编辑框获得焦点时按F11键或者双击可弹出环境变量引用框,按F12键可弹出所引用的基础数据表的参照。

 

对于在查询字段里使用了聚集函数的SQL设计,筛选条件可能需要使用having子句。Having页签默认是隐藏的,可以在查询定义框的南部面板按Ctrl+Shift+鼠标左键弹出隐藏的Having页签。

8、数据加工与SQL整理的区别在于:前者在SQL查询之后进行,作用的对象是结果集;后者在查询之前进行,作用的对象是SQL定义。

© 著作权归作者所有

共有 人打赏支持
辉煌霸猪
粉丝 3
博文 33
码字总数 33209
作品 0
郑州
程序员
知识图谱的独特之处——深度学习无法解决的人工智能

知识图谱的独特之处——深度学习无法解决的人工智能 摘要:2018云栖大会上海峰会,阿里云高级算法专家林奈对特定领域知识图谱的构建及应用案例进行讲述,最近几年知识图谱有一些过气,但是由于...

云迹九州
06/23
0
0
InnoDB,5项最佳实践,知其所以然?

缓存讲了一个月《缓存架构,一篇足够》。今天,开始写数据库。 第一篇,说说MySQL两个最常用的存储引擎,MyISAM和InnoDB。照自己的理解,把一些知识点总结出来,不只说知识点,多讲“为什么”...

架构师之路
08/08
0
0
后端-优秀文章

理解事务 - MySQL 事务处理机制 作者从概念到实践队 MySQL 的食物处理机制讲得特别详细。 一个人搞定 APP 前后端开发 使用 react-native 开发 app,使用 express 开发后端。 五大常见的 MySQ...

掘金官方
01/08
0
0
总结PHP缓存技术的多种方法

总结PHP缓存技术的多种方法 这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化...

疯狂的小黑
2016/11/18
3
0
Jeecg开源社区/jeecg

JEECG 微云快速开发平台 当前最新版本: 3.7.1(发布日期:20170918) 前言: 随着 WEB UI 框架 ( EasyUI/Jquery UI/Ext/DWZ) 等的逐渐成熟,系统界面逐渐实现统一化,代码生成器也可以生成统...

Jeecg开源社区
2013/11/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Nginx防盗链、访问控制、Nginx解析PHP相关配置、Nginx代理

Nginx防盗链 在配置文件里写入以下内容: 用curl测试 访问控制 Nginx限制某些IP不能访问或者只允许某些IP访问。 配置文件写入如下内容: allow 表示允许访问的IP,deny限制访问的IP。 匹配正...

黄昏残影
7分钟前
0
0
自己动手实现RPC服务调用框架

转载 TCP的RPC 引言 本文利用java自带的socket编程实现了一个简单的rpc调用框架,由两个工程组成分别名为battercake-provider(服务提供者)、battercake-consumer(服务调用者)。 设计思路...

雨中漫步的鱼
10分钟前
0
0
Centos6.x安装之后的9件事

Centos6.x安装之后的9件事 这些不是必须都做的,只不过是我个人的习惯,在此记录一下。 1.修改yum源到国内 CentOS系统更换软件安装源 备份你的原镜像文件,以免出错后可以恢复。 mv /etc/yu...

叶云轩
15分钟前
5
0
springboot2 使用jsp NoHandlerFoundException

开发图片上传功能,为验证测试功能是否正常,使用JSP编写表单提交进行测试 开发完成后,请求API提示如下异常: No mapping found for HTTP request with URI [/WEB-INF/jsp/avatar_upload.j...

showlike
21分钟前
0
0
springboot踩坑记--springboot正常启动但访问404

一 spring boot的启动类不能直接放在main(src.java.main)这个包下面,把它放在有包的里面就可以了。 二 正常启动了,但是我写了一个controller ,用的@RestController 注解去配置的controlle...

onedotdot
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部