Вопрос или проблема
Мне нужно создать меру, которая сравнивает валюту из разных таблиц. Если один столбец пустой, то берём данные из другого.
Материал
Номер материала | Наименование |
---|---|
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
отсутствует.
Предлагаемое решение
Мы создадим новую меру, которая будет проверять наличие данных в каждой из таблиц и будет возвращать правильные результаты согласно вашей логике:
- Если валюты в таблице
Budget
пусты, то будет выбрана валюта из таблицыJIRA
. - Если валюты в обеих таблицах пустые, вернем пустоту.
Вот код, который решает вашу задачу:
Мера_Валюта =
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() // Если обе валюты пустые
)
Объяснение логики
- Ваша мера начинает с получения максимальных значений валют из обеих таблиц
Budget
иJIRA
. - Затем применяется конструкция
SWITCH(TRUE(), ...)
, которая позволяет проверять условия последовательно.- Если валюта в
Budget
не пуста, то выводим её. - Если валюта в
Budget
пуста, но валюта вJIRA
не пуста, выводим её. - Если обе валюты пустые, возвращаем
BLANK()
.
- Если валюта в
Результат
После внесения этих изменений, при использовании меры Мера_Валюта
для вывода данных, вы должны получить следующие результаты:
Material no | Currency |
---|---|
1234 | USD |
5678 | EUR |
1290 | EUR |
Заключение
Теперь ваша мера будет корректно проверять пустые значения и возвращать ожидаемую валюту. Не забудьте, что для правильной работы необходимых изменений также потребуется убедиться в корректной настройке отношений между таблицами в вашей модели данных. Если у вас возникнут дополнительные вопросы по реализации, пожалуйста, дайте знать!