Google Optimize server-side
Пока ждал ночных расчетов хайва, которые как обычно нужны срочно к понедельнику, решил записать про реализацию экспериментов на серверной стороне с помощью оптимайза, потому что всякие нюансы постоянно вылетают из головы. Авось, и вам пригодится.
Смотрим
https://burgerdata.com/blog/google-optimize-server-side/
@Burgerdata
Пока ждал ночных расчетов хайва, которые как обычно нужны срочно к понедельнику, решил записать про реализацию экспериментов на серверной стороне с помощью оптимайза, потому что всякие нюансы постоянно вылетают из головы. Авось, и вам пригодится.
Смотрим
https://burgerdata.com/blog/google-optimize-server-side/
@Burgerdata
Как работать с API
Длиннющая статья вышла, я даже сам не осилил прочитать, но, может, у вас получится.
Там про OAuth2 с примерами на js и python, довольно сумбурно, как сейчас думаю.
А еще пример полностью автоматического отчета с авторизацией, обновлением токенов и доставкой агрегата в телегу, чтобы больше времени у вас оставалось на интересные задачи.
https://burgerdata.com/blog/kak-rabotat-s-api/
Так-то 3 денька осталось. Шевелись, Плотва!
@Burgerdata
Длиннющая статья вышла, я даже сам не осилил прочитать, но, может, у вас получится.
Там про OAuth2 с примерами на js и python, довольно сумбурно, как сейчас думаю.
А еще пример полностью автоматического отчета с авторизацией, обновлением токенов и доставкой агрегата в телегу, чтобы больше времени у вас оставалось на интересные задачи.
https://burgerdata.com/blog/kak-rabotat-s-api/
Так-то 3 денька осталось. Шевелись, Плотва!
@Burgerdata
Datastudio - ownership
И еще одно долгожданное обновление: в Datastudio наконец можно передавать владельца дашборда. Отличная новость и для агентств и для клиентов, и я надеюсь, они не придерживали её специально до кристмаса 🤣
@Burgerdata
И еще одно долгожданное обновление: в Datastudio наконец можно передавать владельца дашборда. Отличная новость и для агентств и для клиентов, и я надеюсь, они не придерживали её специально до кристмаса 🤣
@Burgerdata
Tips: Google Spreadsheets
Эпичный тред с типсами по гугл шитам. Где-то в СНГ хватило бы на целый телеграм канал 😇
https://twitter.com/benlcollins/status/1217105023097802753
Ваша задача - вспомнить про них в нужный момент, что конечно же очень не просто.
@Burgerdata
Эпичный тред с типсами по гугл шитам. Где-то в СНГ хватило бы на целый телеграм канал 😇
https://twitter.com/benlcollins/status/1217105023097802753
Ваша задача - вспомнить про них в нужный момент, что конечно же очень не просто.
@Burgerdata
Twitter
Ben Collins
Mega thread of #GoogleSheets #productivity tips & tricks coming up... Starting with this humdinger Type “sheet.new” or "sheets.new" into your browser to instantly create a new Google Sheet (1/n)
GA Enhanced Ecommerce
Многие из вас наверняка сталкивались с ситуацией, когда информация о товарах не помещается в хит. В прошлом году я писал про один из многочисленных способов решения этой проблемы.
Так вот, господин Коке, имея кучу свободного времени в силу недавней скоропостижной безработицы, расписал чуть подробнее этот метод, и даже приложил небольшой apps noscript для автоматизации.
https://juliencoquet.com/en/blog/2020/01/21/google-analytics-ecommerce-upload-product-data-with-google-sheets/
@Burgerdata
Многие из вас наверняка сталкивались с ситуацией, когда информация о товарах не помещается в хит. В прошлом году я писал про один из многочисленных способов решения этой проблемы.
Так вот, господин Коке, имея кучу свободного времени в силу недавней скоропостижной безработицы, расписал чуть подробнее этот метод, и даже приложил небольшой apps noscript для автоматизации.
https://juliencoquet.com/en/blog/2020/01/21/google-analytics-ecommerce-upload-product-data-with-google-sheets/
@Burgerdata
Telegram
Burger Data
Enhanced Ecommerce
На днях в одном известном лысом финском издании вышла статья о передаче impressions через очередь, пакеты, customTask и даже один таймер на 60 секунд!
Ощутив после прочтения, как волосы покидают и меня, я попросил свою коллегу Елену протестировать…
На днях в одном известном лысом финском издании вышла статья о передаче impressions через очередь, пакеты, customTask и даже один таймер на 60 секунд!
Ощутив после прочтения, как волосы покидают и меня, я попросил свою коллегу Елену протестировать…
Яндекс Метрика. Цели
Я обычно стараюсь играть по правилам. Даже в каком-нибудь нелюдимом захолустье терпеливо ожидаю зеленый свет на переходе, услужливо пропуская перекати-поле. Мы пришли, чтобы выиграть войну, а не битву или еще: этот максимум - локальный. 😎
Естественно, что и при редкой работе с Метрикой я всегда всё делаю согласно документации. Так вот, в этой самой документации есть любопытная ремарка касательно целей:
Внимание. Значение идентификатора target не должно содержаться в URL страниц сайта. Иначе будет собираться некорректная статистика, учитывающая посещения страниц, содержащих в адресе значение, выбранное при создании цели.
Получается, что разница между целями типа js-событие и url есть только в интерфейсе для удобства юзера, в бэке же они все эти годы хранились вместе. А значит, мы можем фиксировать цели с js-событиями условиями для url.
Зачем?
В этом случае доступны проверки вхождения и регулярки, что наверняка оценят любителя автотегов, посылающие в Метрику что-то типа
Легально?
Тех поддержка не рекомендует пользоваться таким способом, так что сперва посмотрите на свой трекинг и подумайте, может ли быть хуже.
А ещё варианты?
Вместо это советуют пользоваться параметрами визитов, которые тоже, кстати, можно автоматизировать.
@Burgerdata
Я обычно стараюсь играть по правилам. Даже в каком-нибудь нелюдимом захолустье терпеливо ожидаю зеленый свет на переходе, услужливо пропуская перекати-поле. Мы пришли, чтобы выиграть войну, а не битву или еще: этот максимум - локальный. 😎
Естественно, что и при редкой работе с Метрикой я всегда всё делаю согласно документации. Так вот, в этой самой документации есть любопытная ремарка касательно целей:
Внимание. Значение идентификатора target не должно содержаться в URL страниц сайта. Иначе будет собираться некорректная статистика, учитывающая посещения страниц, содержащих в адресе значение, выбранное при создании цели.
Получается, что разница между целями типа js-событие и url есть только в интерфейсе для удобства юзера, в бэке же они все эти годы хранились вместе. А значит, мы можем фиксировать цели с js-событиями условиями для url.
Зачем?
В этом случае доступны проверки вхождения и регулярки, что наверняка оценят любителя автотегов, посылающие в Метрику что-то типа
{{Event Category}}_{{Event Action}}_{{Event Label}}Легально?
Тех поддержка не рекомендует пользоваться таким способом, так что сперва посмотрите на свой трекинг и подумайте, может ли быть хуже.
А ещё варианты?
Вместо это советуют пользоваться параметрами визитов, которые тоже, кстати, можно автоматизировать.
@Burgerdata
GTM Server-side
Клевые новости пришли с Superweek, который проходит сейчас в Венгрии. Брайан Кун (если я правильно разглядел фотку) анонсировал GTM для серверной стороны. Это решит очень много проблем с нагрузкой на клиент, с запретами на куки, кастомным стримингом данных и т.п.
Семён конечно уже вовсю излагает свои мыслишки
https://twitter.com/SimoAhava/status/1222459714614841346
@Burgerdata
Клевые новости пришли с Superweek, который проходит сейчас в Венгрии. Брайан Кун (если я правильно разглядел фотку) анонсировал GTM для серверной стороны. Это решит очень много проблем с нагрузкой на клиент, с запретами на куки, кастомным стримингом данных и т.п.
Семён конечно уже вовсю излагает свои мыслишки
https://twitter.com/SimoAhava/status/1222459714614841346
@Burgerdata
X (formerly Twitter)
Simo Ahava (@SimoAhava) on X
So, #GoogleTagManager introduced “server-side tagging”, at SuperWeek, which finally gives me a chance to unload some thoughts about it :)
Server-side tagging translates to a new “Server” container running on a cloud VM in your own domain namespace. 1/6
Server-side tagging translates to a new “Server” container running on a cloud VM in your own domain namespace. 1/6
Apps noscript V8
В аппскрипте поменялся движок для выполнения JS. Теперь это V8, на котором работают сhrome и nodejs. Больше не придётся щелкать в голове тумблер, чтобы забыть привычные конструкции 🤓
Надеюсь, теперь это облако для бедных, станет чуть менее непопулярно.
У меня получилось включить V8, добавив
https://developers.google.com/apps-noscript/guides/v8-runtime
Из менее интересного: в ЯМетрике теперь по умолчанию визиты атрибуТТТируются как в GA – по последнему известному источнику. Хорошая новость, потому что большинство юзеров по моему опыту, даже не знали, что это такое, и открывая отчеты, просто копипастили данные в общую эксельку с GA.
@Burgerdata
В аппскрипте поменялся движок для выполнения JS. Теперь это V8, на котором работают сhrome и nodejs. Больше не придётся щелкать в голове тумблер, чтобы забыть привычные конструкции 🤓
Надеюсь, теперь это облако для бедных, станет чуть менее непопулярно.
У меня получилось включить V8, добавив
"runtimeVersion": "V8" в корень манифеста: View - Show manifest file. Никаких опций Enable из гайда по ссылке я в своих скриптах не увидел.https://developers.google.com/apps-noscript/guides/v8-runtime
Из менее интересного: в ЯМетрике теперь по умолчанию визиты атрибуТТТируются как в GA – по последнему известному источнику. Хорошая новость, потому что большинство юзеров по моему опыту, даже не знали, что это такое, и открывая отчеты, просто копипастили данные в общую эксельку с GA.
@Burgerdata
Google for Developers
V8 runtime overview | Apps Script | Google for Developers
Learn about the Apps Script V8 runtime, including the modern JavaScript syntax and features it enables, and its specific limitations.
APP+WEB
Добавили возможность рисовать свои пути по сайту, в том числе шаги, предшествовавшие чему-то. То есть можно задать точку начала или точку конца, и достроить остальное.
У меня конечно далеко не лучший на планете G-счетчик для демонстрации, и в ближайшее время я переходить туда не планирую, но попытка хорошая 🤔
@Burgerdata
Добавили возможность рисовать свои пути по сайту, в том числе шаги, предшествовавшие чему-то. То есть можно задать точку начала или точку конца, и достроить остальное.
У меня конечно далеко не лучший на планете G-счетчик для демонстрации, и в ближайшее время я переходить туда не планирую, но попытка хорошая 🤔
@Burgerdata
APP+WEB - Enhanced Ecommerce
В этом карантине работаешь весь день, и руки доходят даже до забытого бэклога. Вот и гугиль добавил наконец расширенный екоммерс в новый счетчик. Документация у них давно висела на сайте, но сам трекер должным образом не реагировал , теперь же шлётся что-то отличное от
Дока для gtag
Дока для gtm
Глядишь, скоро и отчёты добавят, где эти данные можно будет нормально посмотреть.
@Burgerdata
В этом карантине работаешь весь день, и руки доходят даже до забытого бэклога. Вот и гугиль добавил наконец расширенный екоммерс в новый счетчик. Документация у них давно висела на сайте, но сам трекер должным образом не реагировал , теперь же шлётся что-то отличное от
[object Object].Дока для gtag
Дока для gtm
Глядишь, скоро и отчёты добавят, где эти данные можно будет нормально посмотреть.
@Burgerdata
📣 Здравствуйте, товарищи!
Сколько ж воды утекло.. и высохло.
Я успел поработать СберВоином, меня забанили в гугле, и, как и многим, мне пришлось полностью сменить стек.
Шаг за шагом это привело к тому, что мы с командой запустили SaaS для работы с данными, который я анонсирую завтра🧨
Конечно же буду активно навязывать его вам в грядущих постах.
А чего ещё можно ожидать?
А ещё мне необходимо побольше людей обращать в свою веру, и поэтому в канале будут появляться посты по актуальному для меня стеку:
🧦 dbt
🧦 Cube (семантический слой)
🧦 ИИ Агенты (ии слой)
🧦 ClickHouse
🧦 Trino
🧦 DuckDB
Сколько ж воды утекло.. и высохло.
Я успел поработать СберВоином, меня забанили в гугле, и, как и многим, мне пришлось полностью сменить стек.
Шаг за шагом это привело к тому, что мы с командой запустили SaaS для работы с данными, который я анонсирую завтра🧨
Конечно же буду активно навязывать его вам в грядущих постах.
А чего ещё можно ожидать?
А ещё мне необходимо побольше людей обращать в свою веру, и поэтому в канале будут появляться посты по актуальному для меня стеку:
🧦 dbt
🧦 Cube (семантический слой)
🧦 ИИ Агенты (ии слой)
🧦 ClickHouse
🧦 Trino
🧦 DuckDB
❤1
Мы с вами расстались в ковид.
Тогда на карантине много кто поднабрал. Стали большими мои данные, а с ними и счета за BQ.
В попытке сэкономить я эволюционировал от scheduled queries до dataform, с которого потом пришлось перейти на dbt.
Однако многим коллегам трансформация далась непросто, ведь для командной работы с dbt-core необходимо
⁃ установить python окружение, dbt и доп.пакеты
⁃ настроить подключение, проект, таргеты для прода и дева
⁃ освоить git: ветки, коммиты, конфликты, релизы
⁃ подключаться к ВМ по SSH с vpn, редактировать cron, разбирать логи
⁃ как-то ещё надо получать алерты об упавших моделях из расписания
⁃ всё это у нас умножилось на дюжину персон в отделе, десятки клиентов, проектов и сотни моделей
Коллегам было очень, очень тяжело. А ведь данные всего мира не стоят слезинки на щеке аналитика! 🥹
Какие были варианты?
⁃ освободить ставки, нанять инженеров и научить их работать с данными диджитал маркетинга
⁃ второй
Мы выбрали второй!
Тогда на карантине много кто поднабрал. Стали большими мои данные, а с ними и счета за BQ.
В попытке сэкономить я эволюционировал от scheduled queries до dataform, с которого потом пришлось перейти на dbt.
Однако многим коллегам трансформация далась непросто, ведь для командной работы с dbt-core необходимо
⁃ установить python окружение, dbt и доп.пакеты
⁃ настроить подключение, проект, таргеты для прода и дева
⁃ освоить git: ветки, коммиты, конфликты, релизы
⁃ подключаться к ВМ по SSH с vpn, редактировать cron, разбирать логи
⁃ как-то ещё надо получать алерты об упавших моделях из расписания
⁃ всё это у нас умножилось на дюжину персон в отделе, десятки клиентов, проектов и сотни моделей
Коллегам было очень, очень тяжело. А ведь данные всего мира не стоят слезинки на щеке аналитика! 🥹
Какие были варианты?
⁃ освободить ставки, нанять инженеров и научить их работать с данными диджитал маркетинга
⁃ второй
Мы выбрали второй!
🔥4
Встречайте https://subquery.ru
Мы постарались сделать удобный сервис для работы с dbt, чтобы технология была доступна не только инженерам данных, но и аналитикам и другим спецам со знанием SQL. Уже год он используется для обработки маркетинговых данных крупнейшего российского рекламодателя.
👂Какие функции есть?
⁃ поддерживаем адаптеры ClickHouse, PostgreSQL и принимаем заявки
⁃ sql редактор с подсказками, проверками и настройками под себя
⁃ граф моделей, поиск, таргеты, стриминг логов dbt
⁃ запуски по расписанию, удаленные запуски, бэкфилы, алерты
⁃ ветки, публикации, история версий и изменений
⁃ файловый менеджер S3
👂Что нужно, чтобы начать?
Опубликованная СУБД ClickHouse или PostgreSQL.
Мы предоставляем демо-проект для пробы, в котором конечно же не стоит вести дела.
👂Сколько стоит?
Небольшой проект можно вести бесплатно.
Что-то посерьезнее потребует постоплаты по числу рабочих мест.
Для энтерпрайза лимиты обсуждаются отдельном в каждом конкретном случае.
👂Что дальше?
dbt - первый этап. Позже мы добавим BI систему, коннекторы к источникам, облачную СУБД, свой счетчик и прочее. Есть открытый роадмап, вы можете повлиять на приоритеты.
Приглашаю попробовать https://subquery.ru
Можно со своим репозиторием.
Надеюсь, это сэкономит ваши слёзы.🥹
Мы постарались сделать удобный сервис для работы с dbt, чтобы технология была доступна не только инженерам данных, но и аналитикам и другим спецам со знанием SQL. Уже год он используется для обработки маркетинговых данных крупнейшего российского рекламодателя.
👂Какие функции есть?
⁃ поддерживаем адаптеры ClickHouse, PostgreSQL и принимаем заявки
⁃ sql редактор с подсказками, проверками и настройками под себя
⁃ граф моделей, поиск, таргеты, стриминг логов dbt
⁃ запуски по расписанию, удаленные запуски, бэкфилы, алерты
⁃ ветки, публикации, история версий и изменений
⁃ файловый менеджер S3
👂Что нужно, чтобы начать?
Опубликованная СУБД ClickHouse или PostgreSQL.
Мы предоставляем демо-проект для пробы, в котором конечно же не стоит вести дела.
👂Сколько стоит?
Небольшой проект можно вести бесплатно.
Что-то посерьезнее потребует постоплаты по числу рабочих мест.
Для энтерпрайза лимиты обсуждаются отдельном в каждом конкретном случае.
👂Что дальше?
dbt - первый этап. Позже мы добавим BI систему, коннекторы к источникам, облачную СУБД, свой счетчик и прочее. Есть открытый роадмап, вы можете повлиять на приоритеты.
Приглашаю попробовать https://subquery.ru
Можно со своим репозиторием.
Надеюсь, это сэкономит ваши слёзы.🥹
🔥5
В subquery.ru есть файловый менеджер для работы с файлами S3.
Так или иначе мы периодически сталкиваемся с ручными данными, занимаемся загрузкой\выгрузкой, поэтому решили, что удобно, когда всё рядом, и не надо ходить в утку.
Ну и конечно его использование бесплатно, если поступаете со своим бакетом.
Я включил в нашу документацию руководство по работе с S3 в ClickHouse.
https://docs.subquery.ru/files/guides/clickhouse-s3/
Так или иначе мы периодически сталкиваемся с ручными данными, занимаемся загрузкой\выгрузкой, поэтому решили, что удобно, когда всё рядом, и не надо ходить в утку.
Ну и конечно его использование бесплатно, если поступаете со своим бакетом.
Я включил в нашу документацию руководство по работе с S3 в ClickHouse.
https://docs.subquery.ru/files/guides/clickhouse-s3/
🔥4
Однажды человек пришёл к мудрецу и сказал ему:
- О, мудрейший, я хочу жениться и выбираю девственницу.
Мудрец вышел, а когда вернулся, то в руках он держал два..
В общем я надкусил Apache Iceberg, и если вы обещаете никому не говорить, то расскажу, как это было.
Сходим в 🪣 s3, одолеем чудовище по имени Nessie, вкусим DuckDB паштет, ну и Trino тоже поучаствует.
https://subquery.ru/blog/iceberg-trino-duckdb/
- О, мудрейший, я хочу жениться и выбираю девственницу.
Мудрец вышел, а когда вернулся, то в руках он держал два..
В общем я надкусил Apache Iceberg, и если вы обещаете никому не говорить, то расскажу, как это было.
Сходим в 🪣 s3, одолеем чудовище по имени Nessie, вкусим DuckDB паштет, ну и Trino тоже поучаствует.
https://subquery.ru/blog/iceberg-trino-duckdb/
SubQuery
SubQuery — инструменты Big Data. Облачный DBT
SaaS решение для работы с большими данными на основе DBT. Интуитивный облачный редактор для создания моделей данных.
🔥6
🚀 Новый релиз!
- Запросы в консоли можно разделять с помощью ; и запускать индивидуально
- Окно поиска поддерживает регулярки, выбор регистра и массовую замену!
- Добавлена команда dbt retry. Она основывается на записи в run_results, так что в персональной ветке зайдёт, а вот в коллективной отцом может оказаться любой.
- Оптимизировали работу с хранилищем результатов запроса. Теперь там всё по тирам с разными TTL и компрессией.
- General system stability improvements to enhance the user's experience.
- Запросы в консоли можно разделять с помощью ; и запускать индивидуально
- Окно поиска поддерживает регулярки, выбор регистра и массовую замену!
- Добавлена команда dbt retry. Она основывается на записи в run_results, так что в персональной ветке зайдёт, а вот в коллективной отцом может оказаться любой.
- Оптимизировали работу с хранилищем результатов запроса. Теперь там всё по тирам с разными TTL и компрессией.
- General system stability improvements to enhance the user's experience.
🔥8👏5🤩4
Семантический слой
Когда-то, работая аналитиками, мы делали сотни дашбордов.
Заказчики использовали их реже, чем обещали, дашборды теряли актуальность, а данные между ними неизбежно расходились.
Семантический слой позволил унифицировать данные, а его реализация с помощью Cube дала возможность вообще позабыть про дашборды, кроме отдельных случаев.
Вдобавок к этому недавно прошла конференция СБЕРа на тему использования AI в BI, где коллеги говорили про тестирование подходов в виде DataAPI или Text2SQL. А нам внедренный семантический слой позволил подключить агента меньше, чем за неделю(!)
Я написал пару статей о нашем опыте взаимодействия с Cube и надеюсь, что это поможет стать ему хоть чуточку популярнее
Сила атрибута meta в Cube
Как организовать тенанты в Cube
Когда-то, работая аналитиками, мы делали сотни дашбордов.
Заказчики использовали их реже, чем обещали, дашборды теряли актуальность, а данные между ними неизбежно расходились.
Семантический слой позволил унифицировать данные, а его реализация с помощью Cube дала возможность вообще позабыть про дашборды, кроме отдельных случаев.
Вдобавок к этому недавно прошла конференция СБЕРа на тему использования AI в BI, где коллеги говорили про тестирование подходов в виде DataAPI или Text2SQL. А нам внедренный семантический слой позволил подключить агента меньше, чем за неделю(!)
Я написал пару статей о нашем опыте взаимодействия с Cube и надеюсь, что это поможет стать ему хоть чуточку популярнее
Сила атрибута meta в Cube
Как организовать тенанты в Cube
👍7❤5👀3🔥2🤩2
AI в BI
Видимо, кто-то до сих пор верит, что SQL придумали для секретарш, и потому надеется научить ему ИИ. Обывателю кажется, что "подай-принеси" данные делать несложно, но мы-то с вами знаем, кого и куда порой приходится натягивать, чтобы всё сошлось, а ведь дата стюарды отнюдь нерезиновые!
Тем не менее позыв позитивный, и надо его поддержать. Так что в этой неравной битве встану на сторону машин, тем более что за рабочие места секретарш я спокоен.
Попробую разложить тизер из прошлого поста. Итак, я уверен, что нейросеть не должна генерить SQL.
Это плохо контролируемый процесс, а вольности тут недопустимы, отвечать-то всё равно нам.
Как быть?
Мы ведь с вами делаем дашборды, в которых заказчик может тыкать только выданные виджеты, фильтры, смотреть предустановленные метрики и срезы. Так вот с этими недосекретаршами ситуация аналогичная - их нужно ограничить.
🧞♂️ План
1️⃣ Описываем в кубе необходимые бизнес метрики со всякими сложными SQL выражениями, джойнами и прочим. Добавляем к ним дескрипшны.
2️⃣ Пишем MCP сервер с перечислением нужных нейросети инструментов. Для демки мы использовали библиотеку от верцеля. Также вам понадобятся Дима и Гриша.
3️⃣ Суём машине в контекст наши инструменты, инструкции по их использованию, а потом закидываем вопрос юзера. Если выплывет, устраиваем на полставки.
🧙♀️ Какие инструменты писать?
dataset_meta
Подносим ИИшнице меню на выбор, в нём перечень всех полей датасета с описаниями, т.е. meta куба.
dimension_values
Юзер редко знает, как точно называется продукт в базе, когда интересуется выручкой по нему. Так что пусть машина сбегает и посмотрит, какие варианты вообще есть.
get_date
ИИ уже такого от вас натерпелся, что первым делом по привычке спрашивает, как долго он был в отключке. Сверяем часы, если нужно, чтобы данные в ответах были актуальными.
dataset_query
Когда многомиллиардная разработка наконец осознаёт, что от неё хотят, то формирует json запроса в куб
Вишенкой стали методы для выбора и построения графиков, расчета позиции спавна виджетов и прочего визуального.
🦄 Как это выглядит?
🧚 Что надо учесть?
1. Можно использовать разные модели для планирования решения и реализации. Это скажется и на скорости и на стоимости, так многие делают.
2. За ИИ всегда надо проверять. В неудачных дублях скринкаста он дергал функцию генерации конфига виджета дважды, потому что первое изделие не прошло сертификацию. Мы используем zod, как в примере.
3. Мультитенантность и RLS тоже не стоит доверять нейросети, для этого потребуются низкоуровневые методы
4. ИИ получает доступ к данным. Передача ценных данных между юрлицами, а тем более трансграничная, не всегда допустима.
5. Видос я ускорил.
6. Всё равно кто-то попросит скриншот дашборда в мессенджер... каждый день
Видимо, кто-то до сих пор верит, что SQL придумали для секретарш, и потому надеется научить ему ИИ. Обывателю кажется, что "подай-принеси" данные делать несложно, но мы-то с вами знаем, кого и куда порой приходится натягивать, чтобы всё сошлось, а ведь дата стюарды отнюдь нерезиновые!
Тем не менее позыв позитивный, и надо его поддержать. Так что в этой неравной битве встану на сторону машин, тем более что за рабочие места секретарш я спокоен.
Попробую разложить тизер из прошлого поста. Итак, я уверен, что нейросеть не должна генерить SQL.
Это плохо контролируемый процесс, а вольности тут недопустимы, отвечать-то всё равно нам.
Как быть?
Мы ведь с вами делаем дашборды, в которых заказчик может тыкать только выданные виджеты, фильтры, смотреть предустановленные метрики и срезы. Так вот с этими недосекретаршами ситуация аналогичная - их нужно ограничить.
🧞♂️ План
1️⃣ Описываем в кубе необходимые бизнес метрики со всякими сложными SQL выражениями, джойнами и прочим. Добавляем к ним дескрипшны.
2️⃣ Пишем MCP сервер с перечислением нужных нейросети инструментов. Для демки мы использовали библиотеку от верцеля. Также вам понадобятся Дима и Гриша.
3️⃣ Суём машине в контекст наши инструменты, инструкции по их использованию, а потом закидываем вопрос юзера. Если выплывет, устраиваем на полставки.
🧙♀️ Какие инструменты писать?
dataset_meta
Подносим ИИшнице меню на выбор, в нём перечень всех полей датасета с описаниями, т.е. meta куба.
dimension_values
Юзер редко знает, как точно называется продукт в базе, когда интересуется выручкой по нему. Так что пусть машина сбегает и посмотрит, какие варианты вообще есть.
get_date
ИИ уже такого от вас натерпелся, что первым делом по привычке спрашивает, как долго он был в отключке. Сверяем часы, если нужно, чтобы данные в ответах были актуальными.
dataset_query
Когда многомиллиардная разработка наконец осознаёт, что от неё хотят, то формирует json запроса в куб
Вишенкой стали методы для выбора и построения графиков, расчета позиции спавна виджетов и прочего визуального.
🦄 Как это выглядит?
import { createMcpHandler } from '@vercel/mcp-handler'
import { z } from 'zod'
const handler = createMcpHandler(
(server) => {
server.tool(
'dataset_query',
'Get data with Cube query',
{
measures: z.array(z.string()),
dimensions: z.optional(
z.array(z.string())
),
filters: z.optional(
z.array(
z.object({
member: z.string(),
operator: z.string(),
values: z.array(z.string()),
})
)
),
// ...
})
})
🧚 Что надо учесть?
1. Можно использовать разные модели для планирования решения и реализации. Это скажется и на скорости и на стоимости, так многие делают.
2. За ИИ всегда надо проверять. В неудачных дублях скринкаста он дергал функцию генерации конфига виджета дважды, потому что первое изделие не прошло сертификацию. Мы используем zod, как в примере.
3. Мультитенантность и RLS тоже не стоит доверять нейросети, для этого потребуются низкоуровневые методы
4. ИИ получает доступ к данным. Передача ценных данных между юрлицами, а тем более трансграничная, не всегда допустима.
5. Видос я ускорил.
6. Всё равно кто-то попросит скриншот дашборда в мессенджер... каждый день
🔥7🤩4❤3👀3🆒3