避免在 PowerPivot 中使用 DISTINCTCOUNT

Avoid DISTINCTCOUNT in PowerPivot

由于性能问题,我需要删除 DAX 上的一些不同计数。但是,我有一个特定的场景,我不知道该怎么做。

例如,假设可以在一场或多场宴会上雇用一家或多间餐厅并准备一份或多份菜单(见下面的数据)。

我想要一个 PowerPivot table 来显示每家餐厅参加了多少场盛宴(请参阅下面的 table)。我通过使用 distinctcount 实现了这一点。

为什么不在 Power Query 上预先计算这个?我拥有的真实数据有点复杂(更多 ID 列),为了能够转换数据,我必须计算数千种可能的组合。

我尝试在我的模型中添加一个 Feast 维度 table(在这个例子中,这只会是 1 列 2 行)。我希望利用这种关系能够进行直接计数,但我一直无法想出正确的 DAX 来做到这一点。

您可以将 COUNTROWS() 与 VALUES() 结合使用。

具体来说,COUNTROWS() 将为您提供 table 中的行数。这意味着 COUNTROWS 期望输入 table。这是神奇的部分:VALUES() 将 return 一个 table 作为结果,而 table 它 return 是 distinct table/column 中作为 VALUES().

参数提供的值

我不确定我是否解释得很好,因此对于您提供的示例数据,度量将如下所示(假设 table 被命名为 Table1):

Unique Feasts:=COUNTROWS(VALUES('Table1'[Feast Id]))

然后您可以从 Powerpivot 创建一个数据透视表 table,并将 Restaurant Id 拖到 Rows 中,然后将上面的度量拖到 Values 中。结果与 DISTINCTCOUNT 相同,但性能开销较小(我认为)。