Привет, Хабр! Область 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.

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