码迷,mamicode.com
首页 > 其他好文 > 详细

SSAS Tabular 数据表关系与join的映射

时间:2016-03-04 18:55:48      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:

才想起来总结这两天发现的一个有趣的现象:

在SSAS Tabular 模型中建立了关系之后,在excel中分析发现:

产品库龄作为量值:Aging Stock:=sum([DISTRIBUTOR_STOCK])以 区域维度Distributors.[Distributor code] +销售渠道维度Products.[PN]/Products.[Channel Mode]+时间维度Times.[YEAR]/Times.[YEAR MONTH]

YEAR 点击筛选,值选择2016年~

以以上维度进行透视表分析时,channelMode出现空值,即vw_FS_DIST_AGING_STOCK产品有库存,却没有销售渠道信息

说明:因为Channel Mode并不是内联关系,是Products的一个维度【列】而已,由使用者自行拉取,在模型关系没有错误的情况下,应该是数据出现的问题!

说明事实表与Products关联的时候,Products.[Channel Mode]出现了null值!

技术分享

技术分享

以下是模型关系:

事实表

库龄表:vw_FS_DIST_AGING_STOCK  度量值DAX函数后:Aging Stock:=sum([DISTRIBUTOR_STOCK])

维度表:

产品表:Products / 日期表:Times / 区域表:Distributors

关系:

技术分享

 

 

编写sql代码查询:

SELECT DISTINCT  SUM(DISTRIBUTOR_STOCK),ITEM_CHANNEL_MODE FROM vw_FS_DIST_AGING_STOCK A 
INNER JOIN CB_PRODUCT B      ---INNER JOIN-- 
ON A.ITEM_CODE=B.Part_Number  
where B.ITEM_CHANNEL_MODE is null
group by ITEM_CHANNEL_MODE

 

 请注意这里是:inner join ,以下是查询结果-->并没有任何记录!

技术分享

感觉很奇怪是吧,如果试一试LEFT JOIN呢?<数据不一致是因为一个是测试库,一个是正式库,请忽略!>

技术分享

这样就很容易说通了,以下是sql查询:

SELECT DISTINCT  SUM(DISTRIBUTOR_STOCK),ITEM_CHANNEL_MODE,DISTRIBUTOR_CODE FROM vw_FS_DIST_AGING_STOCK A 
LEFT JOIN CB_PRODUCT B  --LEFT JOIN---
ON A.ITEM_CODE=B.Part_Number
INNER JOIN CB_DATE C ON A.YYYYMMDD=CONVERT(nvarchar(8),C.[DATE],112)
WHERE DISTRIBUTOR_CODE=DC
-- AND B.ITEM_CHANNEL_MODE =‘‘--AND B.ITEM_CHANNEL_MODE IN (‘CON‘,‘KAB‘,‘SMB‘,NULL) 
AND LEFT(C.CURRENT_YEAR, 4) + / + LEFT(C.MONTH, 3)=2016/Jan
GROUP BY ITEM_CHANNEL_MODE,DISTRIBUTOR_CODE

 

查询结果:

技术分享

换为inner join之后的效果:

技术分享

SELECT distinct a.ITEM_CODE,b.Part_Number,b.ITEM_CHANNEL_MODE,DISTRIBUTOR_STOCK,DISTRIBUTOR_CODE FROM vw_FS_DIST_AGING_STOCK A 
left JOIN CB_PRODUCT B ON A.ITEM_CODE=B.Part_Number
INNER JOIN CB_DATE C ON A.YYYYMMDD=CONVERT(nvarchar(8),C.[DATE],112)
WHERE DISTRIBUTOR_CODE=DC --AND B.ITEM_CHANNEL_MODE =‘‘--AND B.ITEM_CHANNEL_MODE IN (‘CON‘,‘KAB‘,‘SMB‘,NULL) 
AND LEFT(C.CURRENT_YEAR, 4) + / + LEFT(C.MONTH, 3)=2016/Jan

 

 查询结果会发现有很多这样的数据;

技术分享

 

通过以上验证分析,

目前还没有找到资料验证:

SSAS Tabular模型中,关系建立之后对应的是sql查询中的LEFT JOIN,至于微软是如何设计的,设计用意,进一步学习跟进中。。。

 

SSAS Tabular 数据表关系与join的映射

标签:

原文地址:http://www.cnblogs.com/ammy714926/p/5242904.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!