简体   繁体   English

在两个计算列之间检测到 Power BI DAX 循环依赖

[英]Power BI DAX circular dependency was detected between two calculated columns

I have a calculated column that works as intended for current year calculations called RTP .我有一个计算列,可以按预期用于当年的计算,称为RTP For reference here is the code:这里的参考代码是:

RTP = 
VAR ActualPM = AND(AND(
                    'Opex Summary'[Date] >= CALCULATE(STARTOFMONTH('Opex Summary'[Date]),FILTER(ALL(Dates), Dates[Month Offset] = 1)),
                    'Opex Summary'[Date] <= CALCULATE(ENDOFMONTH('Opex Summary'[Date]),FILTER(ALL(Dates), Dates[Month Offset] = 1))
                ),'Opex Summary'[Flag] <> "Budget")
VAR ActualPM_Name = FORMAT(CALCULATE(MIN(Dates[Mth]),FILTER(ALL(Dates),Dates[Month Offset] = 1)) ,"mm/yyyy")

VAR ActualPM1 = AND(AND(
                    'Opex Summary'[Date] >= CALCULATE(STARTOFMONTH('Opex Summary'[Date]),FILTER(ALL(Dates), Dates[Month Offset] = 2)),
                    'Opex Summary'[Date] <= CALCULATE(ENDOFMONTH('Opex Summary'[Date]),FILTER(ALL(Dates), Dates[Month Offset] = 2))
                ),'Opex Summary'[Flag] <> "Budget")  
VAR ActualPM1_Name = FORMAT(CALCULATE(MIN(Dates[Mth]),FILTER(ALL(Dates),Dates[Month Offset] = 2)) ,"mm/yyyy")

VAR ActualPM2 = AND(AND(
                    'Opex Summary'[Date] >= CALCULATE(STARTOFMONTH('Opex Summary'[Date]),FILTER(ALL(Dates), Dates[Month Offset] = 3)),
                    'Opex Summary'[Date] <= CALCULATE(ENDOFMONTH('Opex Summary'[Date]),FILTER(ALL(Dates), Dates[Month Offset] = 3))
                ),'Opex Summary'[Flag] <> "Budget")  
VAR ActualPM2_Name = FORMAT(CALCULATE(MIN(Dates[Mth]),FILTER(ALL(Dates),Dates[Month Offset] = 3)) ,"mm/yyyy")

VAR BudgetPM = AND(AND(
                    'Opex Summary'[Date] >= CALCULATE(STARTOFMONTH('Opex Summary'[Date]),FILTER(ALL(Dates), Dates[Month Offset] = 1)),
                    'Opex Summary'[Date] <= CALCULATE(ENDOFMONTH('Opex Summary'[Date]),FILTER(ALL(Dates), Dates[Month Offset] = 1))
                ),'Opex Summary'[Flag] = "Budget")
VAR BudgetPM_Name = FORMAT(CALCULATE(MIN(Dates[Mth]),FILTER(ALL(Dates),Dates[Month Offset] = 1)) ,"mm/yyyy")

VAR ActualPM_PY = AND(AND(
                    'Opex Summary'[Date] >= CALCULATE(STARTOFMONTH('Opex Summary'[Date]),FILTER(ALL(Dates), Dates[Month Offset] = 13)),
                    'Opex Summary'[Date] <= CALCULATE(ENDOFMONTH('Opex Summary'[Date]),FILTER(ALL(Dates), Dates[Month Offset] = 13))
                ),'Opex Summary'[Flag] <> "Budget")
VAR ActualPM__PYName = FORMAT(CALCULATE(MIN(Dates[Mth]),FILTER(ALL(Dates),Dates[Month Offset] = 13)) ,"mm/yyyy")


RETURN
SWITCH(TRUE(),
    ActualPM, "CY Act (" & ActualPM_Name & ")",
    ActualPM1, "CY Act (" &  ActualPM1_Name & ")",
    ActualPM2, "CY Act (" & ActualPM2_Name & ")",
    BudgetPM, "CY Bud (" & BudgetPM_Name & ")",
    ActualPM_PY, "PY Act (" & ActualPM__PYName & ")",
    "EXCLUDE"
    
)

I am attempting to create a similar year to date calculated column called RTP YTD .我正在尝试创建一个名为RTP YTD的类似年初至今的计算列。 This is providing me the following error:这为我提供了以下错误:

A circular dependency was detected: Opex[RTP YTD], Opex[RTP], Opex[RTP YTD]检测到循环依赖:Opex[RTP YTD]、Opex[RTP]、Opex[RTP YTD]

The code that creates the error is below:创建错误的代码如下:

RTP YTD = 
VAR ActualYTD1 = AND(AND(
                    'Opex Summary'[Date] >= CALCULATE(STARTOFMONTH('Opex Summary'[Date]),FILTER(ALL(Dates), Dates[Month Offset] = 13)),
                    'Opex Summary'[Date] <= CALCULATE(ENDOFMONTH('Opex Summary'[Date]),FILTER(ALL(Dates), Dates[Month Offset] = 1))
                ),'Opex Summary'[Flag] <> "Budget")
VAR ActualYTD_Name1 = FORMAT(CALCULATE(MIN(Dates[Date]),FILTER(ALL(Dates),Dates[Month Offset] = 1)) ,"mm/yyyy")

RETURN
SWITCH(TRUE(),
    ActualYTD1, "YTD Act (" & ActualYTD_Name1 & ")",
    "EXCLUDE"
    
)

I think you need ALLEXCEPT() in your calculated columns.我认为您的计算列中需要 ALLEXCEPT() 。 I'd write the code but it is difficult without sample data so you can have a read here:我会编写代码,但没有示例数据很难,因此您可以在此处阅读:

https://www.sqlbi.com/articles/avoiding-circular-dependency-errors-in-dax/ https://www.sqlbi.com/articles/avoiding-circular-dependency-errors-in-dax/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM