Базы данных и режимы Import / DirectQuery

Подключаемся к базам данных и выбираем между Import и DirectQuery.

Import — данные копируются в память Power BI; DirectQuery — данные остаются в базе, Power BI шлёт запросы при каждом действии.

Зачем подключаться к базе напрямую

Файлы хороши для старта, но настоящие данные живут в базах: PostgreSQL, MS SQL Server, MySQL, ClickHouse. Прямое подключение убирает ручную выгрузку: отчёт сам берёт актуальные данные из боевой системы. Это и быстрее, и надёжнее, чем пересылать Excel по почте.

Как подключиться

«Получить данные» → выбираете СУБД (например, «SQL Server») → вводите адрес сервера и имя базы. В навигаторе появляются таблицы и представления — отмечаете нужные. Можно не тащить таблицу целиком, а написать SQL-запрос, который сразу отфильтрует и соединит данные на стороне базы.

SELECT o.order_date,
       o.amount,
       c.region,
       p.category
FROM orders o
JOIN customers c ON c.id = o.customer_id
JOIN products p  ON p.id = o.product_id
WHERE o.order_date >= '2025-01-01';

Такой запрос отдаст уже подготовленную «плоскую» выборку — но в Power BI чаще предпочитают тянуть таблицы по отдельности и связывать их в модели (об этом — целый раздел).

Import против DirectQuery

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

КритерийImportDirectQuery
Где данныев памяти Power BI (VertiPaq)остаются в базе
Скорость отчётаочень высокаязависит от базы, медленнее
Свежестьна момент обновлениявсегда актуальная
Объёмограничен памятью/лицензиейхоть миллиарды строк
DAX-функциивсечасть недоступна

Что выбрать

В 90% случаев — Import. Он быстрее, поддерживает весь DAX и проще в обслуживании; данные обновляются по расписанию (раз в час/день — достаточно для большинства задач). DirectQuery берут только когда данных слишком много, чтобы поместить в память, или когда нужна секундная свежесть (например, мониторинг производства в реальном времени). Платой за это будут медленные отчёты и ограничения языка.

Как работает под капотом

В режиме Import движок VertiPaq сжимает таблицы и считает агрегаты локально — отсюда скорость. В DirectQuery каждый клик по срезу превращается в SQL-запрос к базе: Power BI генерирует SQL «на лету», отправляет его серверу и ждёт ответ. Если база нагружена или запрос тяжёлый, пользователь почувствует задержку. Поэтому в DirectQuery критична оптимизация базы (индексы, агрегаты).

Частые ошибки

  • Выбирать DirectQuery «потому что так свежее». Для подавляющего большинства отчётов обновление раз в час через Import достаточно, а отчёт будет летать.
  • Тащить из базы все таблицы целиком. Берите только нужные столбцы и строки — лишнее раздувает модель.
  • Хранить пароль к базе в файле. Учётные данные настраиваются отдельно и не должны лежать в .pbix.

Итог

  • К базам подключаются через коннектор СУБД; можно отметить таблицы или написать SQL.
  • Import — быстро и полнофункционально (выбор по умолчанию); DirectQuery — для огромных объёмов и реального времени.
  • В DirectQuery каждое действие порождает SQL-запрос к базе.
Проверьте себя
1. Какой режим копирует данные в память Power BI и даёт максимальную скорость отчёта?
ADirectQuery
BImport
CLive Connection
DStreaming
2. Когда оправдан DirectQuery?
AВсегда, это современнее
BКогда данных слишком много для памяти или нужна мгновенная свежесть
CДля маленьких Excel-файлов
DКогда нужны все функции DAX