簡體   English   中英

DAX-Power BI:如何避免計算列中的循環依賴

[英]DAX-Power BI: How to avoid circular dependency in calculated column

我正在編寫 PowerBi 桌面的報告,我有多個表,有些表有一個帶有值的期間列,但其中一對沒有。 我可以根據記錄日期和另一個包含期間名稱和數據范圍的表來計算期間。 當我試圖基於周期建立表之間的關系時,問題就出現了,因為計算的周期和關系的主表之間存在循環依賴關系。 關系的想法是能夠根據期間過濾報告。

為了簡化數據,這就是問題所在:我有一個問題(循環依賴)試圖在表Periods[PeriodName]Income[CalculatedPeriod]之間添加關系

我需要能夠在報告視圖中對收入和結果使用單個過濾器。 通常,這是使用關聯所有表的鍵來完成的。 我在處理PeriodsOutcome (1: *) 之間的關系時沒有問題,因為在表結果中,PeriodName 不是計算列。 但是,當我嘗試添加與收入列 (1: *) 的關系時,會檢測到循環依賴。 我知道是因為[CalculatedPeriod]是使用Periods表計算的,但我不知道如何解決這個問題

時期

PeriodName  StartDate    FinishDate
Period1     2020-Jan-01  2020-Jan-15
Period2     2020-Jan-15  2020-Jan-31
Period3     2020-Feb-01  2020-Feb-28
Period4     2020-Mar-01  2020-Mar-15
Period5     2020-Mar-15  2020-Abr-2

收入

Date        Value [CalculatedPeriod]
2020-Jan-09 25000 Period1
2020-Jan-11  5000 Period1
2020-Jan-28  3000 Period2
2020-Feb-14 18000 Period3
2020-Mar-14 12000 Period4

CalculatedPeriod= CALCULATE(VALUES(Periods[PeriodName]),FILTER(Periods,[Date]>=Periods[StartDate] && [Date] <= Periods[FinishDate]))

結果

Date        Value  Period
2020-Jan-07 16000  Period1
2020-Jan-17 11000  Period2
2020-Jan-31  5000  Period3
2020-Feb-14 13000  Period3
2020-Mar-14  9000  Period4

數據有很多其他列,並且周期列應該用作過濾器,但如果我無法與所有表創建關系,則過濾器將僅適用於相關表,並且始終顯示來自的總數不相關的表。

(Filter: No filters)
Income     Outcome
63000      54000

(Filter: Periods[PeriodName:"Period3"])
Income     Outcome
63000      18000

(Filter: Periods[PeriodName:"Period5"])
Income     Outcome
63000      

我怎么解決這個問題?

到目前為止,我可能認為的唯一解決方法是復制周期表。

謝謝

您可以使用 DISTINCT,舉一個非常簡單的 model 為例,如果有 2 個表 A 和 B。假設 B 是使用 VALUES ( A[Column] )創建的,然后您在 A 和 B 之間建立關系,那么這是不允許的因為 VALUES 取決於由於無效的關系(由於缺少值而導致)而添加到關系一側的自動空白行,這意味着 A 可能包含由於無效關系而添加的空白行,所以如果關系是可能使用 VALUES,那么 B 將依賴於 A,而 A 將依賴於 B。

CalculatedPeriod =
CALCULATE (
    DISTINCT ( Periods[PeriodName] ),
    FILTER (
        Periods,
        [Date] >= Periods[StartDate]
            && [Date] <= Periods[FinishDate]
    )
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM