通用维关联字段与维id字段不同,导致数据错误请问原因?

7373
1

忘记你 初学数据Lv2

发表于2018-4-20 09:58

悬赏1

已解决

楼主
本帖最后由 忘记你 于 2018-5-25 09:40 编辑

有一张通用维表,因为id字段code1存在相同值,因此增加一新字段code6设置为维id字段,维关联字段为code1。维表结构类似于截图。

在分析表中需要过滤掉一些维代码,设置浮动维过滤条件,生成的sql中主题表与维表关联没问题,但是过滤条件使用了维id字段,不是关联字段,导致数据错误,是设置问题吗?


最近看过此主题的会员

zhaolj

ajsdhkjfhdasf

杨国签

13120183963

最佳答案
本帖最后由 CC化腐朽为神奇 于 2018-5-25 09:37 编辑

按bi的处理逻辑,你的维表设置的没有问题,bi生成的sql也没有问题
维表的关联字段只用在表间关联关系中,过滤、显示等都是用的维表的id字段,原因如下:


对于层级维,维表的id字段是构成树形的字段,其代码需要有规律,如果没有,则需要新增个有规则的字段作为id字段,举例:
现在有这样的数据
xh_ name_
a0000 农业
a0001 玉米
a0002 小麦
b0000 工业
b0001 洗衣机
b0002 冰箱
c9999 土豆

我们希望建成这样的维级次
农业
   玉米
   小麦
   土豆
工业
   洗衣机
   冰箱

要做成层级维,用xh_字段作为id字段是不行的,需要额外增加个字段如xh_new 重新编码构成正确的级次
xh_ name_ xh_new
a0000 农业 a0000
b0001 玉米 a0001
a0002 小麦 a0002
c9999 土豆 a0003
c0000 工业 c0000
d0001 洗衣机 c0001
e0002 冰箱 c0002
这样,这张维表的id字段就是xh_new,由于主题表中的值是xh_的值,故这张维表的关联字段是 xh_

现在我们来回答"为什么维表的关联字段只用在表间的关联关系中,而不用在过滤条件中"
假设我们想查看农业的数据,bi中过滤条件这样写 dim(主题表.zb1)=a0000 就行了, 生成的sql为:主题表和维表用xh_字段关联后,where 维表.xh_new like 'a%'
而如果我们过滤条件用的是维表的id字段,即xh_,过滤条件怎么写,怎么翻译列,要知道xh_字段的代码无任何规律

另外,假设报表参数 @lx 是个维下拉类型的参数,对应的维就是上面这个维,计算时选择了玉米,这时,@lx的值为a0001 而不是 b0001,即报表参数也是返回的维id值,而不是关联字段的值 ,所以生成sql时也要用维表的id字段过滤。

so, 遇到你贴中的情况,做表时就要注意了:过滤条件tywtable.id<>xxxxxx,xxxxxx不要用关联字段值,要用id字段值。

1个回答

只看楼主

CC化腐朽为神奇 数据达人Lv4

发表于2018-4-20 09:58

只看该作者

取消 关注该作者的回复

沙发

本帖最后由 CC化腐朽为神奇 于 2018-5-25 09:37 编辑

按bi的处理逻辑,你的维表设置的没有问题,bi生成的sql也没有问题
维表的关联字段只用在表间关联关系中,过滤、显示等都是用的维表的id字段,原因如下:


对于层级维,维表的id字段是构成树形的字段,其代码需要有规律,如果没有,则需要新增个有规则的字段作为id字段,举例:
现在有这样的数据
xh_ name_
a0000 农业
a0001 玉米
a0002 小麦
b0000 工业
b0001 洗衣机
b0002 冰箱
c9999 土豆

我们希望建成这样的维级次
农业
   玉米
   小麦
   土豆
工业
   洗衣机
   冰箱

要做成层级维,用xh_字段作为id字段是不行的,需要额外增加个字段如xh_new 重新编码构成正确的级次
xh_ name_ xh_new
a0000 农业 a0000
b0001 玉米 a0001
a0002 小麦 a0002
c9999 土豆 a0003
c0000 工业 c0000
d0001 洗衣机 c0001
e0002 冰箱 c0002
这样,这张维表的id字段就是xh_new,由于主题表中的值是xh_的值,故这张维表的关联字段是 xh_

现在我们来回答"为什么维表的关联字段只用在表间的关联关系中,而不用在过滤条件中"
假设我们想查看农业的数据,bi中过滤条件这样写 dim(主题表.zb1)=a0000 就行了, 生成的sql为:主题表和维表用xh_字段关联后,where 维表.xh_new like 'a%'
而如果我们过滤条件用的是维表的id字段,即xh_,过滤条件怎么写,怎么翻译列,要知道xh_字段的代码无任何规律

另外,假设报表参数 @lx 是个维下拉类型的参数,对应的维就是上面这个维,计算时选择了玉米,这时,@lx的值为a0001 而不是 b0001,即报表参数也是返回的维id值,而不是关联字段的值 ,所以生成sql时也要用维表的id字段过滤。

so, 遇到你贴中的情况,做表时就要注意了:过滤条件tywtable.id<>xxxxxx,xxxxxx不要用关联字段值,要用id字段值。

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号