DAX计算了测量位置

时间:2013-09-05 15:02:57

标签: tabular dax ssas-2012

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

3表:
1)Concert_Event
2)Concert_Event_Details
3)City_Budget(为了示例目的而完全不相关)

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

Event_ID 上的表1,2链接。现在让我们说我想在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行来表示

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上的关系应该传播到Many侧,我不应该需要额外的FILTER代码来专门链接EventID。通过我的测试,我做了,我不明白为什么。此外,如果我在完全不相关的表(City_Budget)中编写相同的代码,我可以得到相同的答案。表3和(1,2)之间没有关系。发生了什么以及我如何完全错过模型和传播中的关系?

先谢谢你的回复,不知道为什么这会让我如此吵闹。我不想继续使用不需要的链接代码来明确地调用我认为已经在我编写的每个计算量度中工作的关系。

Cheeers!

2 个答案:

答案 0 :(得分:1)

计算出的度量的位置对其提供的答案没有影响。你可以把计算放在你想要的任何桌子上;将calc放在包含您使用它的字段的同一个表上,纯粹是出于组织目的。

编辑:似乎您在Technet和got an answer there上也提出了相同的问题。

答案 1 :(得分:0)

包含度量的表不会改变DAX的评估方式,但它确实会改变与钻取相关的数据透视表行为。

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