subquery.ru - dbt, clickhouse, cube – Telegram
subquery.ru - dbt, clickhouse, cube
649 subscribers
10 photos
1 video
46 links
SubQuery — автоматизация данных для аналитиков и data-инженеров.

Пайплайны, описанные кодом, с визуализацией и тестами, готовый dbt-стек c IDE, планировщик запусков и безопасная совместная работа.

𝗕𝗹𝗼𝗴
https://subquery.ru

𝗗𝗶𝗿𝗲𝗰𝘁
@mironovich
Download Telegram
​​Яндекс Метрика. Цели

Я обычно стараюсь играть по правилам. Даже в каком-нибудь нелюдимом захолустье терпеливо ожидаю зеленый свет на переходе, услужливо пропуская перекати-поле. Мы пришли, чтобы выиграть войну, а не битву или еще: этот максимум - локальный. 😎

Естественно, что и при редкой работе с Метрикой я всегда всё делаю согласно документации. Так вот, в этой самой документации есть любопытная ремарка касательно целей:

Внимание. Значение идентификатора 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
Apps noscript V8

В аппскрипте поменялся движок для выполнения JS. Теперь это V8, на котором работают сhrome и nodejs. Больше не придётся щелкать в голове тумблер, чтобы забыть привычные конструкции 🤓
Надеюсь, теперь это облако для бедных, станет чуть менее непопулярно.

У меня получилось включить V8, добавив "runtimeVersion": "V8" в корень манифеста: View - Show manifest file. Никаких опций Enable из гайда по ссылке я в своих скриптах не увидел.

https://developers.google.com/apps-noscript/guides/v8-runtime

Из менее интересного: в ЯМетрике теперь по умолчанию визиты атрибуТТТируются как в GA – по последнему известному источнику. Хорошая новость, потому что большинство юзеров по моему опыту, даже не знали, что это такое, и открывая отчеты, просто копипастили данные в общую эксельку с GA.

@Burgerdata
​​APP+WEB

Добавили возможность рисовать свои пути по сайту, в том числе шаги, предшествовавшие чему-то. То есть можно задать точку начала или точку конца, и достроить остальное.

У меня конечно далеко не лучший на планете G-счетчик для демонстрации, и в ближайшее время я переходить туда не планирую, но попытка хорошая 🤔

@Burgerdata
И жизнь стала чуточку лучше 😊
​​APP+WEB - Enhanced Ecommerce

В этом карантине работаешь весь день, и руки доходят даже до забытого бэклога. Вот и гугиль добавил наконец расширенный екоммерс в новый счетчик. Документация у них давно висела на сайте, но сам трекер должным образом не реагировал , теперь же шлётся что-то отличное от [object Object].

Дока для gtag
Дока для gtm

Глядишь, скоро и отчёты добавят, где эти данные можно будет нормально посмотреть.

@Burgerdata
📣 Здравствуйте, товарищи!

Сколько ж воды утекло.. и высохло.
Я успел поработать СберВоином, меня забанили в гугле, и, как и многим, мне пришлось полностью сменить стек.

Шаг за шагом это привело к тому, что мы с командой запустили SaaS для работы с данными, который я анонсирую завтра🧨
Конечно же буду активно навязывать его вам в грядущих постах.

А чего ещё можно ожидать?

А ещё мне необходимо побольше людей обращать в свою веру, и поэтому в канале будут появляться посты по актуальному для меня стеку:

🧦 dbt
🧦 Cube (семантический слой)
🧦 ИИ Агенты (ии слой)
🧦 ClickHouse
🧦 Trino
🧦 DuckDB
1
Мы с вами расстались в ковид.

Тогда на карантине много кто поднабрал. Стали большими мои данные, а с ними и счета за 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
Можно со своим репозиторием.
Надеюсь, это сэкономит ваши слёзы.🥹
🔥5
​​В subquery.ru есть файловый менеджер для работы с файлами 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/
🔥6
🚀 Новый релиз!

- Запросы в консоли можно разделять с помощью ; и запускать индивидуально
- Окно поиска поддерживает регулярки, выбор регистра и массовую замену!
- Добавлена команда 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
👍75👀3🔥2🤩2
AI в BI

Видимо, кто-то до сих пор верит, что 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🤩43👀3🆒3
🛠 Никто не заметил, а мы сделали

Мы давненько не писали апдейты, но это не значит, что ничего не происходило.
Коротко 👇

🔍 Поиск в dbt стал сильно умнее
Теперь можно искать регулярками, учитывать регистр и делать массовую замену сразу в файлах. Когда проект большой — это реально спасает время.

📊 Появились графики
Результаты запросов теперь можно не только смотреть таблицей, но и быстро визуализировать.

А еще:
— Копирование всех колонок одним действием (и из дерева БД, и из результатов запроса)
— Добавили команды dbt retry и dbt source freshness
— Починили удаление пользователей из команды (теперь без сюрпризов)

Без громкого релиза, но с кучей мелких улучшений, которые делают жизнь проще.
👉 Самое время вернуться и потыкать демоhttps://subquery.ru/
🔥1175
Макросы в dbt — это как суперспособности, только без укуса радиоактивного паука 🕷

Представь, что ты пишешь один и тот же SQL в десятый раз и думаешь: «Ну всё, я теперь SELECT-монах».

И тут появляются макросы.

Почему макросы — это польза, а не магия чёрной кухни:

🧠 Экономят мозг
Написал логику один раз — используешь везде. Мозг перестаёт кипеть, а кофе — остывать.

🧹 SQL становится чище
Вместо километров кода — аккуратный вызов макроса. Красота, порядок, почти как в комнате… ну, почти.

🔁 Меньше копипасты — меньше багов
Один макрос — одна ошибка максимум. А не «ой, тут я забыл поменять имя колонки».

🛠 Легко чинить
Поменял макрос — и все модели такие:
«О, спасибо, мы тоже обновились».

😎 Выглядишь как профи
Коллеги видят {{ my_cool_macro() }} и думают: «Хм, этот человек знает, что делает».

А если хочется не просто верить в силу макросов, а понять, как они работают на практике, особенно с ClickHouse, 👉 вот отличная статья, которая всё раскладывает по полочкам (без магии и жертвоприношений).

Итог простой: макросы в dbt — это когда ты ленив… но правильно. А правильная лень, как известно, — двигатель автоматизации 🚀
🔥116👍4🆒4
🎄 Новый год, новые мы

Рабочее место SubQuery — 990 ₽ в месяц

Мы обновили тарифы SubQuery.
С сегодняшнего дня стоимость рабочего места — 990 ₽ в месяц вместо 5 000 ₽, и это уже действует для всех текущих пользователей.

Мы проанализировали, как сервис работает на практике, пересобрали лимиты и упростили модель тарификации. Во многом это стало возможным благодаря нашим корпоративным клиентам 💚 — их реальные сценарии и деньги помогли нам лучше понять, каким должен быть тариф.

Заодно обновили лендинг — теперь стало проще разобраться, как устроен SubQuery и для кого он подойдёт.

👉 Если давно не заходили, сейчас хороший момент. Посмотреть, как мы принарядились → subquery.ru
🔥11🤩4😎3
С Новым годом!

Спасибо, что уделяете нам время в промежутках между адхоками, дагами и дашбордами. Надеюсь, вам за это воздастся 😅

В уходящем году https://subquery.ru наконец вышел в открытый доступ и начал набирать обороты после года внутренней эксплуатации.

В 2026 в комплект к dbt мы выкатим ещё несколько модулей:
- BI система
- потоки данных
- облачная СУБД

Зачем? Потому что можем 😆
И потому что у нас есть, чего сказать нового по этим темам 💪

Цензурную версию роадмапа можно посмотреть по ссылке:
👉 https://github.com/orgs/SubQueryLab
Фантастическая спрятана в жирных кулуарах

И да, это тот самый случай, когда аналитик действительно может повлиять на развитие продукта 😅

Желаю вам спокойного, но интересного и увлекательного года!
Мы подсобим 🎄
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉11🔥64