-
忘记你 初学数据Lv2
发表于2018-4-20 09:58
悬赏1
已解决
楼主
本帖最后由 忘记你 于 2018-5-25 09:40 编辑
有一张通用维表,因为id字段code1存在相同值,因此增加一新字段code6设置为维id字段,维关联字段为code1。维表结构类似于截图。
在分析表中需要过滤掉一些维代码,设置浮动维过滤条件,生成的sql中主题表与维表关联没问题,但是过滤条件使用了维id字段,不是关联字段,导致数据错误,是设置问题吗?
在分析表中需要过滤掉一些维代码,设置浮动维过滤条件,生成的sql中主题表与维表关联没问题,但是过滤条件使用了维id字段,不是关联字段,导致数据错误,是设置问题吗?
最佳答案
本帖最后由 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化腐朽为神奇 于 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字段值。 |