Привет, Хабр! AI инструменты широко используются в разработке и других сферах, казалось бы, что ещё можно в них улучшить или добавить? Всё зависит от предметной области, в области Business Intelligence при работе с языком запросов DAX актуальными может быть работа с мерами и создание новых мер. Рутинной задачей при этом является создание схемы данных и заполнение её данными для каждой меры, или можно использовать уже имеющуюся схему, однако при этом при переходе с одной схемы (где выполняются запросы) на другую приходится переименовывать таблицы и столбцы, сопоставлять типы данных и т.д. В связи с этим актуальным может быть инструмент для создания схемы данных для меры "на лету" и выполнения запроса с мерой, т.е. построение запроса и дашборда (концептуально, без форматирования) по мере "на лету".

В dax.do можно строить DAX запрос только для существующих схем, т.е. приходится тратить время на переименование полей и таблиц в DAX запросе при переносе написанного DAX-запроса из dax.do.

В этой статье рассматривается решение такой проблемы — генерация схемы, связей, запроса и дашборда "на лету" (концептуально, по аналогии с отображением дашборда на основе DAX в dax.do), но только сугубо средствами AI, без реальных DAX движков. Надеюсь, такие инструменты или идеи могут быть полезны аналитикам и разработчикам для повседневной работы, если Вам интересен AI в DAX — добро пожаловать под кат :)

Несмотря на то, что генерация дашбордов через AI DAX движок существует лишь на сайте портфолио и пока нет более серьезной или удобной имплементации, им уже можно пользоваться.

Рассмотрим на примере простой меры:

Sum = SUMX(sales, sales[price] * sales[quantity])

Поскольку нет реального DAX движка, то можно добавить к мере текстовое описание, например, поле для группировки sales[productid]. Это уже вне синтаксиса DAX, просто как рекомендация для AI:

Sum = SUMX(sales, sales[price]* sales[quantity])
  by sales[productid]

В интерфейсе AI DAX движка это выглядит следующим образом:

Всё, что нужно от пользователя для построения дашборда в AI Powered DAX движке — ввод меры и комментариев к её построению
Всё, что нужно от пользователя для построения дашборда в AI Powered DAX движке — ввод меры и комментариев к её построению

Выглядит несколько абстрактно, но это всё, что требуется от пользователя для построения концептуального дашборда по этой DAX мере, остальное берет на себя AI DAX движок. Не нужна ни схема, ни имена полей и таблиц, ни тестовые данные, ни сопоставление типов полей в мере и в тестовых данных и т.д.

Имеет смысл сразу вывести все результаты и далее описать всё детальнее.

Результаты построения дашборда (концептуального) на AI DAX движке
Результаты построения дашборда (концептуального) на AI DAX движке

Хочется начать с "концептуального" дашборда

"Концептуальный" дашборд с предложенной мерой на основе AI DAX движка
"Концептуальный" дашборд с предложенной мерой на основе AI DAX движка

Звучит несколько абстрактно, но это действительно простейший дашборд на основе описанной пользователем меры, аналогичный Table View из dax.do.

Простейший дашборд Table View на основе DAX запроса из dax.do
Простейший дашборд Table View на основе DAX запроса из dax.do

Однако по сравнению с Table View из dax.do, представленная таблица-дашборд строится на основе актуальной схемы данных, не нужно сопоставлять типы и имена полей, переносить из dax.do на актуальную схему данных и т.д.

Также AI DAX движок генерирует исходные тестовые данные — имеется ограничение на 10 строк в таблицах. Таким образом, сгенерирована таблица sales с 10 тестовыми строками для дашборда.

Сгенерированные исходные данные в AI Powered DAX движке
Сгенерированные исходные данные в AI Powered DAX движке

Если простить некоторые неудобства UI, то при необходимости можно сохранить такого вида таблицу, импортировать в Power BI, и дальше работать с ней в Power BI, соответственно, не потребуется заполнять тестовые данные вручную.

Наконец, AI DAX движок генерирует DAX с SUMMARIZECOLUMNS, поскольку это стандартная основа для обычных таблиц дашбордов Power BI.

Сгенерированный DAX для дашборда и сам табличный дашборд из AI DAX движка
Сгенерированный DAX для дашборда и сам табличный дашборд из AI DAX движка

В отформатированном виде DAX выглядит следующим образом.

EVALUATE
SUMMARIZECOLUMNS (
    sales[productd],
    "Total Sales", SUMX ( sales, sales[price] * sales[quantity] )
)

Также можно сказать пару слов об имплементации «AI DAX движка», несмотря на то, что она достаточно проста. Использовался C#, и достаточно было создать API с OpenAI ключом через OpenAIAPI(...), создать чат через api.Chat.CreateConversation(), добавить условия DAX вывода через chat.AppendSystemMessage(...) и пример вывода chat.AppendExampleChatbotOutput(...). После этого для получения результата достаточно добавить запрос пользователя chat.AppendMessage(...) и прочитать результат через chat.GetResponseFromChatbotAsync().

Казалось бы, рассмотренная мера примитивна, и нужно что-то более сложное. Без проблем, например, мера

Доля = SUM(sales[amount])/CALCULATE(SUM(sales[amount], REMOVEFILTERS(calendar))

причем нам нужна группировка по месяцам sales[month]. Вот уже не совсем очевидный пример, и всё, что нужно сделать пользователю — это ввести

Доля = SUM(sales[amount])/CALCULATE(SUM(sales[amount], REMOVEFILTERS(calendar))
 by sales[month]

Готово, AI DAX создал таблицы sales и calendar с тестовыми данными, и сгенерировал пример дашборда.

Входные данные для AI DAX движка (мера и описания поля для группировки)
Входные данные для AI DAX движка (мера и описания поля для группировки)
Сгенерированные таблицы с тестовыми данными для дашборда
Сгенерированные таблицы с тестовыми данными для дашборда

Сам дашборд и DAX выглядят следующим образом:

DAX и дашборд с тестовыми данными на  основе AI DAX движка для меры, введенной пользователем
DAX и дашборд с тестовыми данными на основе AI DAX движка для меры, введенной пользователем

Наконец, чтобы показать, что для получения дашборда от пользователя действительно ничего больше не нужно, все исходные данные и результаты вместе.

Входные данные (мера) и дашборд и тестовые данные на основе AI DAX
Входные данные (мера) и дашборд и тестовые данные на основе AI DAX

Также можно добавить, что, как и любой AI инструмент, AI DAX может быть устойчив к ошибкам DAX синтаксиса, позволяет работать с нестрогой формулировкой меры, и предоставляет другие аналогичные возможности гибкой работы.

Конечно, описанный «AI DAX движок» в текущем виде сырой, но надеюсь, он может быть полезен даже в таком виде для анализа мер аналитикам или как пища для размышлений разработчикам.

Желаю успехов в BI, дашбордах и AI!

Комментарии (0)