Привет! Область 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.
Автор: koanse