1

我是一个新的 DAX 用户,我显然误解了语言如何处理计算度量的关系传播,我希望有人能帮助我解决我认为的简单概念。简单的例子:

3 个表:
1)Concert_Event
2)Concert_Event_Details
3)City_Budget(出于示例目的,完全不相关)

Concert Event 与 Concert_Event_Details 具有(1:M)关系,并且 City_Budget 与表 1,2 之间没有关系。

表 1,2 链接到Event_ID。现在假设我想对 Concert_Event_Details 中的“TicketSales”字段求和,但不包括 eventID 2。我简单的 DAX 头脑会写一个类似的公式:

- TotTicketSales:= CALCULATE( SUM(TicketSales), FILTER(Concert_Event_Details, Concert_Event_Details[EventID] <> 2) )

好的,接下来需要注意的是,假设我要编写大约 50 个措施,所有措施都始终排除 eventID 2,所以我认为我可以通过在加载 Concert_Event 时简单地过滤掉 eventID 2 来节省时间。现在问题来了。我希望如果我在 Concert_Event_Details 中编写计算的度量,我会希望在 DAX 中添加一条 FILTER 行来表示

过滤器(Concert_Event_Details,Concert_Event_Details[Event_ID] = RELATED(Concert_Event[Event_ID)

确保我的总结中不包括 event_id 2。我认为这是因为我在 (1:M) 关系的许多方面写这个。从我的测试来看,这是正确的,我确实需要特定的过滤线链接回关系的“1”端。

最后,这是我不了解 DAX 引擎行为的地方。我认为如果我在“1”端(Concert_Event)写这个度量,Event_ID 上的关系应该传播到多端,我不应该需要额外的过滤器代码来专门链接 EventID。通过我的测试,我做到了,但我不明白为什么。此外,如果我在完全不相关的表 (City_Budget) 中编写相同的代码,我可以得到相同的 ANSWER。表 3 和 (1,2) 之间没有关系。发生了什么事,我怎么完全错过了模型和传播中的关系?

提前感谢您的回复,不知道为什么这让我如此沮丧。我不想继续使用不需要的链接代码来显式调用我认为已经在我编写的每个计算度量中起作用的关系。

干杯!

4

2 回答 2

1

计算度量的位置对其提供的答案没有影响。您可以在任何您想要的表格上进行计算;将计算放在包含您纯粹用于组织目的的字段的同一张表上。

编辑:看来你在 Technet 上问了同样的问题,也在那里得到了答案

于 2013-09-10T21:43:50.987 回答
0

度量值所在的表不会更改 DAX 的评估方式,但会更改与钻取相关的数据透视表行为。

最佳实践是将度量放在与度量输出最直接相关的表中,以确保数据透视表用户在钻取度量时获得预期的结果。

于 2015-12-31T15:15:06.707 回答