文档章节

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

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

© 著作权归作者所有

共有 人打赏支持
辉煌霸猪
粉丝 2
博文 29
码字总数 32226
作品 0
郑州
程序员
后端-优秀文章

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

掘金官方 ⋅ 01/08 ⋅ 0

总结PHP缓存技术的多种方法

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

疯狂的小黑 ⋅ 2016/11/18 ⋅ 0

结合个人经历总结的前端入门方法

作者:qiu deqing 链接:https://github.com/qiu-deqing/FE-learning 结合个人经历总结的前端入门方法,总结从零基础到具备前端基本技能的道路、学习方法、资料。由于能力有限,不能保证面面...

SomaLihq ⋅ 2017/01/12 ⋅ 0

Jeecg开源社区/jeecg

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

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

十面阿里 屌丝程序员的逆袭之路

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

美的让人心动 ⋅ 05/18 ⋅ 0

34岁!100天!学会Java编程(Day16-Day19)—MySQL与JDBC编程

电子深势阱 11月12日-14日,北京的阳光依旧灿烂,只是每天刺骨的北风都在提醒我们冬天的威严。想起某学霸的文章,北京每年的11月1日—14日,是一年最冷的时段,之所以说是学霸,是因为他做了...

魏小筠 ⋅ 2017/11/15 ⋅ 0

oracle学习路线图

这是本人收藏的一个大师写的,用来提示自己oracle学习路线 1、sql、pl/sql(网上有很多的视频,可以做一个简单的入手,然后看几本书,多做实验) 作为oracle的基本功,需要大家对sql和plsql...

Monument ⋅ 2014/09/25 ⋅ 2

基于代码生成器的快速开发平台 - JEECG

JEECG是一款基于代码生成器的J2EE快速开发平台,开源界“小普元”超越传统商业企业级开发平台。引领新的开发模式(Online Coding模式(在线开发)->代码生成器模式->手工MERGE智能开发),可以帮...

Jeecg ⋅ 2012/12/30 ⋅ 80

探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法 - 聚类(四)

狄利克雷聚类算法 前面介绍的三种聚类算法都是基于划分的,下面我们简要介绍一个基于概率分布模型的聚类算法,狄利克雷聚类(Dirichlet Processes Clustering)。 首先我们先简要介绍一下基于...

东方神剑 ⋅ 2014/11/13 ⋅ 0

如何快速、准确地阅读技术书籍?

摘要 这篇文章从如何阅读书籍出发,简单讨论了如何选择书籍、是否阅读原版和阅读数量这几个常见问题,然后自己的阅读问题进行了分析和总结。 注意 “如何阅读”指“What to read”而非“How...

modernizr ⋅ 2014/06/26 ⋅ 4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringCloud 微服务 (六) 服务通信 RestTemplate

壹 通信的方式主要有两种,Http 和 RPC SpringCloud使用的是Http方式通信, Dubbo的通信方式是RPC 记录学习SpringCloud的restful方式: RestTemplate (本篇)、Feign 贰 RestTemplate 类似 Http...

___大侠 ⋅ 6分钟前 ⋅ 0

React创建组件的三种方式

1.无状态函数式组建 无状态函数式组件,也就是你无法使用State,也无法使用组件的生命周期方法,这就决定了函数组件都是展示性组件,接收Props,渲染DOM,而不关注其他逻辑。 无状态函数式组...

kimyeongnam ⋅ 13分钟前 ⋅ 0

react 判断实例类型

今天在写组件的时候想通过判断内部子元素不同而在父元素上应用不同的class,于是首先要解决的就是如何判断子元素的类型。 这里附上一个讲的很全面的文章: https://www.cnblogs.com/onepixel...

球球 ⋅ 19分钟前 ⋅ 0

Centos7备份数据到百度网盘

一、关于 有时候我们需要进行数据备份,如果能自动将数据备份到百度网盘,那将会非常方便。百度网盘有较大的存储空间,而且不怕数据丢失,安全可靠。下面简单的总结一下如何使用 bypy 实现百...

zctzl ⋅ 33分钟前 ⋅ 0

开启远程SSH

SSH默认没有开启账号密码登陆,需要再配置表中修改: vim /etc/ssh/sshd_configPermitRootLogin yes #是否可以使用root账户登陆PasswordAuthentication yes #是都开启密码登陆ser...

Kefy ⋅ 36分钟前 ⋅ 0

Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群

有段时间没更新博客了,趁着最近有点时间,来完成之前关于集群部署方面的知识。今天主要讲一讲Zookeeper+Hadoop+Hbase分布式集群的搭建,在我前几篇的集群搭建的博客中已经分别讲过了Zookeep...

海岸线的曙光 ⋅ 44分钟前 ⋅ 0

js保留两位小数方法总结

本文是小编针对js保留两位小数这个大家经常遇到的经典问题整理了在各种情况下的函数写法以及遇到问题的分析,以下是全部内容: 一、我们首先从经典的“四舍五入”算法讲起 1、四舍五入的情况...

孟飞阳 ⋅ 今天 ⋅ 0

python log

python log 处理方式 log_demo.py: 日志代码。 #! /usr/bin/env python# -*- coding: utf-8 -*-# __author__ = "Q1mi""""logging配置"""import osimport logging.config# 定义三种......

inidcard ⋅ 今天 ⋅ 0

mysql 中的信息数据库以及 shell 查询 sql

Information_schema 是 MySQL 自带的信息数据库,里面的“表”保存着服务器当前的实时信息。它提供了访问数据库元数据的方式。 什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,...

blackfoxya ⋅ 今天 ⋅ 0

maven配置阿里云镜像享受飞的感觉

1.在maven目录下的conf/setting.xml中找到mirrors添加如下内容,对所有使用改maven打包的项目生效。 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.al......

kalnkaya ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部