ssas表格比较当前版本与以前版本的数据

时间:2018-03-14 16:40:46

标签: ssas dax powerpivot ssas-tabular

我搜索过并发现很多结果,描述了如何在SSAS表格中比较当前和之前的时间段,但我需要的是另一种性质的比较,即版本(即与时间无关)

假设我的表格模型中有两个相关实体:版本和详细信息(1:n)
详细信息中的每个条目都与一个版本相关,包含Detail_ID,一些描述性属性和度量。我想为用户提供以下内容,例如:在Excel Pivot中。

过滤器:
当前版本 - >用户从版本中选择任何值 旧版本 - >用户从版本

中选择任何值

行:
详细信息

中的任何描述性属性

柱:
当前(计量)金额
上一个(计量)金额
差额金额

对于度量,应该有一个当前(度量)金额和一个上一个(度量)金额,以及一个计算特定Detail_ID的当前和上一个金额之间差异的度量。 如果Detail_ID存在于当前版本但不存在于先前版本中,则差异应等于当前版本中的金额(N = 0 = N)

可以使用DAX完成吗?或者我是否需要通过提供其他实体来重新构建以处理当前和以前的数据集?

1 个答案:

答案 0 :(得分:0)

我在powerpivot中使用断开连接的切片器做了类似的事情,例如切片器所基于的表与事实表没有任何关系。

用户可以从切片器中选择他们的开始和结束日期,并查看版本之间的变化。我在下面展示的示例来自我为工作所做的事情,我们用它来跟踪促销变化。

计算的想法如下:

首先检查是否在切片器中选择了一个值,如果没有,则在本例中为默认情况为空结果。

如果切片器只有一个值,我们使用一个calculate语句来过滤从切片器中提取的值。在这种情况下,我的快照日期是,但它可能是版本号或许多其他东西。

Snapshot_Start_Fixed:=IF( HASONEVALUE( 'Start_Date'[Start_Date] ),
    CALCULATE(
        SUM('History'[Fixed Spend $]),
        'History'[Snapshot_Date] = VALUES( Start_Date[Start_Date])
    ),
    BLANK()
)