Урок 6а. Введение в моделирование данных
Шестой урок из курса Максима Уварова «Power Bi для интернет-маркетинга»
Моделирование данных
Рабочий файл: pbi моделирование данных v2.1d — YM+GA.pbix
Моделирование данных — это создание и настройка структуры таблиц и их связей в базе данных. Во время этого процесса мы определяем, какие данные где должны храниться и как между собой эти данные должны быть связаны.
Пожалуй, лучшие из специалистов по DAX Альберто Феррари и Марко Руссо посвятили отдельную книгу вопросам моделирования данных «Analyzing Data with Power BI and Power Pivot for Excel»
Их книга начинается со слов о том, что зачастую проблемы, с которыми обращаются к ним (как к консультантам) клиенты, когда все необходимые данные для конкретных расчетов загружены в базу данных, но формулы для этих расчетов становятся запредельно сложными, вызваны ошибками архитектуры модели данных. Если эти ошибки устранить, то формулы для необходимых вычислений станут проще и понятнее.
Рассмотрим пример. Нам нужно подсчитать разницу (абсолютную и относительную) в показаниях счетчиков Яндекс.Метрики и Google Analytics, установленных на проекте Marketing-Wiki.ru. Изменение этой разницы нам нужно отследить по годам.
В Power Query при помощи команды «Merge Queries» («Объединить запросы») эту операцию сходу сделать не получится, т. к. в таблицах есть несколько строчек с одной датой. И даже если бы получилось, то подобная таблица противоречила принципам tidy data — столбец с визитами дублировался бы дважды.
Создать таблицу календарь-справочник можно
в Dax при помощи функций:
в Power Query при помощи:
На видео создается таблица при помощи функции CALENDARAUTO.
calendar = CALENDARAUTO()Функция CALENDARAUTO сначала проверяет все столбцы в загруженных в модель данных таблиц и находит столбцы с форматом «Дата».
Далее для каждого найденного столбца функция ищет значение самой ранней и самой поздней даты.
Далее из всех значений она выбирает самую раннюю и самую позднюю дату. И создает календарь, начиная с 1 января года самой ранней даты до 31 декабря года самой поздней даты.
Если в загруженные таблицы добавятся новые даты, то таблица, созданная при помощи функции CALENDARAUTO обновится автоматически.
Когда мы переносим столбец в область значений, Power BI автоматически создает встроенную меру (implicit measure), в которой для числовых столбцов по умолчанию считает сумму, а для не числовых столбцов считает количество. Использование встроенных мер — это не оптимальная техника.
Лучше создать внешние меры (explicit measures) — меры явно подсчитывающие сумму по столбцу визитов каждой из таблиц.
Далее мы можем создать меры с подсчетом абсолютной и относительной разницы в числе визитов:
_ym-ga sessions = [_ym:sessions] - [_ga:sessions]
_ym/ga sessions = (YM[_ym:sessions] / GA[_ga:sessions])-1
Преимущество использования таблицы календаря-справочника
Рабочий файл: pbi 5а моделирование данных v2.1b — YM+GA.pbix
Если мы поставим уровень детализации визуализации «график-линия» до дней, то мы можем увидеть, что счетчик Яндекс.Метрики начал собирать данные позже, чем счетчик Google Analytics.
Для этого мы можем создать «Custom Column» в таблице «Calendar» и этот столбец будет проверять, что в конкретную дату у нас есть данные из обоих счетчиков.
FlagThereIsDataInYMAndGA = AND([_ym:sessions]>0;[_ga:sessions]>0)
После мы можем добавить на нашу визуализацию Slicer с появившимся столбцом «FlagThereIsDataInYMAndGA» и благодаря этому наши цифры будут пересчитаны.