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

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

在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,至于微软是如何设计的,设计用意,进一步学习跟进中。。。

时间: 2024-08-01 10:32:04

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

SQL 快速新增权限数据表(使用cross join)

摘要:SQL 快速新增权限数据表(使用cross join) 1.因为设计系统的时候 将角色 权限 系统都做了分开处理 偏偏交集起来相当多数据 2.决定不自己打 使用cross join 先练习一下一般的语法 --use 数据库 --select a.浏览,a.修改,a.删除,b.系统名称,c.角色名称 --from 角色权限 as a --cross join 系统 as b --cross join 角色 as c --go 像这样 3.开始改写 使用cross join --先清空表单 已

数据表关系

目录 数据表配置 数据表关系: 基表: 表关联联系: 外键字段属性: models.py 序列化检验措施: 数据测试脚本: 多表查询: ModelSerializer多表操作: 数据表配置 数据表关系: 基表: #基表 : 为抽象表,是专门用来被继承,提供公有字段的,自身不会完成数据库迁移 eg: from django.contrib.auth.models import User class BaseModel(models.Model): is_delete = models.Boolea

Teradata 从外部导入的数据表的 INNER JOIN 问题

一.无法INNER JOIN  SELECT T1.Party_ID, T1.R, T1.F, T1.M, T2.lab FROM ( SELECT Party_ID, CAST(ROUND((CAST(MAX_R AS DECIMAL(20,4))-CAST(R AS DECIMAL(20,4)))/ (CAST(MAX_R AS DECIMAL(20,4))-CAST(MIN_R AS DECIMAL(20,4)))*100,1) AS DECIMAL(20,4)) AS R, CAST(R

SSAS Tabular模式中关系设置不支持多对多?

在网上文档发现一篇文章 微软BI 之SSAS 系列 - 多维数据集维度用法之一 引用维度 Referenced Dimension 有涉及到SSAS模型的关系设置 但是本人的基于表格模型的 没有关系可以设置??? 微软官方网站定义: https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2012/gg492102(v=sql.110) 原文地址:https://www.cnblogs.com/Bruce_H21/p/1

反向从数据库导出表之间的关系,对于分析复杂数据表关系特别好

MYSQL千万级数据表,创建表及字段扩展的几条建议

MYSQL千万级数据表,创建表及字段扩展的几条建议 一:概述 当我们设计一个系统时,需要考虑到系统的运行一段时间后,表里数据量大约有多少,如果在初期,就能估算到某几张表数据量非常庞大时(比如聊天消息表),就要把表创建好,这篇文章从创建表,增加数据,以及字段扩展,这几个方面来给出建议. 二:创建表 假如现在我们需要创建IM项目中的聊天消息表,这个表数据量大,读操作远超过写操作,我们都知道,mysql常用的数据库引擎主要有innodb,myisam,这两个数据库引擎主要区别是,innodb支持事务,

数据表-java类的映射

1.一个数据表对应一个java类 2.数据表的字段对应java类的属性 3.一对多的数据表关系 一方用一个java对象表示 多方用一个java对象数组表示 4.多对多的数据表关系:采用中间表,将多对多转为多对一进行处理 eg:Student类

Phoenix映射HBase数据表

1. 说明 安装好phoenix后对于HBase中已经存在的数据表不会自动进行映射,所以想要再phoenix中操作HBase已有数据表就需要手动进行配置. 2. 创建HBase表 > create 'phoenix','info' 3. 插入数据 > put 'phoenix', 'row001','info:name','phoenix' > put 'phoenix', 'row002','info:name','hbase' 高能预警:HBase数据表默认主键列名是ROW 4. 创

Django 批量插入数据、自定义分页器、多表关系的建立及Form组件(待更新。。。)

目  录 django批量出入数据 自定义分页器 创建多对多表关系的建立 form组件 form组件钩子函数 一.django批量出入数据 视图函数: from app01 import models # 向表中插入1000条数据 def index(request): # 方式1: # for i in range(1000): # models.Book.objects.create(title='第%s本书'%i) # book_Queryset = models.Book.objects