Страницы: 1
RSS
Несколько условий в FILTER DAX PoverPivot
 
Добрый день, уважаемые знатоки!

В языке DAX не особо разбираюсь, есть формула, которая выбирает данные за январь:
Сумма за январь:=CALCULATE(sum('SVOD1'[Значения]);filter('SVOD1';'SVOD1'[Месяц]="Январь, руб."))

Каким образом задать в фильтр и Январь и Февраль и Март?

З.Ы. Пример наверное смысла нет выкладывать, вопрос по синтаксису
 
Посмотрите тут. Успехов.
 
Цитата
QQQennedy написал:
Пример наверное смысла нет выкладывать, вопрос по синтаксису
Тогда, например, так. Не стесняйтесь заходить в библиотеку.
 
Всем спасибо!

Sertg, отличная методичка, из нее понял про "||", когда читал в библиотеке формул (не стесняюсь, к слову, туда заходить ;) было не совсем понятно.
В итоге выглядит формула так:
Код
за 3 месяца:=CALCULATE(sum('SVOD1'[Значения]);filter('SVOD1';'SVOD1'[Столбец1]="Январь, руб."||'SVOD1'[Столбец1]="Февраль, руб."||'SVOD1'[Столбец1]="Март, руб."))
 
Цитата
QQQennedy написал: filter('SVOD1'
в некоторых случаях можно внезапно и сильно удивиться результату расчета.
Лучше заменить на
Код
FILTER(ALL('SVOD1'[Столбец1]);...
F1 творит чудеса
 
Максим Зеленский, не совсем понял вашу конструкцию((

ALL удаляет все фильтры (как я понял), где же тогда прописываются условия? (в моем случае 3 шт.)
 
Вам нужны фильтры по Столбец1? Сначала удаляете существующие фильтры со Столбец1, затем применяете к нему новые.
(если у вас есть еще какие-то фильтры по этому столбцу и вы хотите почему-то их сохранить, используйте VALUES вместо ALL)
Код
за 3 месяца :=
CALCULATE (
    SUM ( 'SVOD1'[Значения] );
    FILTER (
        ALL ( 'SVOD1'[Столбец1] );
        'SVOD1'[Столбец1] = "Январь. руб."
            || 'SVOD1'[Столбец1] = "Февраль. руб."
            || 'SVOD1'[Столбец1] = "Март. руб."
    )
)

Зачем вам вся таблица в фильтре, если вы фильтруете только по одному столбцу? Это замедляет расчет (вы создаете фильтрующую таблицу из всех столбцов, хотя вам нужен только один), к тому же вы можете иногда получить очень неожиданный результат, если у вас несколько связанных таблиц в модели данных.
А вообще вам и FILTER тут не нужен, избыточен.
Код
за 3 месяца:=CALCULATE (
    SUM ( 'SVOD1'[Значения] );
            'SVOD1'[Столбец1] = "Январь. руб."
            || 'SVOD1'[Столбец1] = "Февраль. руб."
            || 'SVOD1'[Столбец1] = "Март. руб."
    )
F1 творит чудеса
 
Максим Зеленский,спасибо большое! Сейчас буду пробовать, надеюсь всё получится. Пока не могу для себя понять какую-то суть DAX, переключиться с формул Excel на DAX чтоли...
 
Это сложно поначалу, да. Надо отучаться думать ячейками и диапазонами и привыкать к понятию контекста вычислений.
F1 творит чудеса
 
Пожалуйста, подскажите, в чем ошибка множественной фильтрации в моем файле?
Должно считать по одному фильтру из одного столбца и двум фильтрам из другого столбца суммарно.

Второй вопрос, по той же таблице, как построить формулы так, чтобы при добавлении нового периода, таблица автоматически перестраивалась в конечный вариант для анализа. Сейчас приходится вручную перестраивать.
Изменено: Дмитрий - 30.06.2021 06:46:02
 
Цитата
Дмитрий написал:
Должно считать
считать что? Вы задачу-то опишите более подробно, не все с Вашим файлом работают. Что означает перешли из одной группы в другую? Какая мера работает неверно? Сходу можно сказать только об этом(в Мера1):
Код
[конечный статус]="3 гр." &&
[конечный статус]="5 гр."))
Вы значения одного и того же столбца сравниваете с разными условиями, связывая их условием AND(т.е. И). А это значит, что оно отрабатывает, скорее всего, неверно. А значит полностью мера должна выглядеть так:
Код
=CALCULATE(
DISTINCTCOUNT([id]);
FILTER('Таблица1';
[исходный статус]="2 гр." &&
[конечный статус]="3 гр." ||
[конечный статус]="5 гр."))
Цитата
Дмитрий написал:
Второй вопрос
никак не связан с первым, а значит надо следовать правилам форума и создавать новую тему. Впрочем, это на усмотрение модераторов.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Что означает перешли из одной группы в другую?
Извиняюсь, что так коряво описал цели.

В товар каждой категории товаров входит несколько уникальных продуктов (id)
(Товар 1 - товар 1 категории, Товар 2 - товар 2 категории) есть несколько

Категории товаров распределены по группам.

Каждый месяц категория товара может или остаться в той же группе, что была, а может перейти в другую группу.
Например:
Товар 2 принадлежал ко 2 группе в январе, а в феврале перешел в 3 группу.
или
Товар 2 принадлежал и в январе и в феврале ко 2 группе.

Общая задача:
Построить меру, чтобы наглядно увидеть, сколько продуктов (id) в какой отчетный срок или остаются в прежней группе или переходят в другие (определенные группы из установленных групп)
При этом Переключать эти категории с помощью мер.

Конкретная задача по примеру:
Цитата
Дмитрий(The_Prist) Щербаков написал:
Сходу можно сказать только об этом(в Мера1)
Совершенно верно! Не работает Мера 1

Используя срезы:
- для фильтрации по категориям товаров (Товар 1, Товар 2 и т.д.)
- для фильтрации по временным периодам

Сколько ID в январе относилось ко 2 группе, а в феврале стало относиться к 3 и 5 группе.

Цитата
Дмитрий(The_Prist) Щербаков написал:
А значит полностью мера должна выглядеть так
Попробовал. Действительно, в данном примере, с фильтрацией срезом по Товару 2 всё сработало как надо. Но когда переключил срез на Товар 3 - задача "Сколько ID в январе относилось ко 2 группе, а в феврале стало относиться к 3 и 5 группе" сработало неверно.
Возможно, нужно изменить иерархию фильтров?

В примере, пытался показать, что необходимо, чтобы было посчитано количество id при одновременном включении следующих фильтров:
- исходный статус - 2 группа
- конечный статус - 3 и 5 группа

фильтры, переключаемые срезами:
- отчетный период - февраль
- отчетная категория - товар 2
 
Поправил код, хотя не уверен, что пошёл правильным путем.
Код
=CALCULATE(
DISTINCTCOUNT([id]);
FILTER('Таблица1';
[исходный статус]="2 гр.");
FILTER('Таблица1';
[конечный статус]="3 гр." ||
[конечный статус]="5 гр."))

Можно как-нибудь настроить формулы так, чтобы если кликнуть на результат, выгружались отфильтрованные данные (строчки с id, которые удовлетворяют параметрам меры)?

Страницы: 1
Наверх