Россия Нет

Функции объединения таблиц в DAX: UNION, INTERSECT и EXCEPT в Power BI и Power Pivot

 Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):


Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В данной статье мы разберем 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 на основе строк из других таблиц, в этой статье все.

Пожалуйста, оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(14 голосов, в среднем: 4.7 из 5 баллов)
[Экспресс-видеокурс] Быстрый старт в языке DAX

 
 
Антон БудуевУспехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
 
 
 
 

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

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

Автор статьи:
Категория: Язык функций и формул DAX для Power BI и Excel (Power Pivot)

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

* Заполняя форму отправки комментария своими персональными данными (имя, email, сайт и др.), Вы автоматически подтверждаете свое согласие на обработку своих персональных данных


  1. Elena:

    Спасибо, очень полезная информация! Все получилось.
    Вопрос сопутствующий: добавляются ли данные в объединенную с помощью union таблицу, если дополняется одни из источников?

    1. Антон Будуев:

      да, конечно добавляются

  2. Alex Bi:

    Спасибо за пост.
    Все так и не понятно, как это работает в Power Pivot.
    Например в комбинации с SUMMARIZE (Union(table1, table2), field1, «ExpresName», sum(union table [field2])

    1. Антон Будуев:

      Дело в том, что в 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