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.

Реализация:

  1. Modeling tab → Manage Roles
  2. Создаём role «Regional Manager»
  3. Filter: Regions[ManagerEmail] = USERPRINCIPALNAME()
  4. Назначаем 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.

«Дашборд медленный. Что делаешь?»

  1. Check model size (VertiPaq Analyzer)
  2. Reduce cardinality
  3. Aggregate tables (composite model)
  4. Star schema если не star
  5. 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 месяца.

Смотрите также