Power BI DAX: ВЫБРАНЫ ВСЕ, за исключением одного столбца

Контекст

Из-за некоторых бизнес-требований я обнаружил, что у меня DAX Measure, рассчитанный на Fact, и использующий ALLSELECTED для всего Dimension. Измерение содержит следующие поля 'Dimension'[Field 1], 'Dimension'[Field 2], 'Dimension'[Field 3], 'Dimension'[Field 4].

[My Measure] := CALCULATE(SUM(Fact[Quantity]), ALLSELECTED('Dimension'))

Вопрос

Теперь, для некоторых других конкретных бизнес-требований, мне нужно ALLSELECTED для работы со всеми полями 'Dimension', кроме 'Dimension'[Field 4].

Моя текущая реализация выглядит следующим образом:

[My Measure] := CALCULATE(SUM(Fact[Quantity]), ALLSELECTED('Dimension'[Field 1], 'Dimension'[Field 2], 'Dimension'[Field 3]))

Это работает, но не является долгосрочным решением. Есть ли более элегантный и надежный способ сформулировать тот же DAX запрос, например ALLSELECTED('Dimension, EXCEPT('Dimension'[Field 4]))


person Seymour    schedule 09.01.2020    source источник
comment
Может быть, попробовать использовать ALLEXCEPT?   -  person Justyna MK    schedule 09.01.2020
comment
@JustynaMK, вы основываете этот комментарий на знаниях или это просто намек? потому что насколько я знаю из того, что я понял, ALLEXCEPT не является дополнением ALLSELECTED.   -  person Seymour    schedule 09.01.2020


Ответы (1)


[My Measure] :=
CALCULATE(SUM(Fact[Quantity]), ALLSELECTED('Dimension'), VALUES('Dimension'[Field 4]))

VALUES('Dimension'[Field 4]) будет оцениваться в исходном контексте фильтра и, таким образом, содержит отфильтрованные значения 'Dimension'[Field 4]. Это можно использовать для повторного применения фильтра, который был удален ALLSELECTED.

person Kosuke Sakai    schedule 09.01.2020
comment
Спасибо за ваш отзыв. Мне нужно еще две детали, прежде чем отмечать это как ответ: (1) Известно ли вам о возможных побочных эффектах или рисках при использовании этого решения? (2) как мне изменить вашу формулу DAX в случае, если я хочу, чтобы «Измерение» [Поле 3] не изменялось ALLSELECTED? - person Seymour; 09.01.2020
comment
Что касается (2), вы можете просто добавить VALUES(Dimension[Field 3]) к параметру фильтра CALCULATE. Я часто использую этот шаблон и никогда не подозреваю, что это может привести к неправильному ответу ... Однако, поскольку ALLSELECTED имеет действительно сложную природу, трудно сказать, что я ничего не упускаю. Эта статья может помочь. sqlbi.com/articles/the-definitive-guide-to-allselected - person Kosuke Sakai; 09.01.2020
comment
Могу я спросить, почему вы используете этот паттерн? В данном случае это очень специфическая мера, отвечающая требованиям 14-страничного документа. В общем, я никогда не использовал этот шаблон, но, возможно, его можно было бы распространить на другие (более общие) сценарии. - person Seymour; 09.01.2020
comment
Комбинация ALLSELECTED и VALUES может быть не очень распространенной ... Чаще всего я использую ALL (или REMOVEFILTERS) вместе со VALUES. Примером варианта использования является агрегирование родительской группы в иерархии. Например: stackoverflow.com/questions/59102487/ - person Kosuke Sakai; 09.01.2020