Привет, Хабр! Область Business Intelligence — одна из наиболее “интеллектуальных” по определению, и в аналитической работе в некоторых задачах особенно удобно использовать искусственный интеллект. Поэтому мы сегодня поговорим про чат-бота ViTalk GPT, который в некоторых задачах помогает очень быстро найти правильный ответ на поставленные вопросы, а иногда — даже скорректировать свой же вопрос с учетом возможностей платформы Visiology. В этой статье мы коснемся сильных и слабых сторон AI, проверим, смогут ли два слона поставить мат королю, и оценим сферу применения ViTalk GPT для аналитиков, разработчиков и даже бизнес-пользователей.
AI помогает делать многое, но при работе с современными сервисами часто возникают технические трудности — платная подписка, необходимость подключать VPN, потребность постоянно напоминать AI контекст предметной области и т.д. К счастью, для аналитики в DAX доступен бесплатный чат-бот ViTalk, который способен решать множество важных задач без лишних танцев с бубном.
Пример 1 — ViTalk для поиска по документации Visiology
Начнем с простого — с поиска. Всё чаще говорят о том, что поиск в Google отходит на второй план, и многие пользуются поиском через AI. Лично мне поиск информации через ChatGPT тоже нравится больше, т.к. для меня он выглядит намного более быстрым, точным, осмысленным и качественным, чем поиск Google. А также он не содержит рекламы — это приятно! Любителям ссылок на первоисточники и факт-чекинга можно пользоваться Copilot, который умеет добавлять ссылки на свои выводы.
Как же умеет искать ViTalk? Очень успешно, если применять его в нужном направлении. По документации Visiology (и за ее пределами) Виталик ищет отлично. Например, ответ на вопрос по поддерживаемому синтаксису логического И выглядит исчерпывающе.
Конечно, как и во многих AI, вопрос можно задать несколько раз, чтобы получить вариант ответа, который больше подходит. Но в любом случае Вы сами можете убедиться, что ответ соответствует справке.
Пример 2 — Логика Time Intelligence
Если у Вас есть вопросы по накопленному итогу, то ViTalk поможет найти способ ответить на них. Причем для этого достаточно текстового описания полей результата — не требуется даже описание схемы данных. Интересно, что при необходимости ViTalk сам применяет логику Time Intelligence и подсчитывает накопленный итог по продажам с начала года для нескольких лет.
Получаем следующий DAX от ViTalk:
SUMMARIZECOLUMNS (
YEAR('Sales'[SaleDate]),
MONTH('Sales'[SaleDate]),
"Accumulated Sales",
TOTALYTD (
SUM('Sales'[SalesAmount]),
'Sales'[SaleDate]
)
)
Пример 3 — Переименования и другая рутинная обработка DAX
ViTalk предоставляет удобные возможности AI редактирования DAX, в частности, переход на новую схему данных с новыми именами таблиц. Например, можно легко перевести запрос из предыдущего примера на новую схему данных с таблицей фактов Продажи (Дата, Сумма):
Получим следующий DAX от ViTalk:
SUMMARIZECOLUMNS(
YEAR('Продажи'[Дата]),
MONTH('Продажи'[Дата]),
"Накопленные продажи",
TOTALYTD(
SUM('Продажи'[Сумма]),
'Продажи'[Дата]
)
)
Пример 4 — Создание мер по описанию
В некоторых ситуациях, когда Вы понимаете, каким методом Вы хотите решить задачу, можно направить ViTalk GPT в нужном направлении и перечислить необходимые функции. Например, при текстовом описании меры для подсчета коэффициента проникновения по клиентам можно помочь ViTalk с тем, что хотим использовать REMOVEFILTERS(Customers).
В итоге получим DAX от ViTalk:
CustomerPenetrationRate :=
DIVIDE(
DISTINCTCOUNT(Sales[CustomerID]),
CALCULATE(
DISTINCTCOUNT(Customers[CustomerID]),
REMOVEFILTERS(Customers)
)
)
Неплохой результат, кстати, рабочий DAX! Также ViTalk приводит теоретическую справку о том, что такое коэффициент проникновения. Да, не всё идеально. Но в итоге мы получаем удобную заготовку, которую нужно немного подправить: заменить DISTINCTCOUNT(Customers[CustomerID]) на DISTINCTCOUNT(Sales[CustomerID]).
В итоге с помощью ViTalk и этого ручного фикса получим:
CustomerPenetrationRate :=
DIVIDE(
DISTINCTCOUNT(Sales[CustomerID]),
CALCULATE(
DISTINCTCOUNT(Sales[CustomerID]),
REMOVEFILTERS(Customers)
)
)
Пример 5 — Помощь с SQL в рамках ETL
Да, скрипты — это сильная сторона всех AI. Однако ViTalk не “заточен” непосредственно на SQL, и поэтому, если спросить его “в лоб”, без привязки к BI, то ответа не будет — и не должно быть!
Однако если переформулировать запрос и объяснить, какое это имеет отношение к BI, можно получить необходимый ответ.
Таким образом, видим ответ
SELECT
d::DATE AS date,
TO_CHAR(d::DATE, 'YYYY-MM-DD') AS date_string
FROM
GENERATE_SERIES('2020-01-01'::DATE, '2030-12-31'::DATE, '1 day'::INTERVAL) AS d;
Пример 6 — ViTalk помогает отказаться от глупых идей
ViTalk достаточно умен, чтобы не отвечать на отвлеченные вопросы. Так, методом пузырька ViTalk не проведешь :)
Понять и простить
Нужно иметь в виду, что ViTalk обладает всеми преимуществами и недостатками AI движков. Можно проиллюстрировать на примере ChatGPT, как самого популярного и развитого на сегодня сервиса. Не зря его создатели предупреждают нас:
ChatGPT can make mistakes. Check important info.
Рассмотрим достаточно простой вопрос к ChatGPT:
На шахматной доске остался белый король, два белых слона и черный король. Могут ли белые поставить мат черным?
Спойлер — вообще-то да, хоть и не так просто, но ответ ChatGPT вызывает грусть.
“Важно, чтобы угол доски был окрашен в цвет одного из слонов.” — т.е. не фиолетовый, наверно, с учетом того, что белопольный и чернопольный слоны ставят мат, а два белопольных или два чернопольных — нет, — это уже выглядит подозрительно.
И дальше совсем грустно:
Примерная матовая позиция:
Белый король: c6.
Белый слон: d5.
Другой белый слон: e7.
Черный король: a8.
В этой позиции черному королю некуда ходить, и это мат.
Да-да, “мат”. Хорошо, что хоть не бинго, аут или рыба. Занавес.
Этот пример показывает, что человек может всего за один или пару вопросов получить от AI некорректный ответ, и это нужно учитывать при работе с любым AI, в том числе и с ViTalk GPT, и в этом смысле не судить AI инструменты строго. Нужно понять и простить тот факт, что у них нет ощущения реальности, они опираются на информацию, которая может быть неточной; могут содержать какие-то несовершенные элементы в своих алгоритмах. Поэтому ViTalk, как и любой другой AI, не может полностью заменить аналитика, но зато может ускорить его работу и помочь с выбором операторов, генерацией скриптов и изучением Visiology во всех ее проявлениях.
Выводы
ViTalk может использоваться как поиск по документации Visiology и за её пределами
В работе с ViTalk можно повторно задавать вопрос, получать разные результаты и выбрать лучший
Если Вы знаете, что Вам нужно, можно самому подсказывать ViTalk, какие конструкции использовать, чтобы получить желаемый DAX
ViTalk предоставляет теоретическую справку, связанную с расчетами в DAX
ViTalk может автоматически переводить запросы на новую схему данных
ViTalk пошагово поясняет построенные DAX запросы
ViTalk успешно пишет скрипты для ETL
Однако Вам нужно учитывать, что имеет смысл проверять запросы от ViTalk и при необходимости вносить небольшие исправления. И чем сложнее задача, которую Вы решаете, тем больше внимания нужно уделить проверке. Я бы советовал воспринимать ViTalk как опытного специалиста, который дает вам совет — он не решает задачу за Вас, он делится опытом и рекомендует. А дальше — дело за Вами!
Надеюсь, перечисленные кейсы и практики помогут повысить эффективность построения дашбордов в Visiology.