Бизнес-аналитика с помощью Power BI

Модификация данных ODATA. Часть 1

Рассматривается модификация выгрузки продаж в Power BI (Power BI) для отчета. Показано, как таблица продаж связана с измерениями по внешним ключам (foreign key) и как Power BI автоматически подгружает данные из связанных таблиц. На примере заказа раскрывается переход к позициям заказа, выбор товара, цены и количества, создание вычисляемого столбца «Итог по строке» (Line Total) и подготовка данных к дальнейшему отчету.

Основные мысли

В результате изучения лекции слушатель будет способен:
1. Объяснять, как таблица продаж связана с измерениями через внешние ключи (foreign key).
2. Определять, какие связанные таблицы можно раскрыть в Power BI для получения нужных полей.
3. Раскрывать таблицу детализации заказа (Order Detail) и выбирать товар, цену и количество.
4. Создавать вычисляемый столбец «Итог по строке» (Line Total) на основе цены и количества.
5. Назначать денежный тип данным.
6. Удалять лишние поля и подготавливать выгрузку для отчета.
7. Различать идентификаторы и описательные атрибуты измерений.
8. Применять логику схемы «звезда» (star schema) или «снежинка» (snowflake schema) при работе с продажами.
Показывать лекцию целиком
Краткое изложение

1. Задача: изменить выгрузку под требования отчета

Нужно модифицировать выгрузку так, чтобы она соответствовала требованиям отчета. В конце таблицы продаж есть четыре поля, представленные как отдельные таблицы (Table) или записи (Record). Это связано с тем, что таблица продаж соединена с другими таблицами по внешнему ключу (foreign key).

В хранилище центральная таблица продаж по схеме «звезда» (star schema) или «снежинка» (snowflake schema) связана с измерениями (dimensions), в контексте которых существует продажа.

2. Связи таблицы продаж

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

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

3. Заказ и его детализация

В строке заказа хранится информация о заказе: идентификатор покупателя (Customer ID), идентификатор заказа (Order ID), идентификатор сотрудника (Employee ID). Но там только идентификаторы, без имен, фамилий и других атрибутов.

Эти данные находятся в связанной таблице сотрудника (Employee). При необходимости можно подгрузить адрес, день рождения, имя, фамилию сотрудника и другие связанные сведения. Также доступны даты заказа, даты доставки и другие поля.

Для анализа продаж нужно знать, какие продукты куплены и в каком количестве в рамках заказа. Вместо одной строки заказа нужно получить много строк — по товарам, проданным в каждом заказе.

4. Раскрытие Order Detail

Для этого раскрываем таблицу детализации заказа (Order Detail) по связи. Выбираем поля: идентификатор продукта (Product ID), цену за единицу (Unit Price) и количество (Quantity).

После подтверждения Power BI подгружает количество, цену и идентификатор проданного товара. Итога по строке (Line Total) и итогов за заказ здесь нет, поэтому это поле можно создать самостоятельно.

5. Создание Line Total

В разделе добавления столбца (Add Column) можно добавить произвольный столбец — настраиваемый столбец (Custom Column). Задаем имя Line Total и формулу: Unit Price * Quantity.

Так получаем итог по строке для соответствующего продукта. Затем меняем тип данных на фиксированное десятичное число (Fixed Decimal Number), то есть денежный тип. После этого итог по строке рассчитан.

6. Подготовка выгрузки

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

Краткие итоги

Практическая ценность работы с продажами в Power BI начинается с понимания модели данных. Центральная таблица фактов не содержит всех описательных сведений: в ней есть ключи, даты, количество и цена, но названия покупателей, сотрудников, товаров и другие атрибуты находятся в измерениях. Поэтому корректная выгрузка строится не как механическое копирование одной таблицы, а как развертывание связей, заданных в модели. Если связи определены, инструмент сам подтягивает связанные данные, и пользователю остается выбрать нужные поля. Это снижает ручную работу и уменьшает риск ошибок сопоставления.

Логика анализа продаж требует перехода от уровня заказа к уровню позиции заказа. Одна строка заказа отвечает на вопрос «кто, когда и через кого оформил заказ», но не показывает, какие товары и в каком количестве были проданы. Для этого нужно раскрыть детализацию заказа. После раскрытия появляются Product ID, Unit Price и Quantity. Эти поля становятся основой для расчета выручки по строке.

Создание Line Total как вычисляемого столбца показывает важный практический принцип: если в источнике нет готовой метрики, ее можно сформировать на этапе подготовки данных. Однако недостаточно просто перемножить два поля; нужно привести результат к денежному типу, иначе дальнейшие расчеты и отображение в отчете могут быть некорректными.

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

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

Цель — подготовить выгрузку продаж для отчета. Таблица продаж связана с измерениями по внешнему ключу (foreign key) по схеме «звезда» или «снежинка». В конце таблицы четыре связанных объекта типа Table/Record: покупатель, сотрудник, детализация заказа, доставка. Power BI видит определенные связи и автоматически подгружает данные из связанных таблиц. Можно выбрать нужные поля; склейка со строками продаж происходит автоматически.

В строке заказа есть Customer ID, Order ID, Employee ID, даты заказа и доставки, но нет имен и других атрибутов. Они лежат в связанных таблицах, например в Employee можно получить имя, фамилию, адрес, день рождения. Для анализа продаж одной строки заказа мало: нужно раскрыть Order Detail, чтобы получить товары, проданные в заказе. Выбираем Product ID, Unit Price, Quantity. После подтверждения подгружаются цена, количество и ID товара.

Готового Line Total нет. В разделе Add Column создаем Custom Column с именем Line Total. Формула: Unit Price * Quantity. Меняем тип на Fixed Decimal Number (денежный). Затем удаляем ненужные поля и выгружаем данные для дальнейшего отчета.

Выводы

1. Таблица продаж связана с измерениями по внешним ключам.
2. В конце таблицы продаж связанные таблицы отображаются как Table или Record.
3. Power BI автоматически подгружает данные из связанных таблиц, если связи определены.
4. В строке заказа есть только ID покупателя, заказа и сотрудника, без описательных атрибутов.
5. Атрибуты сотрудника, покупателя и другие сведения можно получить из связанных таблиц.
6. Для анализа продаж нужен переход от строки заказа к строкам проданных товаров.
7. В Order Detail выбираются Product ID, Unit Price и Quantity.
8. Line Total создается как настраиваемый столбец с формулой Unit Price * Quantity.
9. Для Line Total нужно задать тип Fixed Decimal Number.
10. Если готового Line Total нет, его можно рассчитать в процессе подготовки данных.
11. После обогащения данных лишние поля удаляются.
12. Подготовленная выгрузка используется для дальнейшего формирования отчета.

Вопросы для самопроверки

1. Зачем нужно модифицировать выгрузку перед построением отчета?
2. Как связана таблица продаж с измерениями?
3. Что означают значения Table и Record в конце таблицы?
4. Какие четыре связанные таблицы видны в примере?
5. Что делает Power BI, если связи между таблицами определены?
6. Какие идентификаторы есть в строке заказа?
7. Почему в строке заказа недостаточно данных для анализа товаров?
8. Какие поля нужно выбрать в Order Detail для анализа продаж?
9. Что показывает Quantity?
10. Как рассчитать Line Total?
11. Почему для Line Total важен денежный тип?
12. Что делают с ненужными полями перед выгрузкой?
Вернуться к учебному плану