Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):
Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В данной статье мы разберем 3 функции, которые способны создавать таблицы в DAX на основе объединения двух и более исходных таблиц. И это функции UNION, INTERSECT и EXCEPT в Power BI и Power Pivot.
Рассмотрим подробно каждую из них в отдельности.
Для Вашего удобства, рекомендую скачать «Справочник DAX функций для Power BI и Power Pivot» в PDF формате.
Если же в Ваших формулах имеются какие-то ошибки, проблемы, а результаты работы формул постоянно не те, что Вы ожидаете и Вам необходима помощь, то записывайтесь в бесплатный экспресс-курс «Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot».
DAX функция UNION в Power BI и Power Pivot
UNION () — создает новую таблицу, объединяя любое количество таблиц с единой структурой столбцов. То есть, объединяет строки нескольких одинаковых таблиц в одну единую таблицу.
Синтаксис: UNION (‘Таблица 1’; ‘Таблица 2’; …; ‘Таблица N’)
Пример формулы с использованием DAX функции UNION.
Примеры мы будем рассматривать в Power BI, так как в этой программе имеется возможность физического создания вычисляемых таблиц в модели данных — что нам нужно для наглядности демонстрации примеров.
В надстройке Excel (Powerpivot) в самой модели данных вычисляемые таблицы создавать нельзя. Они в Power Pivot создаются только виртуально, во время самого вычисления формулы.
Итак, в Power BI Desktop имеется несколько исходных таблиц с одинаковой структурой столбцов — «Продажи Отдел 1», «Продажи Отдел 2», «Продажи Отдел 3»:
Объединим все эти таблицы в одну общую при помощи DAX функции UNION, создав во вкладке «Моделирование» в Power BI Desktop, вычисляемую таблицу на основе следующей формулы:
Общие Продажи = UNION ('ПродажиОтдел1'; 'ПродажиОтдел2'; 'ПродажиОтдел3')
Как итог вычисления этой формулы на основе UNION, будет создана общая таблица по продажам всех отделов:
DAX функция INTERSECT в Power BI и Power Pivot
INTERSECT () — создает таблицу из строк левой таблицы, которые присутствуют в правой таблице (пересечение строк двух таблиц с сохранением дубликатов). В обеих таблицах должна быть идентичная структура столбцов.
Синтаксис: INTERSECT (‘Левая Таблица’; ‘Правая Таблица’)
Пример формулы с использованием DAX функции INTERSECT.
В модели данных имеются 2 таблицы с одинаковой структурой столбцов «Города Где Прибыль Больше 1 млн» и «Города Где Магазинов Меньше 5»:
Требуется создать таблицу, в которой должна быть информация о городах, имеющих общую прибыль по городу более 1 млн и при этом количество магазинов в городе меньше 5. То есть, нам нужно создать таблицу из строк первой таблицы, которые есть во второй. А для этого, хорошо подойдет рассматриваемая DAX функция INTERSECT.
Напишем пример формулы на основе INTERSECT:
ГородаПрибыльБол1млнИМагМен5 = INTERSECT ('ГородаГдеМагазиновМеньше5'; 'ГородаГдеПрибыльБольше1млн')
И итог работы данной формулы на основе DAX функции INTERSECT следующий:
То есть, INTERSECT создала в модели данных таблицу, состоящую из двух строк: города Санкт-Петербург и Екатеринбург, в которых общей прибыли больше 1 млн, и при этом, магазинов в каждом городе менее 5.
DAX функция EXCEPT в Power BI и Power Pivot
EXCEPT () — создает таблицу из строк левой таблицы, которых нет в правой. В обеих таблицах должна быть идентичная структура столбцов.
Синтаксис: EXCEPT (‘Левая Таблица’; ‘Правая Таблица’)
Пример формулы с использованием DAX функции EXCEPT.
В модели данных Power BI имеются 2 таблицы с одинаковой структурой столбцов «Продажи Менеджеров» и «Топ 3 Максимальные Продажи»:
Задача — создать новую таблицу с оставшимися менеджерами и их продажами, не входящих в Топ 3. То есть, нужно создать таблицу из строк первой таблицы, которых нет во второй. И с решением данной задачи нам отлично поможет DAX функция EXCEPT.
Напишем соответствующую формулу с участием EXCEPT:
Оставшиеся Продажи = EXCEPT ('ПродажиМенеджеров'; 'Топ3МаксПродажи')
Результатом выполнения этой формулы с функцией EXCEPT, будет являться новая таблица со строками из «Продажи Менеджеров», которых нет в «Топ 3 Макс Продажи»:
На этом, с кратким обзором DAX функций, которые создают таблицы в Power BI и Power Pivot на основе строк из других таблиц, в этой статье все.
Пожалуйста, оцените статью:
Успехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.
Понравился материал статьи?
Добавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D
Спасибо, очень полезная информация! Все получилось.
Вопрос сопутствующий: добавляются ли данные в объединенную с помощью union таблицу, если дополняется одни из источников?
да, конечно добавляются
Спасибо за пост.
Все так и не понятно, как это работает в Power Pivot.
Например в комбинации с SUMMARIZE (Union(table1, table2), field1, «ExpresName», sum(union table [field2])
Дело в том, что в Power Pivot просто так таблицы на основе DAX кода физически создавать в модели данных нельзя, в отличие от Power BI, как это показано было в примере в статье.
В Power Pivot можно создавать вычисляемые столбцы в уже имеющихся таблицах, а также, меры.
Все функции, которые в итоге своей работы выдают таблицу, в Power Pivot можно использовать только внутри других функций, которые требуют на вход таблицу.
В Вашем случае, Вы при помощи SUMMARIZE написали код таблицы, которую в Power Pivot создать нельзя, соответственно, Вам можно только это табличное выражение только агрегировать в мере через итерационные X-функции агрегации (SUMX, COUNTX, AVERAGEX и т.д)
Запишитесь в бесплатный видеокурс по DAX, в нем я очень подробно разбираю свойства Power BI и Power Pivot с точки зрения языка DAX: https://biprosto.ru/kurs/dax-kurs-free