簡體   English   中英

通過 Power BI (DAX) 中的多對一關系從相關表中返回匯總值

[英]Return a summarized value from a related table via a many to one relationship in Power BI (DAX)

我正在使用 PowerBI,但考慮到這是一個 Dax 問題,我認為這也適用於 power pivot。

考慮下表,在表一中得到所需的結果:

表 - 許多

+----+-------+
| id | value |
+----+-------+
| 1  | a     |
+----+-------+
| 1  | a     |
+----+-------+
| 1  | a     |
+----+-------+

表 - 一

+----+-----------------------+
| id | minValueFromTableMany |
+----+-----------------------+
| 1  | (Expecting a)         |
+----+-----------------------+

我在兩個表之間建立了關系。 我想在“表 - 一個”中派生一個新屬性,它只是表中“值”的最小值 - 每個匹配的 id 都有很多。

這在任何 SQL 變體、Python 或 R 中都是微不足道的。

SQL

SELECT
    T1.id
    ,T2.minValueFromTableMany
FROM TableOne T1
    INNER JOIN ( 
                 SELECT MIN(value) as minValueFromTableMany
                 FROM TableMany
                 GROUP BY id
               ( as T2
       ON T1.id = T2.id

我們如何在 DAX 中做到這一點? 使用 min() 函數只是返回整個列的 min(value) 而不是使用我設置的關系。

在 DAX 中更簡單。 您可以像這樣創建一個計算列:

minValueFromTableMany = CALCULATE(MIN(TableMany[value]),
                            ALLEXCEPT(TableOne, TableOne[id]))

這假設它們在id列上有關系。


這是另一種方法,可以在有或沒有關系的情況下工作:

minValueFromTableMany = CALCULATE(MIN(TableMany[value]),
                            TableMany[id] = EARLIER(TableOne[id]))

EARLIER函數引用較早的行上下文。


您還可以使用MINX函數:

minValueFromTableMany = MINX(
                            FILTER(TableMany, TableMany[id] = TableOne[id]),
                            TableMany[value])

暫無
暫無

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

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