Возврат итогового значения из связанной таблицы через отношение "многие к одному" в Power BI (DAX)

Я работаю с PowerBI, но, учитывая, что это вопрос Dax, я предполагаю, что это относится и к Power Pivot.

Рассмотрим следующие таблицы с желаемым результатом в Таблице - Один:

Таблица - Многие

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

Стол - Один

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

У меня есть связь между двумя таблицами. Я хотел бы получить новый атрибут в «Таблица - Один», который представляет собой просто минимальное значение «значения» в таблице - много для каждого совпадающего идентификатора.

Это было бы тривиально для любого варианта 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 (значение) для всего столбца и не использует отношения, которые я установил.


person Sevyns    schedule 12.04.2018    source источник


Ответы (1)


В 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])
person Alexis Olson    schedule 12.04.2018
comment
похоже, пропустил это: = MINX (RELATEDTABLE (TableMany), TableMany [value]) - person Prakash Gautam; 14.04.2018
comment
Спасибо, Алексис, я посмотрю на это сегодня. - person Sevyns; 16.04.2018