通过 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(值(,而不是使用我设置的关系。

它在 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])

最新更新