Файлы для практики: AdventureWorksDW
Подключение к данным
Переходим к следующей компоненте — Power BI (Power Business Intelligence). Сначала подключимся к уже известной базе BenchWox DV. Фактически это уже хранилище данных (Data Warehouse, DWH).
Загрузка таблиц продукта
Забираем три таблицы: таблицу продуктов (Dim Product), таблицу категорий продуктов (Product Category) и таблицу подкатегорий продуктов (Product Subcategory). Это описание продукта, его подкатегории и категории, в которую подкатегория объединяется.
В таблице продуктов есть ключи и характеристики. По некоторым товарам подкатегория или стандартная себестоимость (Standard Cost) отсутствует. Это нормально: товар может быть заведён, но без детальной информации и ценовых характеристик. Для анализа оставим только товары, у которых заполнена стандартная себестоимость (Standard Cost). Пустые значения убираем.
Категории и подкатегории
В модели есть четыре категории: велосипеды, компоненты, одежда и аксессуары. Подкатегории объединяются в эти категории. Продукт относится к определённой подкатегории, а подкатегория — к категории. Так формируется иерархия продуктов.
Цены
В данных есть стандартная себестоимость (Standard Cost), листовая цена (List Price) и дилерская цена (Dealer Price). Для примера: у одного велосипеда Standard Cost равен 343 единицам. Standard Cost, List Price и Dealer Price нужно перевести в доллары. Листовая цена — это цена, по которой товар продаётся в магазине. Дилерская цена — закупочная цена у дилера.
Иерархическая визуализация
Добавим визуальный компонент для анализа по категориям и подкатегориям — дерево декомпозиции (Decomposition Tree). Вынесем в него категорию, подкатегорию и меры. Корневой узел (Root node) переименуем в «Продукт». Тогда все продукты делятся на четыре категории, а категории — на подкатегории.
Анализ средней цены продажи
Размер маркера лучше делать пропорциональным не сумме, а среднему (Average), иначе показатель будет искажать картину. Нужно по каждой подкатегории посчитать среднюю цену продажи. Тогда видно: самое дорогое — велосипеды, затем компоненты. Среди аксессуаров и одежды аксессуары имеют более высокое среднее значение, чем одежда.
Для подкатегорий можно смотреть значения и проценты. Например, горные велосипеды дают около 38% продаж внутри своей категории, городские — около 31%, дорожные — около 31%. То есть вклад подкатегорий в категорию велосипедов примерно сопоставим. Так можно анализировать вклад каждой иерархической единицы.
Сравнение List Price и Dealer Price
Дополним анализ дилерской ценой (Dealer Price). Отфильтруем категорию велосипедов, чтобы график оставался читаемым. Теперь выбраны две меры (Measure): средняя дилерская цена и средняя листовая цена. В дереве декомпозиции у центрального узла «Продукт» есть категория велосипедов, внутри неё — подкатегории, например горные велосипеды, и две меры.
Так в одной подкатегории, например дорожных велосипедов, можно одновременно видеть среднюю цену продажи и среднюю цену закупки у дилера. Несколько мер на одном графике позволяют наглядно представить сложные взаимосвязи и большой объём данных. Перейдём к следующему разделу.
Краткие итоги
Практическая ценность такого подхода — в переходе от разрозненных таблиц к управляемой модели, где продукт рассматривается через иерархию. Это даёт возможность быстро отвечать на вопросы о структуре ассортимента и ценах, не выполняя ручных сводок. Подготовка данных начинается с подключения к хранилищу и импорта измерений. Ключевой принцип — не анализировать всё сразу: записи без себестоимости или подкатегории способны исказить средние и доли, поэтому их лучше исключать из расчёта или обрабатывать отдельно. Такой фильтр повышает доверие к результату и делает выводы воспроизводимыми.
Следующий уровень — согласование единиц и смысла показателей. Цены должны быть приведены к одной валюте, а выбор меры должен соответствовать вопросу. Сумма показывает объём, но для сравнения цен она не подходит; среднее даёт сопоставимую базу между товарами и подкатегориями. Размер визуального маркера, привязанный к средней цене, помогает увидеть ценовые уровни, а доли подкатегорий — понять вклад в категорию. Это разделяет две разные управленческие задачи: где сосредоточены продажи и где выше цена. Один и тот же набор данных может давать разные выводы в зависимости от агрегации, поэтому аналитик обязан осознанно выбирать показатель.
Иерархическая визуализация превращает модель в инструмент навигации: от общего продукта к категории, затем к подкатегории и отдельным мерам. Сравнение цены продажи и закупочной цены в одной точке позволяет оценивать разницу между продажей и закупкой и замечать позиции, где высокая цена продажи не обязательно означает высокую прибыльность. Несколько мер на одном графике усиливают анализ, но требуют фильтрации, чтобы не перегружать восприятие. Практический результат — не просто красивый отчёт, а основа для решений: какие категории и подкатегории развивать, где пересматривать ценообразование, какие товары требуют уточнения данных. Такой подход соединяет качество данных, корректную метрику и визуальную интерпретацию в единый цикл принятия решений.
Подключаемся в Power BI (Power Business Intelligence) к хранилищу BenchWox DV. Импортируем три таблицы: Dim Product (продукты), Product Category (категории), Product Subcategory (подкатегории). Они формируют иерархию: продукт → подкатегория → категория. В данных есть пропуски: не у всех товаров заполнены подкатегория и Standard Cost (стандартная себестоимость). Для анализа оставляем только товары со Standard Cost, чтобы неполные записи не искажали расчёты.
В модели четыре категории: велосипеды, компоненты, одежда, аксессуары. Подкатегории объединяются в категории. Цены: List Price (листовая цена) — цена продажи в магазине, Dealer Price (дилерская цена) — закупочная цена, Standard Cost — себестоимость. Все цены переводим в доллары.
Добавляем визуальный компонент для анализа иерархии — дерево декомпозиции (Decomposition Tree). Корневой узел называем «Продукт». В него помещаем категорию, подкатегорию и меры. Для сравнения цен используем среднее (Average), а не сумму: сумма зависит от количества продаж, среднее показывает цену на единицу. Размер маркера привязываем к средней цене продажи, чтобы видеть ценовые различия. Смотрим доли подкатегорий: например, горные велосипеды дают около 38% внутри категории, городские и дорожные — примерно по 31%.
Затем добавляем Dealer Price. Чтобы график не перегружался, фильтруем категорию велосипедов. Теперь на одном графике две меры: средняя List Price и средняя Dealer Price. Внутри подкатегории, например дорожных велосипедов, видим среднюю цену продажи и закупки. Это позволяет сравнивать продажу и закупку и оценивать разницу между ними. Несколько мер на одном графике помогают анализировать сложные взаимосвязи наглядно.
1. Подключение Power BI к хранилищу позволяет работать с уже подготовленными данными.
2. Для анализа продуктов нужны таблицы продукта, категории и подкатегории.
3. Иерархия «продукт — подкатегория — категория» упрощает анализ ассортимента.
4. Товары без Standard Cost или подкатегории могут искажать расчёты.
5. Для корректного анализа неполные записи лучше исключать.
6. Цены Standard Cost, List Price и Dealer Price нужно приводить к одной валюте.
7. List Price отражает цену продажи, Dealer Price — закупочную цену.
8. Для сравнения цен подкатегорий корректнее использовать среднее, а не сумму.
9. Размер маркера по средней цене помогает увидеть ценовые различия.
10. Доли подкатегорий показывают их вклад в категорию.
11. Дерево декомпозиции позволяет детализировать данные от продукта к подкатегориям.
12. Несколько мер на одном графике помогают сравнивать продажу и закупку.
1. Зачем перед анализом подключаться к хранилищу, а не к разрозненным файлам?
2. Какие таблицы нужны для построения иерархии продуктов?
3. Почему товары без Standard Cost могут искажать анализ?
4. Как отсутствие подкатегории влияет на детализацию?
5. Зачем переводить Standard Cost, List Price и Dealer Price в одну валюту?
6. Чем List Price отличается от Dealer Price?
7. Почему для сравнения цен подкатегорий сумма хуже среднего?
8. Что показывает размер маркера при привязке к средней цене?
9. Как рассчитать вклад подкатегории в категорию?
10. Зачем переименовывать корневой узел в «Продукт»?
11. Как фильтрация категории влияет на читаемость графика с несколькими мерами?
12. Что можно понять, сравнивая среднюю цену продажи и дилерскую цену в одной подкатегории?