润乾 NLQ 课程 - 2 明细查询

2. 明细查询

2.1. 查表中的字段

查询:发货城市、发货日期,收货日期,金额

意图:查ORDERS 中的指定字段

先点击文件 - 新建,建一个字典文件:

..

点击菜单 - 工具 - 导入元数据,导入 ORDERS 表:

..

导入后:

..

:对应 DQL 元数据中的表,相当于“逻辑宽表”。

为了和词典中的区别开,我们把数据库中的表称为物理表。

表名:对应 DQL 元数据中的表名,如 ORDERS

宏字段:对应元数据中的字段

宏字段 - 标识:字段的唯一名称

宏字段 - 广义字段表达式:包含元数据表名和字段名,如 ORDERS.CUSTOMERID

宏字段 - 字段词:汉语查询中用字段词来查询字段,如“客户编号, 客户号”

把字段词改成中文:

..

有多个同义词的,用英文逗号分开:订单金额, 金额, 总价, 销售金额, 销售额。

定义好字段词,就可以查对应宏字段了。打开工具 - 搜索实验:

..

输入查询文本,点击搜索按钮。有结果后,点击执行 MQL:

..

2.2. 查不在物理表中的字段

查询:签单日期,客户编号、金额、销售姓名、职务、年龄

意图:查不在 ORDERS 表中的字段,如:销售姓名、职务、年龄在 EMPLOYEE 表中

先导入 EMPLOYEE 表、CUSTOMER 表、CITY 表,和 ORDERS 表一样,定义字段词。

DQL 元数据中,EMPLOYEE 表主键、ORDERS 表普通字段对应维度“EMPLOYEE”,是外键关系:

..

ORDERS 中,用 DQL 的外键属性化写法,增加宏字段和字段词:

销售姓名:ORDERS.EMPLOYEEID.NAME

职务:ORDERS.EMPLOYEEID.TITLE

年龄:ORDERS.EMPLOYEEID.NIANLING

..

类似的,还可以定义宏字段:客户城市、客户省

定义字段词:“客户城市, 收货城市, 城市” 、“客户省, 收货省, 省”

查询:雇员姓名,上级姓名,上级职务

意图:查雇员表指向自身的外键

EMPLOYEE 表的 BOSS 字段,是指向自己的外键,对应 EMPLOYEEID。

DQL 的外键属性化,也可以是表指向自己的外键:

上级姓名:EMPLOYEE.BOSS.NAME。字段词:上级姓名, 姓名

上级职务:EMPLOYEE.BOSS.TITLE。字段词:上级职务, 职务

上级生日:EMPLOYEE.BOSS.BIRTHDATE。字段词:上级生日, 生日

2.3. 查计算字段

查询:销售姓名、运输时间

意图:运输时间需要用其他宏字段发货日期、收货日期计算得到

表的宏字段也可以是计算字段,ORDERS 表增加宏字段“运输时间” ,用宏字段表达式计算得到:

DATEDIFF(ORDERS.SHIPDATE,ORDERS.RECEIVEDATE)

..

注意:宏字段表达式需要用标准 SQL 函数。

2.4. 查表

查询:订单

意图:查询时不想写那么多字段名,直接写表名,想查出所有字段

为 ORDERS 表定义实体(也就是表的别名)“订单”(实体名称),选出所有宏字段。实体可以有多个实体词,用英文逗号分隔:订单, 订单表, 订单信息, 订单数据。

..

查询实体词,可以得到选出的宏字段。

2.5. 查表的部分字段

查询:订单简要信息

意图:查询时只想得到表的部分字段

表可以有多个实体,ORDERS 表增加实体“订单简要信息”,定义实体词“订单简要信息, 简要订单, 订单要点”,选出需要的字段:订单编号、签订日期、金额。

2.6. 查表的部分记录

查询:新订单

意图:只查出表中符合一定条件的记录

实体可以有默认的过滤条件,再定义一个实体“新订单”,定义过滤条件:year(SIGNDATE)=year(now()),实体词是“新订单”,选出需要的宏字段。

..

2.7. 查出中文列名

查询实体的时候不指定字段词,系统默认用宏字段标识。如果查询结果要中文列名,需要把宏字段标识都改成中文:订单编号、客户编号、雇员编号等。

注意:宏字段标识修改后,用到的地方都要改,比如实体的选出字段、实体过滤条件等

建议:导入表后,就把宏字段标识改成中文,后续尽量不变。

2.8. 查询时要忽略的词

查询:订单编号有哪些

意图:查询时“有哪些”这样的词是不需要的

要设置成无效词“有哪些” ,查询时被忽略,相当于查“订单编号”。

..

2.9. 表中有同名字段词

查询:发货 日期 城市 省

意图:“发货日期,发货城市,发货省”的写法有点麻烦,想简化

但是,订单表中,日期、城市、省有多个,会出现歧义,可以定义字段簇“发货”:

..

“发货”只选出宏字段 - 发货城市、发货日期、发货省,在字段簇内,城市、日期、省没有歧义。

字段簇就是这样一组宏字段,表达一个共同的概念。

为字段簇“发货” 定义簇词“发货, 发货信息”:

..

簇词“发货”后面的词:城市、日期、省,只在字段簇中找,没有歧义。

注意:簇词要具有名词性质,让簇词可以作为名词查到。

簇词默认查出字段簇的标记字段“发货日期”,查出的最终结果字段是:发货日期,发货日期,发货城市,发货省:

..

查询:发货 日期 城市 省 收货 日期 城市 省

意图:同名字段词一起查

同样定义字段簇“收货”,包括宏字段:收货日期,客户城市,客户省 。定义簇词“收货, 收货信息”,选上“具有名词性质”。

簇词“收货”后面的词:城市、日期、省,只在字段簇中找,也没有歧义。

..

注意:簇词的用途还有很多,后面会详细介绍。