开源 BI 实践:维度的层次
日期维中的年月季周
日期维可以拓展出一些相关维度(年份、月份、季度、周几,今年第几周等)。如果用常规方式在 DQL 元数据中预定义出这些维度,还是有些繁琐,首先要对每个日期字段先定义多个计算字段,然后把这些计算字段再外键关联到这些新维表上,一个数据库中,很可能要添加几十对计算字段和外键关联。
针对这种情况,DQL 做了改善,允许在维上定义层函数,这样一次就能定义出该维所有的拓展维度。
具体到日期维,首先添加假表,把日期、年、月、季度、周几、第几周等维表定义出来:
在“维和层”标签下,选中日期维,在右侧定义相关维的层函数,层函数表达式中用问号表示原始维值,比如月层维算出的结果形如 202405(2024 年 5 月):
保存元数据,重启 DQL 服务,再看 BI 界面,所有日期字段下都有了这些新的层维:
上面对应的 DQL 是:
SELECT
T1.O_ORDERKEY 订单编号
,T1.O_ORDERDATE 订单日期
,T1.O_ORDERDATE# 季度 季度
,T1.O_ORDERDATE# 年内第几周 年内第几周
FROM orders T1
DQL 语法中,原始维字段后追加【# 层函数】就会计算出来层维的值。
维中的多层复合信息
日期维及其层维最为常用,但也有其它类似日期这种含有复合信息的维,同样可以通过定义层函数计算出其多个层维。
看个例子,地区、省、市三表数据如下:
其中三表主键维分别是地区维、省维、市维。以市维的编码为例,五位数字,第 1 位代表地区;第 2、3 位代表省份;第 4、5 位代表城市,如张家口编码 30301,地区是华北 (3),省份是河北 (303)。用下面两个层函数通过市维算出省维、地区维:
再比如多级代理商编码是字符串类型,形如 C05A03B42,每三位是一级,9 位编码代表三个级别的代理商,那三级代理商可以计算出它所属的一级 (C05)、二级(A03) 代理商,那层函数分别就是 left(?, 3) 、left(?, 6)。
通过 DQL 元数据预定义这些维层计算,给前端用户带来便利,同时也消除重复定义,免去了技术人员制作元数据时的繁琐。
对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅
![](http://img.raqsoft.com.cn/temp/1725755938250289.png)
嗯,还不太了解好多乾?