润乾 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. 表中有同名字段词
查询:发货 日期 城市 省
意图:“发货日期,发货城市,发货省”的写法有点麻烦,想简化
但是,订单表中,日期、城市、省有多个,会出现歧义,可以定义字段簇“发货”:

“发货”只选出宏字段 - 发货城市、发货日期、发货省,在字段簇内,城市、日期、省没有歧义。
字段簇就是这样一组宏字段,表达一个共同的概念。
为字段簇“发货” 定义簇词“发货, 发货信息”:

簇词“发货”后面的词:城市、日期、省,只在字段簇中找,没有歧义。
注意:簇词要具有名词性质,让簇词可以作为名词查到。
簇词默认查出字段簇的标记字段“发货日期”,查出的最终结果字段是:发货日期,发货日期,发货城市,发货省:

查询:发货 日期 城市 省 收货 日期 城市 省
意图:同名字段词一起查
同样定义字段簇“收货”,包括宏字段:收货日期,客户城市,客户省 。定义簇词“收货, 收货信息”,选上“具有名词性质”。
簇词“收货”后面的词:城市、日期、省,只在字段簇中找,也没有歧义。

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