Power BI на собеседовании BI-разработчика
Зачем Power BI на собесе BI
Power BI — стандарт enterprise-BI: банки (Сбер, Альфа, ВТБ), большой ритейл, корпоративный сектор. На собесе BI-разработчика Power BI спрашивают, если целевая компания на Microsoft-стеке.
DAX (Data Analysis Expressions) — особый язык формул Power BI. Без знания DAX в Power BI = слабая позиция.
Архитектура Power BI
Power Query (M language): ETL прямо в Power BI.
- Подключение к источникам (SQL Server, Excel, REST API, SharePoint)
- Преобразования: filter, merge, pivot, group
- Refresh по schedule
Data Model (моделирование):
- Tables + relationships
- Star schema (fact + dimensions)
- Calculated columns + measures (на DAX)
Visuals: charts, tables, KPIs.
Workspace / App: для команд и шаринг с пользователями.
DAX основы
Measures — динамические агрегации:
Total Revenue = SUM(Sales[Amount])
Avg Check = DIVIDE(SUM(Sales[Amount]), DISTINCTCOUNT(Sales[OrderID]))CALCULATE — изменение context фильтра:
Revenue Last Year = CALCULATE([Total Revenue], SAMEPERIODLASTYEAR(Calendar[Date]))Time intelligence:
Revenue YTD = TOTALYTD([Total Revenue], Calendar[Date])
Revenue MTD = TOTALMTD([Total Revenue], Calendar[Date])
Revenue MoM = ([Total Revenue] - CALCULATE([Total Revenue], PREVIOUSMONTH(Calendar[Date])))
/ CALCULATE([Total Revenue], PREVIOUSMONTH(Calendar[Date]))FILTER + ALL — explicit фильтры:
Top Categories Revenue =
CALCULATE([Total Revenue],
FILTER(ALL(Products), [Total Revenue] > 1000000))Модель данных
Star schema стандарт:
- Fact таблицы (Sales, Orders)
- Dimension таблицы (Calendar, Products, Customers, Regions)
- Relationships по PK / FK
Calendar table — отдельная dim, обязательна для time intelligence:
Calendar = CALENDARAUTO()
-- + calculated columns: Year, Quarter, Month, WeekDay, etc.Bi-directional vs single-directional relationships — best practice single. Bi только когда нужно.
RLS (Row Level Security)
Аналог DataLens RLS.
Реализация:
- Modeling tab → Manage Roles
- Создаём role «Regional Manager»
- Filter:
Regions[ManagerEmail] = USERPRINCIPALNAME() - Назначаем role на user в Power BI Service
USERPRINCIPALNAME() возвращает email текущего user.
Refresh и performance
Import mode: данные cached в Power BI. Быстрый дашборд, refresh по schedule.
DirectQuery: queries на лету в источник. Свежие данные, но slower UX.
Composite model: комбо.
Best practices:
- Star schema (не denormalized wide table)
- Calendar table separate
- Measures > calculated columns
- Minimize cardinality of relationships
- VertiPaq Analyzer — tool для аудита model size
Типичные вопросы
«Difference: measure vs calculated column?»
Measure: вычисляется на лету при расчёте, зависит от контекста фильтра. Calculated column: вычисляется при refresh, занимает storage.
Best practice: measures > calculated columns.
«Дашборд медленный. Что делаешь?»
- Check model size (VertiPaq Analyzer)
- Reduce cardinality
- Aggregate tables (composite model)
- Star schema если не star
- Remove unused columns
«CALCULATE — explain контекст»
CALCULATE меняет filter context. Применяет новые фильтры к expression. Базовый и most-used DAX function.
«DirectQuery vs Import?»
Import: faster UX, данные cached. DirectQuery: real-time данные, медленнее. Composite: гибрид.
Частые ошибки
- Wide table вместо star schema. Не масштабируется.
- Calculated columns везде. Increases storage. Measures лучше.
- Bi-directional relationships без причины. Циклы, performance.
- Без Calendar table. Time intelligence ломается.
- DirectQuery на 10M+ строк. Без агрегаций — медленный UX.
FAQ
Power BI или Tableau?
В РФ Power BI стандарт для enterprise. Tableau популярен в зарубежных компаниях и крупном ритейле.
Power BI Desktop vs Service?
Desktop — для разработки. Service — для шаринга. Premium / Pro для enterprise features.
DAX vs MDX?
DAX — современный, для Power BI / Tabular models. MDX — для multidimensional SSAS, legacy.
Где практиковать?
Power BI Desktop бесплатный. Open data + tutorials на learn.microsoft.com.
Сколько занимает выучить?
Базовый — 2 недели. Глубокий (DAX advanced + tuning) — 2-3 месяца.