Позднее Ctrl + ↑

Урок 3. Введение в DAX

Третий урок из курса Максима Уварова «Power Bi для интернет-маркетинга»

Видеолекции

Введение в DAX
Alberto Ferarri и Marco Russo — госу DAX.mp4

Материалы по теме:

Типы данных в столбцах DAX, встроенные вычисления для различных типов данных
Некоторые функции DAX, Меры
Визуализации на основе значений Мер

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

Вычисляемые столбцы, контексты выполнения функций
Связь таблиц Power BI.mp4
Применение функций sum, average, sumx, count, distinctount, домашняя работа
Смысл средневзвешенной.mp4

Полезные ссылки на английском языке:

Домашнее задание

В своей BI системе ко второму уроку удалите все запросы кроме «Stats» и «CampaignNames».

В модели данных (в видео я называл ее же «Power Pivot»), в таблице «Stats» создайте следующие меры для расчета метрик эффективности контекстной рекламы (обратите внимание, что я рекомендую называть меры начиная с символа «_»:

  • _CTR_spec (Кликабельность)  — Клики_spec / Показы_spec
  • _CPC (Цена клика)  — Расход / Все Клики
  • _Ставка Cредняя  — Average (ставка)
  • _Ставка СреднеВзвешенная на все клики  — Sumx(ставка*клики) / sum (клики)
  • _CR (Коэффициент конверсии фактический)  — Транзакции / Сеансы
  • _CPO (Стоимость заказа)  — IFERROR ( Расходы / Транзакции ; Расходы)
  • _Ключевая фраза количество уникальных  — DISTINCTCOUNT (Ключевая фраза)
  • _Финансовый результат  — Валовая прибыль-Расход
  • _ROI  — (Валовая прибыль-Расход) / Расход

Отформатируйте меры на риббоне на вкладке modelling

  • _CTR_spec, _CR, _ROI — в % с округлением до 1-го знака после запятой
  • *CPC, *Ставка Cредняя, *Ставка СреднеВзвешенная на все клики, _CPO, *Финансовый результат — в Рублях с округлением до 1-го знака после запятой

Постройте в области отчета 3 визуализации «Таблица» по срезам из названий кампаний:

  1. Region
  2. Network
  3. Изделие

И добавьте в эти таблицы созданные меры.

Эталонное выполнение домашнего задания

Максим Уваров выполняет домашнее задание урока 3

Файлы с выполненным домашним заданием

Шпаргалка курса и ментальная карта, ПДФ, 88 страниц, 13 Мб

Урок 2. Знакомство с Power Query

Знакомство с Power Query, загрузка данных из CSV файлов, типовые операции для аналитики контекстной рекламы

Второй урок из курса Максима Уварова «Power Bi для интернет-маркетинга»

Какие данные мы используем на курсе

Методическое пособие

Методическое пособие по Power BI — Пособие содержит полезную информацию по Power BI.

Видеолекции

Файлы урока

Назначение BI-систем и принципы их создания
Работа с csv файлами, операции над данными при помощи интерфейса
Возможности Power Query для анализа контекстной рекламы. Группировки и кастомные поля. В видео допущена ошибка на 40-й минуте

Про ошибку

В видео допущена ошибка на 40-й минуте: функция _Try_ не поможет в случае, если в формуле мы будем делить число на ноль.

В Power Query результатом деления числа на ноль является значение _Infinity_ — бесконечность, и это не будет ошибкой.

Поэтому _Try_ не отработает. Для описанных целей лучше использовать функцию _If then else_. Порядок: добавляем кастомный столбец и вписываем формулу

if [Транзакции] = 0
    then [Все расходы]
    else [Все расходы] / [Транзакции]
Присоединение данных — join
Самая главная метрика при анализе контекстной рекламы
Параметры Power Query. Файлы занятия

Больше про Параметры в Power Query в блоге Power BI

Задание типов данных

Домашнее задание

Файл: папка NFDPBI2-v20190728

Текущую домашнюю работу необходимо делать на основе файлов их архива, который прикреплен к домашнему заданию (не основному уроку)

Создайте запрос «Stats», который получает данные из файла «Printio_direct_keys_01.04-30.04_by_period_new.csv».

Создайте запрос «CampaignNames», который получает данные из файла «СampaignNames.csv».

Выключите загрузку запроса «CampaignNames» в модель данных.

В запросе «CampaignNames» создайте дубликат столбца с названием кампаний, поименуйте дубликат столбца одной буквой «К», разделите текст в столбце по разделителю «+».

Переименуйте столбцы

{"К.1", "Region"}, {"К.2", "ActOrReg"}, {"К.3", "Network"}, {"К.4", "AdSystem"}, {"К.5", "Изделие"}, {"К.6", "ИзготовлениеИлиМаркетплейс"}, {"К.7", "Тэг"}

Присоедините данные из запроса «CampaignNames» к запросу «Stats» по ключевому полю «Campaign id»

разверните все столбцы, убрав галку с поля [«Use original column name as a prefix»]
Убедитесь, что в столбцах «Ставка», «Все расходы» выставлен тип данных «Decimal» и цифры для ключевой фразы «world of tanks -купить -скачать» совпадают со значениями на скриншоте
В запросе «Stats» переведите значения столбцов «Расход», «Ставка» из у.е. в рубли (1 у.е. = 30 рублям). Для этого воспользуйтесь функцией на [вкладке Transform в группе Standard — Multiply]

В запросе «Stats» добавьте столбец «Валовая прибыль». Для этого умножьте значения столбца «Доход» на 0,2 (20%). 20% это теоретический коэффициент маржинальности рассматриваемого бизнеса.

Следующие запросы должны брать данные из запроса «Stats» при помощи функции Reference

Создайте запрос «Region», в котором подсчитайте агрегированные (суммарные) показатели по «Расходу», «Валовой прибыли», сгруппированные по столбцу «Region» (первого составного сегмента) из названий рекламных кампаний. Добавьте столбец «Финансовый результат» — от «Валовой прибыли» нужно отнять расходы. Данные с столбцах необходимо округлить до 1-го знака после запятой.

Создайте запрос «BestPhrases». В этом запросе определите топ 10 ключевых фраз, которые набрали более 200 показов в спецразмещении и CTR в спецразмещении которых оказался наибольшим.

Оставить первые строчки в таблице можно при помощи функции [«Keep top rows»]

Создайте запрос «NoSessions», в котором проверьте — есть ли в выгрузке фразы, которые получили больше 5 кликов, но у которых не было зафиксировано ни одного сеанса. Если такие фразы найдутся — это может свидетельствовать о нерабочих ссылках или отсутствующем счетчике на странице приземления.

Создайте запрос «NoRegions», в котором подсчитайте какая стоимость заказа (CPO, вычисляется по формуле Расходы / Транзакции) бы была в выгрузке, если бы мы выключили регионы (рекламные кампании с префиксом all_rf). На выходе должно получиться одно число или значение в одной строчке. Как сделать — думайте сами.

Эталонное выполнение домашнего задания

Выполнение домашнего задания

Файлы с выполненным домашним заданием

Шпаргалка курса и ментальная карта, ПДФ, 88 страниц, 13 Мб

Данные для курса «Power Bi для интернет-маркетинга»

Какие данные мы используем на курсе Максима Уварова «Power Bi для интернет-маркетинга»

В курсе «Power BI для интернет-маркетинга» мы изучаем примеры аналитики контекстной рекламы.

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

Мы используем выгрузку данных из сервиса K50 статистика.

Это данные из рекламной системы Яндекс Директ и системы веб-аналитики Google Analytics. Основные данные с которыми мы работаем:

  • Дата.
  • Фраза — ключевая фраза с минус-словами.
  • Заголовок объявления.
  • Текст объявления.
  • URL объявления с UTM-меткой.
  • Сеансы — количество визитов на сайт, которые зафиксировал Google Analytics. Это число может быть как больше так и меньше кликов, которые зафиксировал Яндекс Директ.
  • Отказы — количество сессий, в рамках которых была просмотрена только одна страница.
  • Длительность — время на сайте в терминах google analytics — продолжительность от первого просмотра страницы в рамках сессии до последнего просмотра.
  • Достижения цели «Visited Cart» — выполнение настроенной в системе вебаналитики цели «положил в корзину». Может быть достигнута лишь однажды в рамках сессии.
  • Просмотры — количество просмотренных страниц в рамках сессии.
  • Транзакции — количество оформленных заказов на сайте. В отличие от цели, в рамках
    сессии может быть совершено несколько заказов.
  • Доход — Стоимость товаров добавленных в корзину во время заказа.
Иерархия групп метрик

Полная методичка
Введение в аналитику интернет-маркетинга, ПДФ, 5 страниц, 138 Кб

Урок 1. Знакомство с Power BI

Знакомство с Power BI, примеры и получение данных из Liveinternet.ru

Первый урок из курса Максима Уварова «Power Bi для интернет-маркетинга»

Из чего состоит Power BI
Начало работы в Power BI

В дополнение к видео прошу держать в памяти, что Power Query в интерфейсе Power BI на английском языке называется Query Editor, а на русском — Редактор запросов.

Ссылки на счетчик Liveinternet:

Продолжение об извлечении данных Li и базовых знаниях Power BI
Проблемы с преобразованием даты

Модель данных Power Bi из урока 1

Домашнее задание

В предыдущей версии курса Максим предлагал студентам визуализировать данные из счетчика LiveIntenet.ru.
В новом курсе усложнил задание и добавил данные из сервиса Яндекс.Радар.

Ваша задача сравнить статистику по переходам из поисковых систем по данным счетчика LiveInternet и Яндекс.Радар.

Данные необходимо представить на двух листах по срезам:

  1. Десктоп
  2. Мобильные устройства

Подсказки

Данные из LiveInternet и Яндекс.Радара должны быть за одинаковые промежутки времени (у LiveInternet доступный период выгрузки меньше).

В Яндекс.Радаре необходимо выбрать группировку помесячно.

Чтобы получить ссылку на скачивание из Яндекс.Радара воспользуйтесь кнопкой в правом верхнем углу экрана и получите «Данные графика» в CSV

Данные должны быть преобразованы по принципам TidyData (метрика переходов находится лишь в одном столбце, группировки по операционным системам в другом столбце).

Столбцы «Доля» из выгрузки Яндекс.Радара нужно удалить.

Чтобы извлечь дату из выгрузки Яндекс.Радара воспользуйтесь функцией на вкладке Transform — Extract — Text Before Delimeter. В качестве разделителя используйте пробел.
Пример итогового отчета
Настройку цветов поисковых систем вы можете произвести в настройках визуализации (иконка «малярный валик») в блоке «Data colors»

Шпаргалка курса и ментальная карта, ПДФ, 88 страниц, 13 Мб

Power BI и полноценный Excel на Mac

Использование виртуальной машины на примере Parallels Desktop

Parallels desktop — это виртуальная машина, для обладателей Mac. Виртуальная машина это программа эмулирующая виртуальный компьютер и позволяющая установить в него другую операционную систему.
С помощью Parallels при запущенном Mac можно в отдельном окне можно запустить Windows и любые программы под Windows. При этом возможно полноэкранное использование.

Плюсы:

  • Интеграция с вашими папками и файлами на Mac
  • Для работы не нужно подключение к интернет

Минусы:

  • Нужен мощный компьютер. На Macbook air запустить Windows в Parallels удастся, но будет тормозить
  • Использует дополнительные ресурсы системы — место на жестком диске, оперативную память
  • Дополнительно нагружает батарейку
  • Parallels desktop — платный софт
Максим Уваров делится своим опытом использования Windows приложений под MacOs.

Дополнительная машина на Windows

Запуск Excel через дополнительную машину или сервер.
Вы ставите на стационарный компьютер Windows, устанавливаете Microsoft Office и подключаетесь с помощью удаленного рабочего стола, например через Windows RDP-клиент или CoRD.
Этот метод удобен для тех, кто большую часть времени проводит в Windows и не хочет дополнительно нагружать свой Mac.

Плюсы:

  • не нагружает систему, все вычисления происходят на стороннем компьютере,
  • не сажает дополнительно батарею.

Минусы:

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

Запуск через BootCamp — на маках с процессорами Интел

BootCamp позволяет отделить от вашего диска часть памяти, создать новый раздел и загрузить в него Windows. Разница с Parallels в том, что через BootCamp вы работаете с операционными системами по очереди. Чтобы переключиться, нужно перезагрузить систему.

Плюсы:

  • не нагружает систему.
    Минусы:
  • bootCamp работает на устаревших маках,
  • нужно перезагружаться, чтобы сменить операционную систему.

Microsoft Azure

Microsoft Azure предлагает виртуальные машины, которые можно запустить буквально за несколько минут. При этом вы можете развернуть свою копию Microsoft Office без дополнительных расходов из вашего аккаунта Microsoft.

По сути этот метод объединяет преимущества методов 1 и 2, за одним исключением — виртуальная машина оплачивается по часам, либо помесячно и тарифы

Плюсы:

  • не нагружает дополнительно систему,
  • не нагружает батарею

Минусы:

  • сервер оплачивается помесячно или по часам,
  • нужно подключение к интернет

Оригинальная статья

Power Bi для интернет-маркетинга

Курс Максима Уварова — эксперта и аналитика интернет-рекламы.

Максим — крутой аналитик, фанат Power BI и MS Excel:

  • MVP Microsoft,
  • автор курсов по аналитике в интернет-маркетинге,
  • основатель NeedForData.ru и Marketing-wiki.ru,
  • сооснователь K50.ru,
  • автор PQGoogleAnalytics и PQYandexMetrica,
  • много еще кто.

Благодаря Максиму я увлекся аналитикой, рекомендую его курсы.

Это приглашение на курс Максим записал в 2019 году

Курс продавался на платформе NeedForData. С 2023 года в свободном доступе.

Максим разрешил опубликовать курс у меня в блоге.

Курс будет находится в блоге пока Максим не попросит убрать его из доступа.

Для прохождения курса вам нужен компьютер с Windows, если у вас Mac, можно воспользоваться виртуализацией от Parallels.

Power BI и полноценный Excel на Mac — если у вас мак.

Английская версия Power BI — все видео курса были записаны в Power BI 64 English version.

Поехали

Урок 1. Знакомство с Power BI
Урок 2. Знакомство с Power Query
Урок 3. Введение в DAX
Урок 4. Извлечение данных
Урок 5. Визуализации
Урок 6а. Введение в моделирование данных
Урок 6. Выгрузка данных из счетчиков веб-аналитики
Урок 7. Введение в программирование Power Query
Урок 8. Продвинутый Power Query — Получение данных из различных API
Урок 9. Программирование Power Query
Урок 10. Продвинутый Power Query — Создание частотного словаря
Урок 11. Продвинутый DAX — прогнозирование конверсии
Урок 12. Продвинутый DAX — контексты и функции
Урок 13. Продвинутый DAX — DAX Patterns
Урок 14. Продвинутый DAX — Time Intelligence функции
Урок 15. Работа с порталом Power BI Service и Power BI Gateway
Урок 16. Работа с порталом Power BI, подключение к Power BI из Excel
Урок 17. Use relationship, функция для удаления стоп-слов
Урок 18. Создание меры с использованием таблицы параметров и функции Switch

Все уроки вышли

Подробное содержание курса

Поддержать автора рублями. Все перечисленные средства приходят Максиму Уварову.

Unpivot в Google Sheets

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

Есть когорта — в столбцах время прошедшее с момента месяца первой регистрации, строчки — время первой регистрации. Мы хотим ее перевернуть и получить данные по каждому месяцу

Вопрос: Как считали возраст? Между месяцами или между датами?

  • Если между датами, то 1-к-1 в календарную когорту перевести нельзя, так как у каждого юзера там свой собственный m0.
  • Если между месяцами, то можно просто “сдвинуть” все колонки вправо и заменить возраст на календарный месяц.

Мы считаем по второму варианту:

  • каждой оплате присваиваем первый день месяца оплаты,
  • каждой регистрации первый первый день месяца оплаты.

Наш вариант второй — между месяцами.

Наша когорта, линиями показано, из чего состоит каждый месяц.

Основная формула, для решения задачи:

OFFSET(C5,0,$B5))

возвращаем значение со сдвигом строки, для этого пронумеруем строки в минус.
Дальше if отрезает не нужное

Получившаяся помесячная когорта с выручкой.

Итоговая формула:

=IFERROR(IF(OFFSET(C3;0;$B3)=$B3;"";OFFSET(C3;0;$B3));"")

Таблица со всеми формулами

Календарь для обновляемых отчетов в Power BI Service

Обновление KillerDateTableRu, позволяющее делать обновляемые отчеты в Power BI Service

KillerDateTableRu — запрос, создающий таблицу с датами и различными столбцами для использования в Time Intelligence функциях.

Оригинальный запрос 2018 года обращался к сайту data.gov.ru и брал актуальную версию производственного календаря.

Проблема: data.gov.ru частенько недоступен, поэтому возможность обновлять данные только мешает. Потому что мешает BI-системам загруженным в облако использовать автоматическое обновление.

Функция KillerDateTableRu на гитхабе

Максим Уваров переделывает оригинальную функцию, чтобы содержала данные в себе и позволяла настроить обновление в BI-системах, содержащих эту функцию, в Power BI Service.

Оригинал статьи на needfordata

Cтрах, боль или возражение

Прислали тест на позицию маркетолога:

Посмотрите на это предложение: «Не знают как уместить мебель на кухне эргономично»

  1. Ответьте на вопрос: «Это страх, боль или возражение клиента»?
  2. Как вы это отработаете? Можете описать механику: через что и составьте пример.

«Это страх, боль или возражение клиента»? — «Не знают как уместить мебель на кухне эргономично»

Больше похоже на потребность клиента, то есть это боль.

Обычно потребности клиента используют при составление ментальной карты и портретов пользователей.

Как вы это отработаете? — «Не знают как уместить мебель на кухне эргономично»

Похоже что вопрос с подвохом, так как отрабатывать можно возражение.

Главное задать открытые вопросы. На открытые вопросы нельзя ответить односложно, а значит можно получить дополнительную информацию.

Вопросы которые начинаются со слов: как, что, зачем, почему — открытые.

На основании полученной уточненной информации можно и действовать дальше.

В данном случае можно задать наводящий вопрос: «Я понимаю что вопрос может показаться глупым, что значит эргономично?»

Возможно, ответ нас удивит, так как клиент может под этим понимать что он кухню будет использовать для как рабочий кабинет

Повторяем открытые вопрос и помогаем клиенту определиться

Типограф в гугл документах

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

Скрипт от Глеба Керамского написан на google apps script и легко адаптируется

Скрипт работает только в текущем документе

В оригинале скрипт можно запускать в определенном документе, для этого:
открываем наш гугл документ и переходим в Apps Script

Меню — расширения — Apps Script

Копируем код из скрипта Глеба и вставляем в наш скрипт

У Глеба на гитхабе код лежит в файле Code.gs

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

/**
 * @OnlyCurrentDoc
 */

Эта строчка позволит ограничить запуск скрипта текущим документом

Итоговый скрипт с нашим дополнением

Дальше мы сохраняем и переходим в гугл документ.

Для работы скрипта нужно перегрузить страницу, нажимаем CTRL+F5

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

Для применения скрипта нужно в каждом документе проделать следующие шаги:

  1. Зайти в гитхаб и скопировать скрипт.
  2. Добавить скрипт в google apps script.
  3. Перезагрузить документ.
  4. Выполнить скрипт.

Скрипт работает для любого документа к которому есть доступ.

Можно сделать один скрипт на все документы к которым есть доступ.
Для этого нужно сделать google apps script который не подключен к конкретному документу, для этого зайдите на гугл диск в любую папку, например «Скрипты», нажмите правой клавишей пункт Еще — google apps script

При таком создании, скрипт будет работать отдельно от документа

Рекомендую дать скрипту нормально название, например «Типограф», так будет проще искать по поиску на гугл диске.

Копируем в наш скрипт код из гитхаба Глеба.

Теперь нам нужно модифицировать скрипт

В функции typograf() комментируем строчку с выбором текущего файла, ставит две косые

//var body = DocumentApp.getActiveDocument().getBody();

Создаем новую переменную в которую будем вставлять урл нашего документа

var body = DocumentApp.openByUrl('https://docs.google.com/document/d/XXXXXXX');
Наши изменения скрипта

Сохраняем.

Теперь нам нужно подправить какой-то документ:

  1. Копируем его полный адрес
  2. Вставляем в переменную body — не забываем что адрес вставляется в одинарной в кавычках, у меня одинарная кавычка.
var body = DocumentApp.openByUrl('URL_DOC');

Сохраняем.

Осталось запустить, для этого в скрипте выбираем Типограф и кнопку «выполнить»

Если у вас не выбран типограф — нажимаем стрелочку вниз и выбираем.

Скрипт попросит авторизацию на возможное изменения всех документов, даем ему это разрешения.

После запуска скрипт запустится и оттипографирует ваш документ.

Если нужно, можно вставить ссылку на другой документ, а затем еще один.

Ранее Ctrl + ↓