Функция проверки пустой позиции не работает

Вопрос или проблема

Мне нужно создать меру, которая сравнивает валюту из разных таблиц. Если один столбец пустой, то берём данные из другого.

Материал

Номер материала Наименование
1234 Мат 1
5678 Мат 2
1290 Мат 3

Бюджет

Номер материала Валюта
1234 USD
5678
1290 EUR

JIRA

Номер материала Валюта
1234
5678 EUR
1290 EUR

Ожидаемый результат

Номер материала Валюта
1234 USD
5678 EUR
1290 EUR

Я создал меру

Miara-test = 
VAR Purchase_filter = MAXX('Budget','Budget'[Currency]) 
RETURN IF( ISBLANK(Purchase_filter)) || Purchase_filter = "", MAXX(JIRA,JIRA[Currency]), MAXX('Budget','Budget'[Currency]))

По какой-то причине я получил таблицу, которая возвращает только валюту в случае, если они совпадают в обеих исходных данных

Номер материала Валюта
1234
5678
1290 EUR

Ответ или решение

Для решения вашей задачи по сравнению валют из разных таблиц и корректного отображения значений, нам необходимо доработать вашу меру. Исходная ваша мера не учитывает корректно ситуацию, когда значения в обеих таблицах могут быть пустыми. Давайте разберем это подробнее и создадим новую меру, которая будет возвращать ожидаемые результаты.

Проблема

Вы используете MAXX() для получения значений, но MAXX() может не вернуть нужные значения, если в одной или обеих таблицах языков пустые значения. Также, вы проверяете только пустоту, но не используете логику выбора валюты из таблицы JIRA, если значение в таблице Budget отсутствует.

Предлагаемое решение

Мы создадим новую меру, которая будет проверять наличие данных в каждой из таблиц и будет возвращать правильные результаты согласно вашей логике:

  1. Если валюты в таблице Budget пусты, то будет выбрана валюта из таблицы JIRA.
  2. Если валюты в обеих таблицах пустые, вернем пустоту.

Вот код, который решает вашу задачу:

Мера_Валюта =
VAR ValBudget = MAXX(Budget, Budget[Currency])
VAR ValJira = MAXX(JIRA, JIRA[Currency])
RETURN 
    SWITCH(
        TRUE(),
        NOT ISBLANK(ValBudget) && ValBudget <> "", ValBudget,
        NOT ISBLANK(ValJira) && ValJira <> "", ValJira,
        BLANK()  // Если обе валюты пустые
    )

Объяснение логики

  1. Ваша мера начинает с получения максимальных значений валют из обеих таблиц Budget и JIRA.
  2. Затем применяется конструкция SWITCH(TRUE(), ...), которая позволяет проверять условия последовательно.
    • Если валюта в Budget не пуста, то выводим её.
    • Если валюта в Budget пуста, но валюта в JIRA не пуста, выводим её.
    • Если обе валюты пустые, возвращаем BLANK().

Результат

После внесения этих изменений, при использовании меры Мера_Валюта для вывода данных, вы должны получить следующие результаты:

Material no Currency
1234 USD
5678 EUR
1290 EUR

Заключение

Теперь ваша мера будет корректно проверять пустые значения и возвращать ожидаемую валюту. Не забудьте, что для правильной работы необходимых изменений также потребуется убедиться в корректной настройке отношений между таблицами в вашей модели данных. Если у вас возникнут дополнительные вопросы по реализации, пожалуйста, дайте знать!

Оцените материал
Добавить комментарий

Капча загружается...