DAX计算列中的循环依赖关系:: AAS模型

问题描述 投票:0回答:1

我陷入了要添加新的计算列但会提示我循环依赖的情况。第一列的计算方式如下:

=VAR Denominator = ( Validation_Accounts_Agreements[CalculatedClosedDateVsFirstPurchaseDate] + 1 )
VAR Sales =
    CALCULATE (
        SUM ( SalesR48NBVBySolution[TotalSales] ),
        FILTER (
            SalesR48NBVBySolution,
            SalesR48NBVBySolution[invoicedate] >= Validation_Accounts_Agreements[CalculatedFirstAnchorPurchaseDateAfterGTWClosedDate]
        )
    )
VAR R6AnchorSales =
    CALCULATE (
        SUM ( SalesR48NBVBySolution[TotalSales] ),
        FILTER (
            SalesR48NBVBySolution,
            SalesR48NBVBySolution[invoicedate]
                >= EDATE (
                    Validation_Accounts_Agreements[CalculatedFirstAnchorPurchaseDateAfterGTWClosedDate],
                    -6
                )
                && SalesR48NBVBySolution[invoicedate] < Validation_Accounts_Agreements[CalculatedFirstAnchorPurchaseDateAfterGTWClosedDate]
                && SalesR48NBVBySolution[ClensedAnchorDesignation] = "Y"
        )
    )
RETURN
    IF ( ISBLANK ( R6AnchorSales ),
        IF ( NOT (ISBLANK ( Validation_Accounts_Agreements[CalculatedFirstAnchorPurchaseDateAfterGTWClosedDate] )
            )
                && ISBLANK ( R6AnchorSales ),
            DIVIDE ( Sales, Denominator ) * 12
        )
    )

我要在此处创建的下一列是:

=VAR Denominator = ( Validation_Accounts_Agreements[CalculatedClosedDateVsFirstPurchaseDate_SLN] + 1 )
VAR Sales =
    CALCULATE (
        SUM ( SalesR48NBVBySolution[TotalSales] ),
        FILTER (
            SalesR48NBVBySolution,
            SalesR48NBVBySolution[invoicedate] >= Validation_Accounts_Agreements[CalculatedFirstPurchasedateAfterGTWClosedDate_SLN]
        )
    )
VAR R6AnchorSales =
    CALCULATE (
        SUM ( SalesR48NBVBySolution[TotalSales] ),
        FILTER (
            SalesR48NBVBySolution,
            SalesR48NBVBySolution[invoicedate]
                >= EDATE (
                    Validation_Accounts_Agreements[CalculatedFirstPurchasedateAfterGTWClosedDate_SLN],
                    -6
                )
                && SalesR48NBVBySolution[invoicedate] < Validation_Accounts_Agreements[CalculatedFirstPurchasedateAfterGTWClosedDate_SLN]
                && SalesR48NBVBySolution[ClensedAnchorDesignation] = "N"  &&  CALCULATE(MAX('CAM Alignment'[NodeCd_L3])=="C3-10-00015")

        )
    )
RETURN
    IF ( ISBLANK ( R6AnchorSales ),
        IF ( NOT (ISBLANK ( Validation_Accounts_Agreements[CalculatedFirstPurchasedateAfterGTWClosedDate_SLN] )
            )
                && ISBLANK ( R6AnchorSales ),
            DIVIDE ( Sales, Denominator ) * 12
        )
    )
dax calculated-columns circular-dependency powerbi-desktop azure-analysis-services
1个回答
0
投票

通常,根据最佳实践,请避免大量使用计算列。而是将它们添加到您的数据源(后端)中,或使用M-Query。

为了准确回答您的问题,您需要分享有关模型的更多信息(即关系)。但是,我们可以为您提供一些参考this文章的准则,以避免循环依赖。

引用本文的结论:

在大多数情况下,使用计算表时会发生循环依赖关系。注意功能的选择,可以轻松避免它们。 DISTINCT和VALUES之间或ALL和ALLNOBLANKROW之间的差异是细微的差异。但是一旦习惯了,涉及关系和循环引用的代码就会更加安全。

© www.soinside.com 2019 - 2024. All rights reserved.