文档章节

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

辉煌霸猪
 辉煌霸猪
发布于 2017/08/23 10:07
字数 1706
阅读 15
收藏 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定义。

© 著作权归作者所有

共有 人打赏支持
辉煌霸猪
粉丝 4
博文 53
码字总数 57350
作品 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
十面阿里 屌丝程序员的逆袭之路

前言 《十面阿里》本屌现今四年开发经验;前前后后为进阿里面试十次(阿里旗下——蚂蚁金服,天猫的offer都被hr因学历而被拒,最后的菜鸟面幸运的被录用,拿到P6offer,真正的“十面”阿里!...

美的让人心动
05/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

开源 java CMS - FreeCMS2.8会员我的评论

项目地址:http://www.freeteam.cn/ 我的评论 从左侧管理菜单点击我的评论进入。在这里可以查看当前登录会员的所有评论记录。 删除评论 选择评论然后点击删除按钮可以完成删除操作。 为了防止...

freeteam
8分钟前
1
0
Eureka Server启用 https服务指北

文章共 591字,阅读大约需要 2分钟 ! 概 述 在我的前文《Eureka Server 开启Spring Security Basic认证》中已经给 Eureka Server 开启了最基本的鉴权措施,本文则让 HTTPS加持于 Eureka Ser...

CodeSheep
46分钟前
8
0
OSChina 周二乱弹 —— 其实我在地板也睡不着

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @witt-z :分享歌词: 阴天 在不开灯的房间,当所有思绪都一点一点沉淀。 分享莫文蔚的单曲《阴天》: 《阴天》- 莫文蔚 手机党少年们想听歌,...

小小编辑
今天
383
7
微服务分布式事务实现

https://www.processon.com/view/link/5b2144d7e4b001a14d3d2d30

WALK_MAN
今天
3
0
《大漠烟尘》读书笔记及读后感文章3700字

《大漠烟尘》读书笔记及读后感文章3700字: 在这个浮躁的社会里,你有多久没有好好读完一本书了? 我们总觉得自己和别人不一样,所以当看到别人身上的问题时,很少有“反求诸己”,反思自己。...

原创小博客
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部