Привет, Хабр! 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 движка это выглядит следующим образом:
Выглядит несколько абстрактно, но это всё, что требуется от пользователя для построения концептуального дашборда по этой DAX мере, остальное берет на себя AI DAX движок. Не нужна ни схема, ни имена полей и таблиц, ни тестовые данные, ни сопоставление типов полей в мере и в тестовых данных и т.д.
Имеет смысл сразу вывести все результаты и далее описать всё детальнее.
Хочется начать с "концептуального" дашборда
Звучит несколько абстрактно, но это действительно простейший дашборд на основе описанной пользователем меры, аналогичный Table View из dax.do.
Однако по сравнению с Table View из dax.do, представленная таблица-дашборд строится на основе актуальной схемы данных, не нужно сопоставлять типы и имена полей, переносить из dax.do на актуальную схему данных и т.д.
Также AI DAX движок генерирует исходные тестовые данные — имеется ограничение на 10 строк в таблицах. Таким образом, сгенерирована таблица sales
с 10 тестовыми строками для дашборда.
Если простить некоторые неудобства UI, то при необходимости можно сохранить такого вида таблицу, импортировать в Power BI, и дальше работать с ней в Power BI, соответственно, не потребуется заполнять тестовые данные вручную.
Наконец, AI DAX движок генерирует DAX с SUMMARIZECOLUMNS
, поскольку это стандартная основа для обычных таблиц дашбордов Power BI.
В отформатированном виде 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 с тестовыми данными, и сгенерировал пример дашборда.
Сам дашборд и DAX выглядят следующим образом:
Наконец, чтобы показать, что для получения дашборда от пользователя действительно ничего больше не нужно, все исходные данные и результаты вместе.
Также можно добавить, что, как и любой AI инструмент, AI DAX может быть устойчив к ошибкам DAX синтаксиса, позволяет работать с нестрогой формулировкой меры, и предоставляет другие аналогичные возможности гибкой работы.
Конечно, описанный «AI DAX движок» в текущем виде сырой, но надеюсь, он может быть полезен даже в таком виде для анализа мер аналитикам или как пища для размышлений разработчикам.
Желаю успехов в BI, дашбордах и AI!