— Видишь SSAS-суслика?
— Нет…
— И я не вижу. А он есть!
(Кадр из к/ф «ДМБ»)
Поддержка относительно новой табличной (табулярной) модели данных, в противовес устоявшейся многомерной OLAP, встроена в целый ряд продуктов компании Microsoft. Начиная с SQL-сервера (SS) и заканчивая Excel. И если с SS всё понятно – в нём содержится отдельный сепаратный продукт SQL Server Analysis Services (SSAS). А как же решена поддержка языка DAX-запросов и прочей табулярной функциональности в Power BI, SharePoint или Excel? Поищем «суслика» на примере Power BI Desktop.
Думаю, многие замечали, что при установке на компьютер Power BI Desktop, параллельно разворачиваются структуры папок Microsoft SQL Analysis Services (SSAS) Это опциональный серверный компонент, входящий в состав высших редакций SQL-сервера от Microsoft (в частности редакций Enterprise и Business Intelligence). Он отвечает (как легко догадаться из названия) за аналитическую функциональность и, в частности, создание OLAP-кубов и доступ к ним, а, начиная с 2012-й версии, и за полноценную поддержку новой идеологии многомерных хранилищ данных – табулярной (или табличной) модели данных. Этого «зверька» придумали для поддержки поколоночного хранения данных (в отличие от стандартного для OLTP строкового хранения) и работы со всем набором данных в оперативной памяти (in-memory). Чуть более подробно тут.
Структура рабочих папок Power BI Desktop (Stand-alone установка)
Включение в десктопный софт серверных компонентов выглядит достаточно логично с точки зрения разработки и главное дальнейшей поддержки единообразия табулярной модели данных, общей и для флагманского серверного продукта, и для десктопной среды разработки и даже для Excel. В частности в Power BI Desktop просто интегрировали серверное ядро SSAS, отвечающее за поддержку этой самой табулярной модели и DAX-запросов к данным. При запуске приложения Power BI Desktop стартует движок xVelocity (в девичестве vertiPaq) встроенный в сервер SSAS, который и выполняет всю черновую работу по обслуживанию DAX-запросов, распределению нагрузки, управлению памятью и передачу результатов рендеру, который уже и отображает результаты в виде графиков, гистограмм, сводных таблиц (matrix) и других визуальных элементов, доступных в среде Power BI.
Что нам даёт это знание внутренней кухни? А то, что подобная модульная структура позволяет использовать Power BI Desktop в качестве тестового сервера аналитики без необходимости развёртывания полноценной среды SQL сервера c Microsoft Analysis Services. И без соответствующей лицензионной нагрузки (т. е. бесплатно). Безусловно, этот подход нельзя использовать в промышленных решениях. Однако для быстрого развёртывания тестовой инфраструктуры и проверки построенной модели данных ничего лучше и не придумаешь.
Советы домашнему мастеру
Для определения актуального номера порта, на котором запустился локальный «карманный» Analysis Services проще всего использовать потрясающий бесплатный инструмент, «швейцарский нож» для любого DAX-хакера DAX Studio. При подключении из DAX Studio к вашей модели данных (при этом необходимый PBIX-файл должен быть открыт в Power BI Desktop) в статусной строке приложения отобразятся параметры подключения (как на рисунке ниже), которые можно использовать, для доступа к этой модели данных из других приложений, например из Excel или другого экземпляра Power Bi Desktop локально или по сети. |
Номер порта при каждом следующем запуске PBI Desktop будет меняться. В моём примере это 52308. В вашем случае это будет, скорее всего, какое-то другое число из пула портов Power BI Desktop.
Для повторного подключения к этой модели данных потребуется уже не только случайно назначаемый номер порта, но и случайно генерируемое в виде GUID имя базы. Номер порта получается по методике, описанной выше, а идентификатор нужной БД (GUID модели данных) можно получить, сформировав в DAX Studio следующий SQL-запрос:
select * from $SYSTEM.DBSCHEMA_CATALOGS
В столбцах
CATALOG_NAME и DATABASE_ID
будет требуемое имя-GUID.
Локальное решение
По ссылке (125kB) доступен для скачивания разработанный мной PBIX-файл, который формирует список всех загруженных в память моделей данных (включая и встроенную в этот файл). Т. е. в списке будет столько строк, сколько PBIX-файлов запущено.
Disclaimer: Данный файл может быть использован только для демонстрационных целей и тестирования, предоставляется «как есть», со всеми багами, ошибками и прочая, на 90% сформирован через интерфейс Power Query / PowerPivot и не может служить хорошим примером для обучения программированию под Power BI.
Интерфейс программы
Для настройки, после нажатия на кнопку [Изменить запросы], следует изменить параметр
USER_NAME
и, возможно,
WORK_FOLDER
Советы домашнему мастеру
Power BI Desktop может быть развёрнут на локальном компьютере в двух разных режимах:
Первое скачивается с сайта https://powerbi.com и устанавливается в пару кликов как самое обычное приложение. Второе устанавливается через магазин Microsoft Store по поиску «Power BI» Бинарный код приложения в обеих вариантах один и тот же только в первом случае вам придётся самостоятельно следить за выходом новых версий приложения, релизы которого Microsoft печёт как блины. Штатная частота обновлений Power BI Desktop один раз в месяц, Power BI Reporting Services в среднем один раз в квартал. Установка через Microsoft Store избавит вас от контроля за обновлениями версий ПО, но есть небольшой (но отличный от нуля) шанс, что в обновлённой версии вы неожиданно столкнётесь с какими-либо проблемами, которых не наблюдалось в предыдущем релизе. Лично я на всякий случай держу обе редакции, регулярно пополняя личную коллекцию ежемесячными релизами PBI Desktop, чтобы иметь возможность откатиться на предыдущий. Ещё одной особенностью этих двух режимов является то, что каждый из них имеет свою структуру рабочих папок. Для настройки приведённого выше файла это важно (см. рисунок). |
Юрий Колмаков (McCow)
Автор: McCow