【问题标题】:EARLIER Function not working in DAX - ATR of StocksEARLIER 函数在 DAX 中不起作用 - 股票的 ATR
【发布时间】:2021-12-27 16:25:42
【问题描述】:

我正在 PowerBI 中制作 ATR34 列,其中有一个表格,其中包含股票、日期、最高价、最低价、收盘价、PrevClose 和系列(包含股票、期货)。 我从 High Low Close 和 Prev Close 中计算了 ATR 列。我需要计算按 Stocks and Equity 过滤的 34 天 ATR 的 MA。

为此,我首先计算 Daynumber 过滤 Stocks 和 EQ;然后是 34 天并取平均值。 但是,当我在 DAX EARLIER 函数中使用下面提到的代码时,我无法计算它。

我是 POWERBI 的初学者。

DayNumber =
COUNTROWS (
    FILTER ('Table','Table'[Date] <= EARLIER ( 'Table'[Date] )),
    FILTER('Table'[Stock] = EARLIER ( 'Table'[Stock] )),
    FILTER('Table'[EQ] = EARLIER ( 'Table'[EQ] ))
)

Another Caulcated Measured Column : 

FirstDateOfRange34 =
CALCULATE (
    VALUES ( 'Table'[Date] ),
    FILTER ( 'Table','Table'[DayNumber] = EARLIER ( 'Table'[DayNumber] ) - 34),
    FILTER('Table'[Stock] = EARLIER ( 'Table'[Stock] )),
    FILTER('Table'[EQ] = EARLIER ( 'Table'[EQ] ))
)

Another Calculated Measured Column : 
ATR34 =
CALCULATE (
    AVERAGE ( 'Table'[ATR] ),
    FILTER ( 'Table','Table'[Date] >= EARLIER ( 'Table'[FirstDateOfRange34] ))
    FILTER ('Table','Table'[Date] <= EARLIER ( 'Table'[Date] ))
    FILTER('Table'[Stock] = EARLIER ( 'Table'[Stock] ))
    FILTER('Table'[EQ] = EARLIER ( 'Table'[EQ] ))
)

【问题讨论】:

    标签: powerbi dax calculated-columns stock moving-average


    【解决方案1】:

    您的语法已关闭。 COUNTROWS 需要一个表参数,而不是三个参数,FILTER 需要一个表作为第一个参数,而不是列。

    试试这个:

    DayNumber =
    COUNTROWS (
        FILTER (
            'Table',
            'Table'[Date] <= EARLIER ( 'Table'[Date] )
                && 'Table'[Stock] = EARLIER ( 'Table'[Stock] )
                && 'Table'[EQ]    = EARLIER ( 'Table'[EQ] )
        )
    
    FirstDateOfRange34 =
    CALCULATE (
        VALUES ( 'Table'[Date] ),
        FILTER (
            'Table',
            'Table'[DayNumber] = EARLIER ( 'Table'[DayNumber] ) - 34
                && 'Table'[Stock] = EARLIER ( 'Table'[Stock] )
                && 'Table'[EQ]    = EARLIER ( 'Table'[EQ] )
        )
    )
    
    ATR34 =
    CALCULATE (
        AVERAGE ( 'Table'[ATR] ),
        FILTER (
            'Table',
            'Table'[Date] >= EARLIER ( 'Table'[FirstDateOfRange34] )
                && 'Table'[Date] <= EARLIER ( 'Table'[Date] )
                && 'Table'[Stock] = EARLIER ( 'Table'[Stock] )
                && 'Table'[EQ]    = EARLIER ( 'Table'[EQ] )
        )
    )
    

    【讨论】:

    • 谢谢亚历克西斯的回复,我很感激。但是 EARLIER 函数仍然是灰色的并且不接受查询。你能解释一下吗?
    • 我没有看到任何快照,但您是在尝试定义度量而不是计算列吗?如果这些是衡量标准,EARLIER 就没有意义了。
    • 感谢 Alexis 的帮助,我得到了错误,现在使用计算列,但对于 FirstDateOfRange34,它显示错误“检测到循环依赖:新文件夹 [FirstDateRange34]。“你能帮帮我吗?很抱歉我唠叨太多但想学习
    • 每一个都写FILTER ( ALL ( 'Table' ), ... )而不是FILTER ( 'Table', ... )会有帮助吗?
    • 会尽力让你知道谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 2022-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    相关资源
    最近更新 更多