簡體   English   中英

在 Power BI DAX 中應用來自不同表的高級篩選器

[英]Applying advanced filter in Power BI DAX, from a different table

我有以下表格:

劇集: 在此處輸入圖像描述

客戶: 在此處輸入圖像描述

我的 DAX 計算總結了來自 Episodes tbl 的 [Days_epi] 唯一值,並按 [ProgramID_epi]、[EpisodeID_epi]、[ClientID_epi] 對它們進行分組。

因此,[Days_epi] 的總和 = 3 + 5 + 31 + 8 + 15 + 20 + 10 = 92

這是我的工作代碼:

     DaysSUM = 
       CALCULATE (
             SUMX (
               SUMMARIZE (
                  'Episodes',
                  'Episodes'[EpisodeID_epi],
                  'Episodes'[ProgramID_epi],
                  'Episodes'[ClientID_epi],
                  'Episodes'[Days_epi]
                  ),
                  'Episodes'[Days_epi]
             ),
             FILTER (
                 'Episodes',
                 'Episodes'[Category_epi] = "Homeless"
           )
        )

我需要在上面的計算中添加兩個高級過濾器:

如果客戶端中的記錄在 [DischDate_clnt] 和 [AdmDate_clnt] >= 365 之間存在差異,則過濾器 1 應該只保留情節中的記錄。

SQL 語句中的過濾器 1 是

    DATEDIFF(DAY, [AdmDate_clnt], [DischDate_clnt]) >= 365)

之后,過濾器 2 應該只保留情節中的記錄,如果客戶端中的記錄有 [Date_clnt] >= [AdmDate_clnt] + 12 個月。 (入學日期后12個月)

SQL 語句中的過濾器 2 為

      [Date_clnt] <= DATEADD(MONTH, 12, [[AdmDate_clnt])

因此,在應用這兩個過濾器后,我希望 Episodes tbl 的記錄 6 和 10 必須被排除(過濾掉),因為 Clients tbl 的記錄 2 和 3(以綠色突出顯示)不滿足我的過濾器 1/過濾器 2 .

這是我應該擁有的最終劇集數據集(沒有紅色的 2 條記錄): 在此處輸入圖像描述

我開始如下更新我的 DAX 代碼(如下)。 但不斷收到錯誤“參數不是正確的類型”

enter 
 DaysSUM_Filters = 
       CALCULATE (
             SUMX (
               SUMMARIZE (
                  'Episodes',
                  'Episodes'[EpisodeID_epi],
                  'Episodes'[ProgramID_epi],
                  'Episodes'[ClientID_epi],
                  'Episodes'[Days_epi]
                  ),
                  'Episodes'[Days_epi]
             ),
             FILTER (
                 'Episodes',
                 'Episodes'[Category_epi] = "Homeless"
           ), TREATAS(DATEDIFF('Clients'[AdmDate_clnt], 
                               'Clients'[DischDate_clnt], DAY)>=365,
                               'Clients'[Date_clnt])
          )

不完全確定如何在 DAX Power BI 中正確設置這兩個過濾器,因為我對它比較陌生。

請幫忙!

我不能說所有的情況。 但顯而易見的是,您以錯誤的方式使用TREATAS 它的工作原理類似於TREATAS({"Red", "White", "Blue"}, 'Product'[Color])

在你的情況下

DATEDIFF('Clients'[AdmDate_clnt], 
                           'Clients'[DischDate_clnt], DAY)>=365

將返回TRUEFALSE值。 TREATAS 的第一個參數 - 是一列或一組列,而不是單個值。

您可以像這樣使用過濾器:

FILTER(
    'Clients'
    ,DATEDIFF(
        'Clients'[AdmDate_clnt]
        ,'Clients'[DischDate_clnt]
       ,DAY
    )>=365
)

這將為您返回一個過濾表。 如果您的表是鏈接的,這可能會起作用。

暫無
暫無

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

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