簡體   English   中英

Power BI - 檢查事件是否在相關表中的兩個日期之間

[英]Power BI - Check if events are between two dates in related table

假設我有一個項目表及其關聯公司、日期和成本:

在此處輸入圖像描述

項目 ID 是唯一的,但一個公司可以有多個項目。 此表與“公司”表鏈接(多對一):

在此處輸入圖像描述

然后將其與“狀態”表鏈接(一對多):

在此處輸入圖像描述

我這里只是使用colors,狀態的類型是任意的。

我正在尋找一種僅在公司處於“綠色”狀態時匯總每個公司的項目成本的方法。 我假設它可能是 Project 表上的計算列,可能只是作為 True/False 標志。 查看 Status 表,按 Company 篩選,將 Status 篩選為綠色,如果 Project[Date] 介於 Start Date 和 End Date 之間,則返回 True。

在上面的示例中,三個項目將被標記為 True:00001、00006 和 00007。

在 DAX 中執行此操作的最佳方法是什么?

由於在樣本數據中,同一公司在同一時期的紅色和綠色狀態重疊,我們假設如果所選日期存在綠色狀態,則即使同一公司也存在紅色狀態,該狀態也是綠色期間和同一家公司。

一種可能的解決方案是首先使用 boolean 標志 IsGreen 添加計算列。

這是一個簡單的公式,它遍歷檢查公司 ID、狀態和日期間隔的狀態表。

由於這是一個計算列,它僅在刷新期間執行,不會影響度量性能。

IsGreen =
VAR ProjectCompanyID = Project[Company ID]
VAR ProjectDate = Project[Date]
RETURN
    NOT ISEMPTY (
        FILTER (
            'Status',
            RELATED ( Company[Company ID] ) = ProjectCompanyID
                && 'Status'[Status] = "Green"
                && ProjectDate >= 'Status'[Start Date]
                && ProjectDate <= 'Status'[End Date]
        )
    )

然后我們可以使用 IsGreen 計算列實現 SumOfCostIfGreen 度量

SumOfCostIfGreen = 
CALCULATE ( SUMX ( Project, Project[Cost] ), Project[IsGreen] )

這是生成的表格視覺效果

表視覺

暫無
暫無

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

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