Работа с измерениями

Завершено

При построении схемы типа "звезда" у вас будут таблицы фактов и измерения. Таблицы фактов содержат информацию о событиях, таких как заказы на продажу, даты отгрузки, торговые посредники и поставщики. Таблицы измерения хранят сведения о бизнес-сущностях, таких как продукты или время, и связаны с таблицами фактов через отношения.

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

Иерархии

При создании визуальных объектов Power BI автоматически вводит значения типа даты в качестве иерархии (если таблица не помечена как таблица дат).

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

Например, рассмотрим ситуацию, когда нужно создать линейчатую диаграмму с накоплением для общего объема продаж по категориям и подкатегориям. Чтобы выполнить эту задачу, создайте иерархию в таблице Product для категорий и подкатегорий. Чтобы создать иерархию, перейдите в панель Поля в Power BI и щелкните правой кнопкой столбец, для которого требуется иерархия. Нажмите Создать иерархию, как показано на следующем рисунке.

Затем перетащите столбец подкатегории в эту новую созданную иерархию. Этот столбец будет добавлен в качестве подуровня в иерархии.

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

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

Теперь, когда вы познакомились с иерархиями, можно двигаться дальше и приступить к изучению иерархий типа "родители-потомки" и их роли в многочисленных отношениях между таблицами фактов и таблицами измерения.

Иерархия типа "родители-потомки"

В следующем примере в базе данных есть таблица Employee, в которой содержится важная информация о сотрудниках, их руководителях и их идентификаторах. Глядя на эту таблицу, вы замечаете, что сотрудник Roy F повторялся несколько раз в столбце Manager. Как видно на рисунке, несколько сотрудников могут иметь одного и того же руководителя. Это иерархия между руководителями и сотрудниками.

Столбец Manager определяет иерархию и, следовательно, является родителем, а "потомками" являются сотрудники. В этом примере вам нужна возможность видеть все уровни этой иерархии. По умолчанию Power BI не отображает все уровни иерархии, поэтому вы должны проверить, видите ли вы все уровни этой иерархии или "сглаживаете" ее, чтобы можно было просматривать большую степень детализации данных.

Сведение иерархии типа "родители-потомки"

Процесс просмотра нескольких дочерних уровней на основе родительского элемента верхнего уровня называется сведением иерархии. В этом процессе вы создаете несколько столбцов в таблице, чтобы показать иерархический путь от родителя к потомку в одной и той же записи. Вы будете использовать простую функцию DAX PATH(), которая возвращает текстовую версию пути управления для каждого сотрудника, и функцию PATHITEM(), чтобы разделить этот путь по уровням иерархии управления.

Важно!

Мы еще не рассматривали DAX, это будет сделано в другом модуле. Эта функция включена в данный раздел, потому что она объясняет иерархии. Если использование DAX вас пока сбивает с толку, сначала изучите модуль DAX, а затем вернитесь к этому разделу.

Перейдите на вкладку Моделирование и нажмите Создать столбец. В появившейся строке формулы введите следующую функцию, которая создает текстовый путь между сотрудником и руководителем. Это действие создает вычисляемый столбец в DAX.

Path = PATH(Employee[Employee ID], Employee[Manager ID])

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

Если вы посмотрите на сотрудника Roger M, путь идентификаторов будет 1010 | 1011 | 1013. Это означает, что на один уровень выше Roger M (идентификатор 1013) находится его руководитель Pam H (идентификатор 1011), а на один уровень выше Pam H находится ее руководитель Roy F (идентификатор 1010). В этой строке Roger M находится внизу иерархии, на уровне потомка, а Roy F — вверху иерархии, на уровне родителя. Такой путь создается для каждого сотрудника. Чтобы выполнить сведение иерархии, можно разделить каждый уровень с помощью функции PATHITEM.

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

  • Level 1 = PATHITEM(Employee[Path],1)
  • Level 2 = PATHITEM(Employee[Path],2)
  • Level 3 = PATHITEM(Employee[Path],3)

Когда вы закончите, в вашей таблице будет существовать каждый уровень иерархии. Roy F находится на вершине иерархии. Проходя уровни 2 и 3, обратите внимание, что руководители и сотрудники сопоставлены друг с другом.

Теперь вы можете создать иерархию в панели Поля, как это делалось ранее. Щелкните правой кнопкой мыши уровень 1, так как это первый уровень иерархии, а затем выберите пункт создать иерархию. Затем перетащите в эту иерархию уровень 2 и уровень 3.

Теперь вы успешно выполнили сведение иерархии, чтобы просматривать отдельные уровни.

Ранее мы рассматривали измерения, которые имеют только одно отношение с таблицей фактов. Однако бывают ситуации, когда ваша таблица измерения имеет несколько отношений с таблицей фактов.

Ролевые измерения

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

На рисунке выше показан визуальный объект с таблицами Calendar, Sales и Order. Calendar — это таблица измерения, а Sales и Order — таблицы фактов. Таблица измерения имеет два отношения: одно с таблицей Sales и другое с таблицей Order. Это пример ролевого измерения, потому что таблицу Calendar можно использовать для группирования данных как в Sales, так и в Order. Если вы хотите создать визуальный объект, в котором таблица Calendar ссылается на таблицы Order и Sales, таблица Calendar будет действовать как ролевое измерение.