亿信ABI
当前版本:5.6.1

dim函数

1. 概述

dim是维的简称,在报表中是用来操作维的函数,可以用在过滤条件和指标表达式中,表示维在数据库中的字段。

2. dim函数用法

dim表达式可以表示维表上的任何一个字段,有一个或者两个参数

格式:

dim(P1,P2)

    参数:

第一个参数P1:这里是指定操作的维表。可以是主题表的维度字段,这时取的是这个维度字段关联的维表;也可以是维表名。

例如:FACT_GRZB.USERID_.'人员维'。

第二个参数p2:表示取维的哪个字段。可以是维表的字段名;可以是维表的属性名,这时就是表示取该属性对应的字段;也可以是维的级次;也可以没有P2这个参数。

例如:'DM_UPCODE0','部门',0,1...。

 

 

当第二个参数P2为0,1,2...这种维的级次时,取的是哪个字段?

如果是通用维,则是取的是该级次对应的字段。

以“人员维”为例,级次0代表的是”公司”属性,对用字段为”UPCODE0”,级次1代表的是”中心”属性,对用字段为”UPCODE1”,级次2代表的是”部门”属性,对用字段为”UPCODE2”,如下图。

假设FACT_GRZB.USERID_关联的是人员维,则:

dim(FACT_GRZB.USERID_,1)等价于dim(FACT_GRZB.USERID_,'DM_UPCODE1')等价于dim(FACT_GRZB.USERID_,'中心'),都表示取DM_UPCODE1字段。

 

如果是代码层级维,则取的是该级次对应的代码前缀。

比如,行业代码维的级次为1-2-2,dim(xxb.hydm,0)表示取代码字段的前面第1位。

 

当没有第二个参数P2时,取的是维表的哪个字段?

当dim没有第二个参数P2时,这时dim一般用在过滤条件中,取哪个字段取决于=后面的值。等号后面是哪个级次的维项值,则取该级次对应的字段(通用维)或者是该级次对应的代码前缀(代码层级维)。比如

dim(FACT_GRZB.USERID_)='100',相当于DM_UPCODE1='100'

dim(xxb.hydm)='A0000',相当于xxb.hydm like 'A%'

 

dim函数还可以用于报表参数多选过滤

比如有个枚举下拉框参数@a,可以多选。这个参数作用于报表过滤时的过滤条件表达式写法为dim(zt.zb1)=@a。当@a选择了多个值时,相当于 zt.zb1=值1 or zt.zb1=值2 or ......。

 

3. 示例

下面示例用到的“人员维”结构和数据如下:

用的主题表fact_grzb结构如下:

3.1用在过滤条件中

上图分析表中有个“人员”参数,使用的是人员维,希望实现选择“售后服务部”则计算出该部门所有人员数据,选择“业务中心”则计算出该中心下所有人员数据,依次类推。对于这种级次维的过滤,这时就可以使用dim函数。并且当我们不确定取哪一级次,由选择的报表参数值决定时,dim函数中就可以不指定第二个参数。

这时过滤条件表达式可以写成:dim(fact_grzb.USERID_)=@ry 。

计算效果如下:

生成sql语句如下:

当不使用dim函数,过滤条件表达式为fact_grzb.USERID_=@ry时,计算结果如下:

可以看出,当不使用dim函数时,生成的过滤条件中USERID_直接等于了所选参数值,而USERID_字段中只有人员数据,没有像“售后服务部”这样的中间节点数据,所以查询不出数据。

所以,要获取参数所选节点的所有下级节点的数据时,需使用dim函数。

3.2用在表达式中

上图分析表中“中心”列,希望能够根据人员获取其所在中心,该信息可以从维表中获取。对于这种已经关联维表的字段,我们可以使用dim函数的第二个参数来获取维表中的信息,dim函数的第二个参数可以是维表的字段名,可以是维表的属性名,也可以是维的级次。

以维表的字段名为例获取人员所在中心名称。


由于中心名称对应的字段是DM_UPNAME1,那么表元表达式就可以写成:

DIM(FACT_GRZB.USERID_,'DM_UPNAME1')

计算结果如下:

附件列表

0

文档内容仅供参考
如果您需要解决具体问题,还可以登录亿信社区
在提问求助板块提问,30分钟内帮您解决问题

如果您认为本词条还有待完善,请编辑

上一篇同环比函数

下一篇diminf函数

请先登录