簡體   English   中英

Power BI DAX:基於變量篩選器的兩個表之間的交叉連接

[英]Power BI DAX : CROSS JOIN between two tables based on a variable filter

我的 Power BI model 中有兩個輸入表。

  1. 用戶權限
  2. 查找表

以上兩個表相關。

用戶權限:

在此處輸入圖像描述

“All”對應於查找表中的所有段,即X、Y、Z。

查找表:

在此處輸入圖像描述

UserPermission[SgmtID] 等價於 LookupTable[SegmentID]。

我需要開發一個 output 表,通過交叉連接 UserPermission 表中的 UserName 列和查找表中的 Ports 列。

所需的 Output 表:

在此處輸入圖像描述

David 需要在查找表中擁有所有的所有端口(即 X、Y、Z)。

John 只需要擁有段 X的所有端口。

Mike 只需要擁有段 Y的所有端口。

Jill 只需要擁有段 X 和 Z的所有端口。

David 和 Jill 的區別在於,David 可以訪問所有段,而 Jill 可以訪問多個段,但不能訪問所有段。

行級安全 (RLS) 需要 output 表。

我知道使用 VALUES 使用 CROSS JOIN,還有一些變量和過濾器。 但由於缺乏專業知識,無法開發完整的 DAX 查詢。

任何人都可以幫我解決這個問題嗎?

如果您需要在 DAX 中執行此操作,我認為SUMMARIZECOLUMNS function可能是最容易實現此目的的方法。

Output Table =
FILTER (
    SUMMARIZECOLUMNS (
        UserPermission[UserName],
        LookupTable[Ports],
        LookupTable[SegmentID],
        "SID", VALUES ( UserPermission[SegmentID] )
    ),
    [SID] < 0 || [SID] = [SegmentID]
)

推薦閱讀這款強大的 function:

https://www.sqlbi.com/articles/introducing-summarizecolumns/


編輯:如果您將UserPermissions[SegmentID]重命名為UserPermissions[SgmtID]以便在匯總時沒有兩列同名,那么您可以按如下方式編寫組合表並避免您在評論中提到的問題:

Output Table =
FILTER (
    SUMMARIZECOLUMNS (
        UserPermission[UserName],
        UserPermission[SgmtID],
        LookupTable[Ports],
        LookupTable[SegmentID]
    ),
    [SgmtID] < 0 || [SegmentID] = [SgmtID]
)

暫無
暫無

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

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