如何在度量(DAX)中的计算列中引用单个值

时间:2016-06-21 03:50:19

标签: calculated-columns powerpivot dax measure

我有一个表(Data_all),它在一个表中计算daycount_ytd。

[Date] is in Date Format. 
[Fiscal Year] is just year. eg: 2016

Calculated Column
daycount_ytd=DATEDIFF("01/01/"&[Fiscal Year],Data_all[Date],day)+1

我正在尝试创建一个引用此计算列的度量

Measure:
Amt_X Yield %:=[Amt X]/([Amt Y]/365* (Data_all[DayCount_YTD]))

我收到Data_all [DayCount_YTD]引用值列表的错误。 如何在不使用聚合函数的情况下过滤表达式以获得单个值,例如:(sum,median)?

或者,是否有其他方法可以实现相同的计算?

1 个答案:

答案 0 :(得分:0)

你已经在DAX中找到了一个基本概念,一旦你找到了处理它的方法,那么解决方案就可以推广到各种场景。

基本上你不能只是将列传递给DAX度量而不将它们包含在其他东西中 - 通常是某种数学运算,或者你可以使用VALUES(),具体取决于你想要做什么。

如果您在日期作为行标签的PIVOT中使用它,此测量将正常工作:

=
  SUM ( data_all[Amt X] )
   / (
      SUM ( data_all[Amt Y] ) / 365
      * MAX ( data_all[daycount_ytd] )
      )

然而,你会看到它给你一个不正确的总数,因为它是最新的整个事情。您需要的是一个迭代行的版本,然后执行计算以SUM或AVERAGE每个项目。有一整套专用于此的DAX函数,如SUMX,AVERAGEX等。您可以阅读更多关于它们here

的信息。

我不完全清楚你的“总数”背后的数学应该是什么,但是下面的衡量标准计算每一天的价值并将它们加在一起:

=
  SUMX(
      VALUES(data_all[date]), 
         SUM(data_all[Amt X]) / 
         (SUM(data_all[Amt Y]) / 365 * MAX(data_all[daycount_ytd]))
       )