如何为查询上下文中的所有措施构建SSAS表格模型DAX表达式。

问题描述 投票:1回答:1

我有一个大型的表格模型,有几百个措施,其中许多措施需要时间汇总,如YTD。 我对Russo & Ferrari的 与时间函数相关的DAX模式 然而,我现在面临着为模型中需要的每个度量指标构建一个YTD度量指标(例如)。 我已经成功地为CYTD、同比、PYTD、MTD等编写了表达式,但只有当它们是特定的度量时才会这样做。 这对我来说是一个复制和粘贴的工作,但结果是用户不得不遍历DisplayFolder结构,以存放所有广泛的CYTD、PYTD和其他计算的时间聚合措施。我无法理解的是如何建立一个与被引用的度量无关的DAX表达式。具体来说,与其使用一个指定单一度量的DAX表达式,如:。

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

我想建立一个通用表达式,比如说,我的时间维度,看起来像:

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

我已经在MDX的多维模型中建立了这些表达式,效果很好,但我找不到等价的DAX表达式。 似乎很清楚,从 技术网 和SQLBI的人说,在以下情况下,有一些可能的变通办法。遍历结构 和当前的行列过滤上下文,但我对DAX太陌生了,无法将其转化为措施。

例如,我们的目标是允许用户在某年某月进行过滤,选择[销售金额]、[销售单位]和[毛利率]等计量指标和单一的[YTD]成员表。

我尝试过创建一个时间聚合成员表的技术,用户将其视为,比如说,一个切片机,并在我的表达式中进行大量的条件测试,试图挑选出正确的函数,然而这对交互式仪表盘效果最好,而不是一般的报告。

最后,我甚至尝试过设计分组日期的时间维度属性,如[YTD(7月)]、[YTD(8月)]等,这对于月度粒度的立方体来说效果很好,但对于我的日或周立方体来说就不那么好了。

有没有一个 "最佳实践 "或常用的技术来实现与措施无关的时间聚合,或者我真的必须为每个措施创建一个表达式?

dax ssas-tabular
1个回答
0
投票

这可以通过使用 计算组 在SSAS表格模型1500版本中引入。

© www.soinside.com 2019 - 2024. All rights reserved.