避免在PowerPivot中使用DISTINCTCOUNT

时间:2016-03-09 18:12:03

标签: excel powerpivot dax powerquery

由于性能问题,我需要在DAX上删除一些不同的计数。但是,我有一个特定的场景,我无法弄清楚如何做到这一点。

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

enter image description here

我想要一张PowerPivot表,显示每家餐厅有多少个节日(见下表)。我通过使用distinctcount实现了这一点。

enter image description here

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

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

1 个答案:

答案 0 :(得分:0)

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

具体来说,COUNTROWS()将为您提供表中的行数。这意味着COUNTROWS期望输入一个表。这是神奇的部分:VALUES()将返回一个表作为结果,它返回的表是表/列中的 distinct 值,它们作为VALUES()的参数提供。

我不确定我是否正在解释它,因此对于您提供的示例数据,该度量将如下所示(假设该表名为Table1):

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

然后,您可以从Powerpivot创建数据透视表,并将“餐厅ID”拖动到“行”中,然后将上面的度量拖动到“值”中。与DISTINCTCOUNT相同,但性能开销较小(我认为)。