BI 前端实践 9:由 DQL 支持的关联多维分析

实践目标

         定义完元数据,部署到DQL Server后,再进行多维分析(OLAP)时,体会后续界面操作、概念理解上的难易,探究DQL查询语言对多维分析的实际提升效果;同时,进一步探测DQL查询能力的完备性。

融入关联关系的元数据树

         上一节设置了关联关系的元数据orders.lmd中,表名、字段名设置成中文语义:

..

        

        部署到DQL Server中,在WEB多维分析系统里针对它做多维分析,能看到元数据中设置的关联关系已经体现到元数据树上,如订单表的销售ID展开后,关联到员工(销售)表:

..

隐式的关联多维分析

         在这颗元数据树上直接做多维分析,也能实现之前测试的多种关联方式DQL示例的查询。界面操作也基本继承了DQL的语法特点,过程中不像SQL那样明显感觉到表关联。

同维表关联

       同维表所有的字段都合并在一起,感觉是一个表,可以混合着选出两个表中的任意字段:

..

多级关联表

         逐层展开后看到多级关联表,可以随意选用各级字段:

..

自关联表

         订单表的发货城市关联到区域表,之后用父区域可以一直展开,第一次展开父区域是发货省份,再继续展开父区域是发货地区:

..

互关联表

         员工表里的部门字段展开到部门表,部门表中的部门经理字段又展开回到员工表,这个第三层的员工表,代表的是部门经理这种特殊员工:

..

重复关联表

         订单表里的发货城市、收货城市都关联到区域表,能分别展开,自然的也就分别代表收、发货的相关信息:

..

多字段关联表

         订单表里的产品外键比较特殊,它是用两个字段关联到产品表,这里也能顺利展开,使用产品名称等相关字段:

..

关联以外的全面查询能力

         关联(JOIN)SQL里的重要能力,除此之外,更全面的能力还有查询条件(WHERE)、分组(GROUP BY)、分组后过滤(HAVING)、排序(ORDER BY)DQL对这些也能支持。

设置查询条件

        SELECT

                T1.(发货城市.区域名称) 发货城市

                ,T1.(产品.产品名称) 产品名称

        FROM

                订单表 T1

        WHERE

                T1.发货城市.区域名称 in ('辽阳市','邯郸市')

        相应的多维分析操作:

..

..

分组聚合

        SELECT

                T1.count(姓名) 姓名计数

                ON 部门

        FROM

                员工表 T1

                BY T1.部门

 

        相应的多维分析操作:

..

聚合条件

        SELECT

                T1.count(姓名) 姓名计数

                ON 部门

        FROM

                员工表 T1 by 部门

                HAVING T1.count(姓名)>5

        相应的多维分析操作:

..

..

数据排序

        SELECT

                T1.订单ID 订单ID

                ,T1.发货城市.区域名称 发货城市

                ,T1.产品.含批次号产品名

        FROM

                订单表 T1

                ORDER BY 订单ID DESC

 

        相应的多维分析操作:

..

 

         这样测试下来,DQL的查询能力和SQL一样,也是完备的。而DQL对表关联的预定义比较关键,基于它才实现了非按需多次建模(制作CUBE)、自动化的多维分析。