Розуміння "несподіваних" результатів на цьому етапі моделювання
Ще раз про зв'язки між таблицями і передачі контексту фільтрів
Power Query:
Підключення до папки з файлами - прайс-листами компанії
Реорганізація запитів по папках. Папка зі службовими запитами
Model:
Організація таблиці цін. Її зв'язки
DAX:
Контекст рядків і функції - ітератори
Відсутність автоматичної передачі контексту рядків між таблицями
Продажі з ПДВ, середня ціна відвантаження та інші: SUMX, AVERAGEX
Менеджери, що залишилися без бонусу, з бонусом >30% в загальній ЗП: COUNTX, IF
Мінімальний і максимальний бонус: MINX, MAXX
Форми власності клієнтів у менеджерів: CONCATENATEX
Табличні функції. Перше знайомство з VALUES і FILTER
Візуалізація таблиці - результату роботи табличній функції
Продажі з ціною відвантаження вище середньої
Visuals:
Тестуємо створені заходи у візуалізації
Існування і взаємодія оригінального контексту фільтрів і контекстів рядків у формулі Схожість результатів агрегаторів і ітераторів: коли використовувати ті чи інші?
Технічний і логічний погляд на модель даних
Денормалізація моделі: "за" і "проти"
DAX:
Групи форм власності, типи днів тижня та інші: два варіанти SWITCH
Використання текстових функцій і функцій дат: TRIM, DAY та інші
Логічні функції OR, AND і логічні операції ||, &&
Передача контексту рядків за допомогою RELATED і RELATEDTABLE. У чому між ними різниця?
Заходи: максимальний і актуальний прайс-листи - RELATEDTABLE, FILTER, MAXX
Model:
Створення нового макету "моделі даних". Денормалізована модель даних
Приховати технічні і службові таблиці, поля в поданні звітів
Використання і створення ієрархій: "Продукти", "Клієнти", "Географія"
Visuals:
Тестування створених заходів в візуалізації
Використання ієрархій для деталізації (drill-up, drill-down)
"Обчислювані стовпці" vs "заходи". Коли і як обчислюються Питання оптимізації: обчислювані стовпці в моделі або в Power Query?
Модифікація оригінального контексту фільтрів. Функція CALCULATE. Два типи фільтрів
DAX:
Перший тип фільтрів в CALCULATE: стовпець - операція порівняння
CALCULATE на одній таблиці: к-ть клієнтів - ФОП, сума повернень,% повернень в обороті
CALCULATE на декількох таблицях: % типів клієнтів в обороті, втрачені клієнти
Другий тип фільтрів в CALCULATE: фізична таблиця або таблична функція
% продукту в обороті,% корпорацій і інші: ALL, VALUES, FILTER в якості фільтрів
% клієнтів, які купили бренд # 1: функція VALUES, її особливості та використання
Особливий випадок VALUES: результат - одне значення. HASONEVALUE і SELECTEDVALUE
Клієнти, що відвантажались тільки один раз і клієнти, які придбали тільки один продукт
LOOKUPVALUE: випадок, коли вона знадобиться
Особливий випадок CALCULATE: без аргументів - фільтрів. Неявна CALCULATE в заходах
Використання CALCULATE в обчислюваних шпальтах і функціях - Ітератор
Visuals:
Тестування створених заходів в візуалізації. Інтерпретація результатів
Перетворення контексту рядків в контекст фільтрів
DAX:
Заходи - % від тотал (долі клієнтів, продуктів в загальному обороті): ALL з аргументом "таблиця"
ALL з аргументом "стовпець"/"стовпці". ALL vs VALUES: схожість і відмінності
Використання "швидких заходів" для створення заходів - % від тотал
% форм власності клієнтів в загальному обороті. Відмінність результатів ALL ("таблиця") від ALL ("стовпці") або ALLEXCEPT ("таблиця", "стовпчики")
Використання ISFILTERED і ISCROSSFILTERED для управління обчисленнями в мірах
Створення заходів - % по батьківському елементу в ієрархії
% в обороті тільки відібраних клієнтів: функція ALLSELECTED, особливості роботи
Visuals:
Тестування створених заходів і інтерпретація результатів з ALL ("таблиця") і ALL ("стовпці")
Поведінка ALLSELECTED при фільтрації на діаграмі, зрізі і панелі фільтрів
DAX:
Про FILTER і її аргументах більш докладно
Використання FILTER в CALCULATE і поза нею. Прості і складні умови без заходів
Використання заходів в умові FILTER. Неявна і явна CALCULATE в умові FILTER
Перетворення контексту рядків в контекст фільтрів всередині FILTER
Продажі і кількість клієнтів з оборотом понад 1 млн.
Кількість клієнтів з оборотом понад 1 млн. у менеджерів, які виконали план >90%
Кількість і продажі продуктів з відвантаженнями <1 тис. з продаваних
Декілька FILTER в CALCULATE vs одна FILTER зі складною умовою
Кількість і % повернених накладних: VALUES як перший аргумент FILTER
% клієнтів, які купували >70% асортименту продукції що відвантажується
Visuals:
Тестуємо роботу створених заходів
Існування кількох контекстів фільтрів і рядків усередині формули. Їх взаємодія Віртуальні таблиці та віртуальні зв'язки між таблицями, "проживаючі" всередині формули
DAX:
Функції Time Intelligence.
Вимоги щодо їх використання
Таблиця календаря, вимоги до неї
Як бути з нестандартними календарями
Задачи типа YoY, QoQ, MoM. SAMEPERIODLASTYEAR(), DATEADD(), PARALLELPERIOD() и подобные
Завдання типу YoY, QoQ, MoM. SAMEPERIODLASTYEAR(), DATEADD(), PARALLELPERIOD() та подібні
Visuals:
Робота YoY, Приріст/падіння YoY, YTD, Приріст/падіння YTD на комбінованих діаграмах
Настроювання умовного форматування для приросту/падіння
Напів-адитивні показники: розуміння та принципи роботи з ними
Нестандартні календарі та принципи роботи з ними
Power Query:
Підключення до таблиці "Баланс клієнтів"
Додавання календаря "4-4-5"
Model:
Зв'язок таблиць "Баланс клієнтів" та "4-4-5 Календар" з іншими таблицями в моделі
Двонаправлені зв'язки
DAX:
Завдання з напів-адитивними показниками. Баланс на кінець періоду - LASTDATE()
Модель "є баланс на різні дати": LASTNONBLANK(), CLOCINGBALANCEMONTH()
Універсальний випадок – модель "є баланс тільки на дати транзакцій"
Змінний середній оборот і згладжування методом ковзного середнього
Нестандартні календарі Завдання YoY, QoQ, MoM
Нестандартні календарі Завдання YTD, QTD, MTD
Нестандартні календарі Напів-адитивні показники та "ковзне середнє"
Visuals:
Динаміка обороту та згладженого обороту
Для чого потрібні незв'язані таблиці та техніка роботи з ними
Інструмент WHAT-IF-ANALYSIS, його обмеження та як вирішуємо будь-які подібні завдання без нього
Робота з кількома валютами
Категоризація та дискретизація безперервних значень
Перемикачі заходів у візуальних елементах звітів
Power Query:
Підключення до сайтів в Інтернеті (web-сторінкам)
Model:
Таблиці для класифікацій, категорізацій та зберігання констант
Таблиця курсів валют
DAX:
Вбудований інструмент WHAT-IF-ANALYSIS та вирішення подібних завдань без нього
Як вплине рівень плану його виконання?
Як вплине рівень знижок на рівень та динаміку продажів
Коригування базових заходів для роботи з різними валютами
Категоризація цін актуального прайс-листа
Формули стовпців, що обчислюються, з використанням значень з незв'язаних таблиць
Заходи для організації "перемикача метрик"
Visuals:
Зрізи вибору значень для аналізу "що-якщо"
Перемикач валюти звіту
Вибір/перемикання метрик, що відображаються у візуальних елементах
Техніки приведення детальних даних до вищого рівня деталізації
Техніки розподілу даних з високим рівнем деталізації за більш детальними рівнями
Звернення до попередніх ітерацій таблиць у формулах обчислюваних столців та ітераторів (EARLIER)
Використання змінних у формулах заходів та обчислюваних стовпців
Power Query:
Підключення до таблиці календаря з деталізацією рівня "місяць"
Model:
Додавання моделі таблиць для вирішення проблеми "кілька таблиць з даними різного рівня деталізації"
DAX:
SUMMARIZE() та угруповання рядків таблиці
EARLIER() та EARLIEST() для звернення до попередніх контекстів рядків у формулах
Робота зі змінними: VAR… RETURN …
Visuals:
Візуалізація "План-Факт"
Збалансовані та незбалансовані ієрархії
Модель "начальник - підлеглий"
Захист на рівні рядків таблиць. Створення та тестування ролей
Призначення ролей користувачам після публікації у службі Power BI
Динамічний захист на рівні рядків. Створення ролі та її тестування
Model:
Інструментарій для роботи з ролями у Power BI Desktop
Створення та тестування ролей
Передача контексту фільтрів двонаправленими зв'язками для захисту на рівні рядків
DAX:
PATH() та PATHITEM() для організації ієрархії в моделі "начальник - підлеглий"
PATHCONTAINS(), USERPRINCIPALNAME() для організації динамічного захисту
Розробка теми звіту. Використання вбудованих тем та галереї тем
Розробка Dashboard-подібної сторінки звіту
Деталізація (drill-up, drill-down). Сторінки деталізації та їх налаштування (drill-through)
Налагодження взаємодії візуальних елементів
Синхронізація зрізів
Використання зображень та налаштування подій. Закладки
Робота з панеллю фільтрів
Visuals:
Dashboard: Текстове поле, зрізи, датчик, вирва, зображення
Dashboard: Лінійчасті та кільцева діаграми
Dashboard: Каскадна діаграма та Карта
"За клієнтами" (сторінка деталізації): Лінійчаста та кільцеві діаграми, картки
"За клієнтами" (сторінка деталізації): Комбінована та точкова діаграми
Конфігурація спливаючих підказок: базові налаштування, розробка та налаштування сторінок підказок
Вбудований інструментарій для групування та дискретизації (banding & binning)
Робота з URL: статичні та динамічні URL
Робота із зображеннями: використання картинок у візуальних елементах
Умовне форматування у візуальних елементах
Налаштування мобільного подання
Публікація набору даних та звіту у службі Power BI
Model:
Угруповання: продукти Low-Sellers, Mid-Sellers та High-Sellers
Дискретизація числових полів та дат (binning)
Дискретизація: обчислення за іншою таблицею (на стороні "один")
DAX:
Заходи, що динамічно генерують URL-адреси
Динамічний URL у обчислюваному стовпці
Visuals:
Розробка та налаштування сторінки підказок
"За продуктами" (сторінка деталізації): візуалізація частотного розподілу
"За продуктами" (сторінка деталізації): використання зображень у багаторядкових картках