-
-
wanqian1 初学数据Lv2
发表于2020-8-12 10:28
悬赏10
已解决
楼主
钻取为什么获取的是代码维表的代码,,,



最佳答案
本帖最后由 xxxl 于 2020-8-12 10:46 编辑
您这里的@zz是维下拉的参数名称吗正常@zz.txt能够显示出来,再者用dim或者diminf函数试试函数定义如下
1 DIM
您这里的@zz是维下拉的参数名称吗正常@zz.txt能够显示出来,再者用dim或者diminf函数试试函数定义如下
1 DIM
定义:
通常用于维,指标,条件中,表示维在数据库中的字段;这里的维包括通用维,多级维,单级维,但必须都要有对应的数据库表;对于COD文件型维,支持取级次,不支持取属性值;
参数:
1.dim(p1,p2)
参数p1: 表示维表元,可以是表元名,表达式,也可以是维名称;
比如:xxb.hy_dm, "行业代码",id()
参数p2: 表示维的级次,或者是维的属性,还可以是维表的字段名;
比如:0,1,2..., "行业门类","行业大类","hy_ml"
这里 0 表示最大级次;
例:dim(xxb.hy_dm,0)
= dim(xxb.hy_dm,"行业门类")
= dim(xxb.hy_dm,"hy_ml")
= dim("行业代码",0)
= dim("行业代码","行业门类")
= dim("行业代码","hy_ml")
dim(id(),"nsrmc")
注:
第二个参数如果是数字,则第一个参数对应的维可以是文件型维;
例: 如果xxb.hy_dm是文件型维:
dim(xxb.hy_dm,0) ,取的是第0级的前缀;
dim(xxb.hy_dm,"行业门类") 则不支持;
2.dim(p1,p2,p3)
参数p1,p2同上;
参数p3: 是时间参数,用于缓慢增长维,表示截至到维表p1指定参数p3的p2的值;
例:
dim(id(),"nsrmc", "200501--")就是取id()对应维表截止到200501月份的nsrmc字段的值;
注:
如果第一个参数是个常量,比如要取行业代码"A0100"对应的名称,则需要用到 diminf 函数了;
2 DIMINF定义:
获得某维的值的信息。DIMINF(C1 C2),或DIMINF(C1 C2 I),或DIMINF(C1 C2 C3)。
参数:
C1:第一个参数,表示维的名字,如 HY_DM, 表示“行业代码”等;特殊情况是:“dw” 表示单位级次代码;
C2:第二个参数,表示代码,如 A0000;
C3,I:第三个参数可以是字符或者整型数,也可以没有第三个参数。如果没有第三个参数,那么直接返回代码对应的文字信息;如果有第三个参数且是整型,则返回第I个代码对应的属性;
如果有第三个参数且是字符串,则当字符串是:$PREFIX:则返回此代码所在级次的前缀字符串;如级次为1-2-2的行业代码中,A0000的前缀字符串为A。
如果有第三个参数且是字符串,则当字符串是:$PREFIX:则返回此代码所在级次的前缀字符串;如级次为1-2-2的行业代码中,A0000的前缀字符串为A。
$ISLEAF:是否是叶子节点,此时函数的返回值为T或F,也为字符型。
$LEVEL:返回第二个参数表示的代码在维中的级次,此时函数的返回值也为字符型其他情况返回相应属性对应的文字信息
示例:
返回维的值的信息
DIMINF('HY_DM',A0000),返回‘农、林、牧、渔业’
在维'HY_DM'中,A0000对应的文字信息为‘农、林、牧、渔业’,故返回‘农、林、牧、渔业’
级次为1-2-2的行业代码维hy_dm,diminf('hy_dm','A0000','$PREFIX')='A'
6个回答
本帖最后由 xxxl 于 2020-8-12 10:46 编辑
您这里的@zz是维下拉的参数名称吗正常@zz.txt能够显示出来,再者用dim或者diminf函数试试函数定义如下
1 DIM
定义:
通常用于维,指标,条件中,表示维在数据库中的字段;这里的维包括通用维,多级维,单级维,但必须都要有对应的数据库表;对于COD文件型维,支持取级次,不支持取属性值;
参数:
1.dim(p1,p2)
参数p1: 表示维表元,可以是表元名,表达式,也可以是维名称;
比如:xxb.hy_dm, "行业代码",id()
参数p2: 表示维的级次,或者是维的属性,还可以是维表的字段名;
比如:0,1,2..., "行业门类","行业大类","hy_ml"
这里 0 表示最大级次;
例:dim(xxb.hy_dm,0)
= dim(xxb.hy_dm,"行业门类")
= dim(xxb.hy_dm,"hy_ml")
= dim("行业代码",0)
= dim("行业代码","行业门类")
= dim("行业代码","hy_ml")
dim(id(),"nsrmc")
注:
第二个参数如果是数字,则第一个参数对应的维可以是文件型维;
例: 如果xxb.hy_dm是文件型维:
dim(xxb.hy_dm,0) ,取的是第0级的前缀;
dim(xxb.hy_dm,"行业门类") 则不支持;
2.dim(p1,p2,p3)
参数p1,p2同上;
参数p3: 是时间参数,用于缓慢增长维,表示截至到维表p1指定参数p3的p2的值;
例:
dim(id(),"nsrmc", "200501--")就是取id()对应维表截止到200501月份的nsrmc字段的值;
注:
如果第一个参数是个常量,比如要取行业代码"A0100"对应的名称,则需要用到 diminf 函数了;
2 DIMINF定义:
获得某维的值的信息。DIMINF(C1 C2),或DIMINF(C1 C2 I),或DIMINF(C1 C2 C3)。
参数:
C1:第一个参数,表示维的名字,如 HY_DM, 表示“行业代码”等;特殊情况是:“dw” 表示单位级次代码;
C2:第二个参数,表示代码,如 A0000;
C3,I:第三个参数可以是字符或者整型数,也可以没有第三个参数。如果没有第三个参数,那么直接返回代码对应的文字信息;如果有第三个参数且是整型,则返回第I个代码对应的属性;
如果有第三个参数且是字符串,则当字符串是:$PREFIX:则返回此代码所在级次的前缀字符串;如级次为1-2-2的行业代码中,A0000的前缀字符串为A。
如果有第三个参数且是字符串,则当字符串是:$PREFIX:则返回此代码所在级次的前缀字符串;如级次为1-2-2的行业代码中,A0000的前缀字符串为A。
$ISLEAF:是否是叶子节点,此时函数的返回值为T或F,也为字符型。
$LEVEL:返回第二个参数表示的代码在维中的级次,此时函数的返回值也为字符型其他情况返回相应属性对应的文字信息
示例:
返回维的值的信息
DIMINF('HY_DM',A0000),返回‘农、林、牧、渔业’
在维'HY_DM'中,A0000对应的文字信息为‘农、林、牧、渔业’,故返回‘农、林、牧、渔业’
级次为1-2-2的行业代码维hy_dm,diminf('hy_dm','A0000','$PREFIX')='A'
xxxl 发表于 2020-8-12 10:41
您这里的@zz是维下拉的参数名称吗正常@zz.txt能够显示出来,再者用dim或者diminf函数试试函数定义如下
1 ...
能够显示,主表中过滤条件中用了,能够使用,但是在子表用@zz.txt就只能显示这个维表的代码,,,,



wanqian1 发表于 2020-8-12 10:54
能够显示,主表中过滤条件中用了,能够使用,但是在子表用@zz.txt就只能显示这个维表的代码,,,,
...
您钻取的时候主表的@zz传到子表,用dim函数试试能不能取到
xxxl 发表于 2020-8-12 11:05
您钻取的时候主表的@zz传到子表,用dim函数试试能不能取到
这个维表在主题表中没有字段对应,只是需要获得维下拉的文字信息,然后在主题表中进行模糊查询,因为主题表的字段数据限制,只能做模糊查询,不能对应这个维表,,