如何为查询上下文中的所有度量构造SSAS表格模型DAX表达式

时间:2017-07-12 14:51:50

标签: dax ssas-tabular

我有一个包含数百个度量的大型表格模型,其中许多需要时间聚合,例如YTD。我熟悉Russo&法拉利的DAX Patterns related to time functions但我现在面临着为模型中的每一项措施构建一个YTD指标(例如)。我成功地为CYTD,同比,PYTD,MTD等编写了表达式,但仅限于特定于特定测量的表达式。这对我来说是一个复制和粘贴工作,但导致用户必须遍历DisplayFolder结构以容纳所有广泛的CYTD,PYTD和其他计算的时间聚合度量。我无法理解的是如何构建一个与被引用的度量无关的DAX表达式。具体而言,而不是指定单个度量的DAX表达式,例如:

[YTD Sales Units] := CALCULATE([Sales Units], FILTER(...))

我想在我的时间维度中构建一个通用表达式,如下所示:

[YTD] := CALCULATE([measures].CURRENTMEMBER, FILTER(...))

我已经在我的多维模型中使用MDX构建了这些效果,但我无法找到DAX等效物。从TechNet和SQLBI的人们可以清楚地看到,当traversing hierarchies和当前行/列过滤器上下文时,可能存在变通方法,但我对DAX来说太新了以至于无法翻译这是为了衡量。

例如,目标是允许用户过滤年份和月份,选择[销售额],[销售单位]和[毛利率]度量以及单个[YTD]成员。

我已经尝试过创建时间聚合成员表的技术,用户将其视为,例如,切片器和我的表达式中的大量条件测试尝试选择正确的函数,但这最有效用于交互式仪表板而非一般报告。

最后,我甚至尝试设计将日期分组的时间维度属性,例如[YTD(Jul)],[YTD(Aug)]等,这对于具有月度粒度的多维数据集很有效,但不是我的每日或每周立方体都非常多。

是否有最佳实践"或者常用的技术用于与度量无关的时间聚合,还是我真的必须为每个度量创建一个表达式?

1 个答案:

答案 0 :(得分:0)

这可以通过使用1500版SSAS表格模型中引入的resize来完成。