我正在使用PowerBI,但考虑到这是一个Dax问题,我认为这也适用于电源枢轴。
考虑以下表格,表格中包含所需的结果 - 一:
表 - 很多
+----+-------+
| id | value |
+----+-------+
| 1 | a |
+----+-------+
| 1 | a |
+----+-------+
| 1 | a |
+----+-------+
表 - 一个
+----+-----------------------+
| id | minValueFromTableMany |
+----+-----------------------+
| 1 | (Expecting a) |
+----+-----------------------+
我在两个表之间建立了关系。我想在'Table - One'中派生一个新属性,它只是表中'value'的最小值 - 对于每个匹配的id都很多。
这在任何SQL-varient,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(值),而不是使用我设置的关系。
答案 0 :(得分:2)
在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])