范围中的Lookupvalue

时间:2019-01-28 00:42:08

标签: powerbi dax

我是Power BI的新手。我正在阅读一篇计算移动平均线的文章。我想知道LOOKUPVALUE函数中发生了什么。

任何人都可以告诉我们EARLIER ( Prices[DayNumber] ) – 8。到底是什么?它减去值EARLIER ( Prices[DayNumber] ) - 8或显示从Prices[DayNumber]8的范围。而EARLIER ( Prices[DayNumber] ) = 2会怎样?它返回了什么?

Prices[MovingAverage200] =
CALCULATE (
    AVERAGE ( Prices[Close] ),
    FILTER (
        ALL ( Prices[Date] ),
        AND (
            Prices[Date]
                >= LOOKUPVALUE (
                    Prices[Date],
                    Prices[Stock], EARLIER ( Prices[Stock] ),
                    Prices[DayNumber], EARLIER ( Prices[DayNumber] ) – 8
                ),
            Prices[Date] <= EARLIER ( Prices[Date] )
        )
    ),
    ALLEXCEPT ( Prices, Prices[Stock] )
)

1 个答案:

答案 0 :(得分:1)

LOOKUPVALUE通过表Prices[Date]逐行搜索Prices列中的值,其中该行中的Stock值与当前行,即EARLIER( Prices[Stock] ),并且该行中的DayNumber与当前行中的值减去8天即EARLIER( Prices[DayNumber]) - 8相匹配。

请注意,EARLIER函数与时间无关。它指的是较早的 行上下文 。由于您位于迭代器函数FILTER中,也位于LOOKUPVALUE内部,因此您需要EARLIER函数来指定您是在外部函数的上下文中谈论该列,而不是在内部的。


此度量总体上是对CloseDate - 8 days(包括两端)之间的所有日期以及与当前Date匹配的所有行的Stock值取平均值。