Любое решение похоже на пирамиду, каждый новый уровень которой строится на основе предыдущего.
Применительно к этому принципу, ранее я демонстрировал проект myBI Showcase, в котором объединял блоки
— myBI Connect (Extract - Load tool)
— Clickhouse (Database)
— dbt (Transformations) + mybi-dbt-core module
— Metabase (Business Intelligence)
— Github Actions (Continuous Integration + Deployment)
⚡️ myBI Market showcase guides you through building Modern Data Stack analytics:
— Configure environment
— Install and configure mybi_dbt_core package
— Configure data sources
— Build staging layer models
— Model Data Marts
— Visualize on a dashboard
— Publish dbt project docs
— Introduce Continuous Integration
Иногда пирамиду сравнивают с айсбергом, 2/3 которого скрыты под водой (скрыты, незаметны для пользователя).
— Зачем мне изобретать свою БД, если я могу взять (например) Clickhouse?
— Зачем мне создавать и поддерживать свои Data Integrations / Pipelines ко множеству сервисов-источников, если это можно получить как готовое решение со стабильным результатом?
Я могу сфокусироваться на моделировании такой витрины, которая будет отвечать на 99% вопросов бизнеса и нести ценность компании.
В итоге, получалось красивое тиражируемое решение для менеджмента и владельцев бизнеса.
Недавно мои друзья из myBI Connect выпустили серию замечательных прикладных материалов по работе с платформой и её возможностями.
Бонусом 1.500 рублей на баланс аккаунта + диплом.
А я скоро подготовлю новый кейс и серию видео / публикаций:
— Bitrix как источник данных (myBI Connect)
— Clickhouse
— dbt (моделирование витрин)
—
—
— Github Actions (CI / CD)
Всё с учетом моего свежего опыта и знаний.
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Data Apps Design
🚀 Released myBI dbt Core and myBI Market showcase
⚙️ myBI dbt Core module allows quick start transformations on top of data synced by myBI Connect along with multiple useful macros.
— Supported Adapters: Clickhouse, PostgreSQL
— Reference any data source…
⚙️ myBI dbt Core module allows quick start transformations on top of data synced by myBI Connect along with multiple useful macros.
— Supported Adapters: Clickhouse, PostgreSQL
— Reference any data source…
🔥15👍3 1 1
Привет! Updates + ideas sharing за последние несколько недель:
Я фанат devcontainers, ранее неоднократно писал о них, напоминаю:
— Декларативно задал окружение для разработки (например, dbt-проекта)
— Установил все зависимости и библиотеки (python, dbt-snowflake, dbt-clickhouse)
— Указал необходимые features (e.g. docker-outside-of-docker, aws-cli, terraform)
— Задал Extensions (e.g. vscode-dbt-power-user, gitlens, vscode-pull-request-github)
— Дополнительные сервисы (например, Cube, Metabase в соседних контейнерах)
Ниже новые результаты:
— Давай делать регулярный image prebuild где-то на сервере, а на клиентах делать только pull, что сократит время сборки на порядок и позволит избежать ошибок
— Давай создадим репо, где в одном месте соберем набор универсальных devcontainers под мои нужды
— В качестве postCreateCommand давай проверим наличие всех утилит:
dbt -v, docker version, yc -v— Автоматически запустим набор инициализирующих команд как postStartCommand:
dbt deps, dbt run-operation initialize_dwh, obsutil config -i=$OBS_ACCESS_KEY_ID -k=$OBS_SECRET_ACCESS_KEY -e=$OBS_ENDPOINTРаботал над интеграцией данных одного из популярных сервисов через API.
— Изучил API, доступные методы и структуру данных
— Подготовил скрипт на Python, который осуществляет регулярные выгрузки данных
— В структурированный файловый формат .parquet с типизацией
— Доступны режимы: 'incremental' and 'historical' (any specified time period)
— Запускаю по расписанию как workflow в Github Actions
— Сам код и зависимости выполняются в контейнере (конечно, devcontainers)
— Уведомления об ошибках отправляет Tg-bot в указанную группу
Появилась идея писать универсальные интеграции с использованием некоего фреймворка. Рассматриваю dlt - data load tool.
Кто работал с dlt? Насколько интересный и качественный тул?
Проблема:
— В наличии множество Github Actions Workflows, которыми трудно управлять по-отдельности
— Workflows едва связаны между собой, привязка ко времени расчета (0 минут, 15 минут, 30 минут каждого часа)
— Сборка docker image осуществляется принудительно, не запускается автоматически при изменении в содержимое
— Сборка docker image игнорирует cache (docker layers)
— Примеры: собрать и опубликовать docker image, собрать DWH: dbt build, опубликовать документацию: dbt docs, проверить актуальность данных: dbt source freshness
Решение:
— Собрать связанные задачи и действия в единый workflow
— Всегда актуализировать среду выполнения (docker image) опираяюсь на изменения в коде
— Оптимизировать подготовительные шаги (docker build) с помощью использования cache
Ключевые результаты:
— Единый workflow-файл для всех задач dbt PROD deployment
— Актуализация среды исполнения кода как предварительный шаг для каждого запуска
— Возможность reusing workflow files (т.е. использовать один шаблон)
Проблема:
— В dbt зарегистрировано множество источников, но порядка и полноценного понимания что есть что нет
— Невозможность указать схему данных вручную приводит к невозможности читать источник данных
— Некоторые схемы-источники доступны только в одном экземпляре (сразу для DEV, TEST, PROD), а необходима возможность каждому иметь свою версию
Решение:
— Использовать STAGES (Snowflake), NAMED COLLECTIONS (Clickhouse) для создаваемых интеграций (S3, PostgreSQL, MySQL, etc.)
— Поддержка схемы данных (список таблиц, колонок, типов данных)
— Возможность для каждого пользователя создавать свои экземпляры таблиц-источников данных для интеграций с помощью dbt macro
Ключевые результаты:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3❤1
— Все интеграции создаются через STAGES, SNOWPIPES, NAMED COLLECTIONS - забыли про указание токенов, секретов, адресов, логинов, паролей, ключей для БД-источников
— Возможность указывать (подмножество колонок, явное указание типа данных) и не указывать (
— Заполнение всех данных по каждому источнику: docs, freshness, tags
🔴 dbt test (CI) - полноценный конвеер Automated Tests с Github Actions 🔴
Ключевая идея в том, чтобы в независимом окружении (TEST) собрать проект и убедиться, что результаты соответствуют ожиданиям:
— Код в принципе работает (compile)
— Модели собираются в объекты в БД (run)
— Пройдены все тесты (test)
При этом сделать это оптимальным образом:
— Единый универсальный workflow для всех задач CI
— Уменьшенный объем данных (быстро)
— При необходимости, только изменяемый подграф - DAG subset (еще быстрее)
Once PR is opened:
— Build related docker image
— Deploy code to TEST
— Run tests
After PR is closed (merged or rejected):
— Remove transient database schema
— Remove linked docker image as well as old/untagged images from container registry
✅ Скоро добавлю мысли и по этим идеям: ✅
— Разрабатываю и тестирую Github Actions локально с Act CLI + actionlint
— Persist docs - Автоматически актуализировать документацию/описания объектов dbt в DWH и далее (downstream)
— Пирамида создания ценности в Data
— Мне очень понравился Apache Superset и впредь я бы рекомендовал его как замену популярным managed / proprietary BI (Looker, Datalens, Tableau, PowerBI, etc.)
— Квест с поиском исчезнувших записей - Debezium, Kafka Connect, Snowflake Sink
— Data Compaction в Object Storage (S3 / OBS / MinIO) - множество мелких файлов в один .parquet
— Clickhouse production-ready deployment checklist + configurations as code
— В целом кристаллизовались идеи по поводу направлений (видов) деятельности в Data
— 2025Q1 PERFORMANCE SELF REVIEW + PLANS
💬 А пока - давайте обсудим!
Давно не общались. У кого какие новости?
🌐 @data_apps | Навигация по каналу
— Возможность указывать (подмножество колонок, явное указание типа данных) и не указывать (
SELECT *) схему данных для создаваемых таблиц-источников— Заполнение всех данных по каждому источнику: docs, freshness, tags
Ключевая идея в том, чтобы в независимом окружении (TEST) собрать проект и убедиться, что результаты соответствуют ожиданиям:
— Код в принципе работает (compile)
— Модели собираются в объекты в БД (run)
— Пройдены все тесты (test)
При этом сделать это оптимальным образом:
— Единый универсальный workflow для всех задач CI
— Уменьшенный объем данных (быстро)
— При необходимости, только изменяемый подграф - DAG subset (еще быстрее)
Once PR is opened:
— Build related docker image
— Deploy code to TEST
— Run tests
After PR is closed (merged or rejected):
— Remove transient database schema
— Remove linked docker image as well as old/untagged images from container registry
— Разрабатываю и тестирую Github Actions локально с Act CLI + actionlint
— Persist docs - Автоматически актуализировать документацию/описания объектов dbt в DWH и далее (downstream)
— Пирамида создания ценности в Data
— Мне очень понравился Apache Superset и впредь я бы рекомендовал его как замену популярным managed / proprietary BI (Looker, Datalens, Tableau, PowerBI, etc.)
— Квест с поиском исчезнувших записей - Debezium, Kafka Connect, Snowflake Sink
— Data Compaction в Object Storage (S3 / OBS / MinIO) - множество мелких файлов в один .parquet
— Clickhouse production-ready deployment checklist + configurations as code
— В целом кристаллизовались идеи по поводу направлений (видов) деятельности в Data
— 2025Q1 PERFORMANCE SELF REVIEW + PLANS
Давно не общались. У кого какие новости?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
Data Apps Design pinned «⛈ Universal dbt deployment (CD) and testing (CI) workflows, Data Integration via dlt, devcontainers advancements Привет! Updates + ideas sharing за последние несколько недель: 🟡 Мгновенные универсальные и идентичные среды разработки на базе devcontainers…»
Artemiy Kozyr
У нас недавно был классный выпуск подкаста со множеством тем, ситуаций и прогнозов по развитию.
Если у вас всё же остаются вопросы и живой интерес к теме, либо вы на пути внедрения Cube в свои проекты, то приглашаю вступить в Tg-группу Cube.js русскоговрящий чат
— Зачем мне в 2025 семантический слой
— Production checklist / Architecture
— BI-интеграции (Superset, Metabase, Tableau и др.)
— Семантические слои в целом – best practices в B2B-аналитике и data-инфре
— Разница между Cube core / Cube cloud / Synmetrix
— И прочие
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Салют!
Выступлю в Сочи на площадке ИТ-хаба СБЕР
У меня будет ~30 минут чтобы зарядить вас, сделать увлекательно, интересно и познавательно:
— Ликбез для тех, кто пока не в курсе, что такое dbt
— Обзор эволюции развития dbt и продуктов dbt Labs
— Зачем вам dbt? Сравнение До / После
— Лучшие практики без воды после моих 5+ лет в проде
Регистрация: https://public.oprosso.sberbank.ru/p/hw0rd7yo
Запись тоже постараюсь сделать.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥7
Привет,
По следам доклада на ОФФЛАЙН митапе в Сочи:
🏆 dbt - индустриальный стандарт для трансформации данных в DWH
✍️ Позволяет писать, тестировать, документировать трансформации как SQL-код
☁️ Работает поверх современных облачных и on-premise платформ (Snowflake, BigQuery, Redshift, Databricks, Postgres и др.)
🏆 Использует лучшие практики разработки: версионирование, модульность, CI/CD, документация
Было много вопросов и заблуждений по поводу концепта dbt, поэтому дублирую:
— С т.з. манипуляции данными dbt умеет ровно столько, сколько умеет ваша аналитическая БД
— dbt не пропускает данные через себя, а лишь "раздает" команды БД, которая выполняет все операции (heavy lifting)
— dbt это просто python package с удобным CLI
— Рассматривайте dbt как мультитул-автоматизацию для работы с вашей аналитической БД
— Тема вызвала живой интерес и поток вопросов (которые продолжились после выступления)
— Отметил, что даже сложные концепты в подаче с простыми примерами и доступными формулировками легко воспринимаются даже неподготовленным слушателем
— Обрел старых (Станислав, привет 🙂!) и новых друзей и единомышленников
— Стихийно организовалась afterparty в соседнем ресторане с обсуждением смежных тем, обменом опыта и знакомствами
— Зарядился на дальнейшие планы и шаги, о которых буду сообщать
Запись, к сожалению, не велась.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥6❤1💯1
Привет! Рассуждаю вслух и делаю выводы из своего опыта:
— Делать что-то и видеть, как это помогает другим людям
— Создавать нечто новое, ранее не существовавшее
— Помогать получать конкурентные преимущества и выигрывать борьбу
— Непосредственно участвовать в создании ценности
— Чувствовать себя незаменимым и востребованным
Определенно, это лучше чем:
— Быть винтиком системы, который ни на что не влияет
— И может быть легко заменен
— Не видеть смысла в своей работе
— Или обманывать себя насчет этого смысла
— Забыть про драйв и позитивные эмоции, связанные с работой
— Использование гибких, передовых решений, отвечающим духу времени
— Создание собственных решений
— Иметь инструменты и влияние на то как осуществляются операции
— Сравнивать и оценивать подходы и инструменты, выбирать лучшее
Против:
— Работа в заданных рамках со стеком, который вы не выбирали
— Копошение в legacy, порожденном чужими ошибками и неправильным выбором
— Отставание, устаревание, следование на несколько шагов позади
— Невозможность найти адекватное решение для возникающих задач
— Работа бок о бок с сильными специалистами
— Которые вдохновляют и мотивируют
— У которых есть чему учиться
— И нет страха показаться глупым или задать вопрос
Против:
— Работа в токсичной среде
— Работа ради выполнения KPI (написания письма, закрытие тикета)
— Где нет рычага и ощущуения, что команда это нечто большее чем каждый человек по-отдельности
— Где все позиции, продвижения, премии выдаются не за достижения, а "по связям"
Это важный аспект, но его ставлю на последнее место.
Определенно, труд должен быть оплачен соразмерно результатам и усилиям, в этом сомнений нет. Сегодня размер заработной платы - это одно из основных мерил привлекательности. Плохо, когда она - единственный критерий.
Я мыслю с другой стороны:
Это отличный способ получить международный опыт в динамичной и конкурентной среде с востребованными технологиями.
Немного позже я поделюсь своим видением (путеводной звездой) того, что хотел бы предложить рынку:
— В плане технологического стека
— В плане решения востребованных бизнес-задач и создания ценности
— В плане организации команды и партнерства, где каждый может развиваться
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍4🤔3❤1💯1
Или как собрать аналитическое приложение за $2 в месяц.
Изучая стек dlt + DuckDB + dbt + Observable (Streamlit), я наткнулся на интересную архитектуру. Оказывается, можно создать функциональное, но в то же время легковесное аналитическое приложение, которое работает почти без серверов.
GitHub Actions (CI) → dlt загружает данные →
dbt трансформирует → DuckDB файл → S3/Object storage →
Observable/Streamlit читает DuckDB-WASM в браузере
— Object storage / S3: $0.015 за GB хранения
— GitHub Actions: 2000 минут бесплатно
— Observable: бесплатно
— Итого: ~$2/месяц для приложения с 10GB данных
✅ Дашборд грузится за 200ms (всё в браузере)
✅ Работает офлайн после первой загрузки
✅ Выдерживает любые нагрузки (статика!)
✅ Автообновление через GitHub Actions
❌ Размер данных ограничен памятью браузера (~2-4GB), но вряд ли нам вообще понадобится больше (ведь хранить мы будем агрегированные витрины)
❌ Сложные real-time обновления проблематичны
❌ Нет серверной логики для сложной авторизации
❌ Ограниченная интерактивность и self-service (для этого нужны BI типа Superset)
— B2B SaaS аналитика для клиентов / Сквозная аналитика / Sales, Markeplace metrics, etc.
— Встраиваемая (Embedded) в web / mobile apps аналитика
— Демонстрационные стенды (showcasing)
— Публичная аналитика (типа COVID дашбордов)
— Дашборды для внутреннего контура компании (до 1000 сотрудников)
— Персональные и pet-проекты с историческими данными
— Собираем данные Я.Метрика, Я.Директ, AmoCRM (Bitrix) с помощью dlt в DuckDB
— Варим эти данные, чистим, нормализуем, объединяем, считаем витрины (dbt + DuckDB)
— Создаем интерактивное приложение на основе Observable с DuckDB-WASM под капотом (т.е. бразуер = сервер, который процессит витрину в DuckDB)
— В приложении видим динамику ключевых метрик Marketing, Sales разрезах: даты, каналы, георгафия, воронки, sales-менеджеры
— Приложение = статический вебсайт, который размещается на любом хостинге (Object storage / S3) и не требует сервера
Где еще можно (нужно) применить такой подход?
Кто пробовал похожие решения?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23⚡9👍3🤩2💯1
Салют!
19 июня в 19:00 МСК будем слушать 2 шикарных доклада и беседовать с практиками:
— Как мы нашли замену vertica, clickhouse и hadoop – Станислав Лысиков
— Опыт использования Starrocks как Unified SQL Engine – Алексей Дёмин
Сообщество пользователей подготовило 2 доклада, охватывающие весь спектр задач - от типичного dwh небольшой компании до использования lakehouse движка поверх S3 и открытых форматов. От часовых витрин до bi безумия из сотен тысяч запросов. Мы постараемся ответить - жив ли еще опенсорс, есть ли альтернатива кликхаузу, гринпламу или трино. А если вдруг что-то забудем, то после докладов приглашаем вас на сессию вопросов и ответов в zoom к докладчикам 👍
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24
Forwarded from СБЕР IT Сочи
26 июня приглашаем вас в наш уютный IT-офис. Будем общаться, играть в плойку и слушать доклады.
Михаил Старостин, технический директор, VYZOR
Артемий Козырь, независимый Data-консультант
Приглашаем к участию IT-специалистов уровня junior+,
количество участников ограничено, спешите зарегистрироваться.
Приходите, обменивайтесь опытом и заряжайтесь новыми идеями. Ждём вас!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤3
Поделюсь опытом использования Development Containers – технологии, которая радикально упрощает настройку среды разработки для любых проектов.
🎯 О чём расскажу:
— Реальный кейс моделирования данных с dbt
— Как забыть о "у меня не работает" в команде
— Почему devcontainers – это game changer
— Практические примеры конфигурации
— Оптимизация для CI/CD
💡 Особенно полезно будет:
— Тимлидам и техлидам
— Data-инженерам
— Разработчикам на любом стеке
— DevOps-инженерам
⚡️ Ключевые моменты:
— Единая среда разработки для всей команды
— Работа с микросервисами через docker-compose
— Предварительная сборка образов
— Поддержка нескольких архитектур (AMD64/ARM)
📺 Смотреть доклад: https://www.youtube.com/watch?v=qTtRF6xpieI
🔗 Полезные ссылки из доклада:
— https://containers.dev
— https://github.com/devcontainers/spec
#devcontainers #development #docker #dbt #dataengineering
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Магия контейнеров для разработки и развертывания (любых!) ваших приложений 🪄
[EN]
In this talk, we explore how Development Containers can revolutionize your development workflow, using a practical case study of data modeling with dbt. Learn how to create consistent, reproducible development environments that work across any technology…
In this talk, we explore how Development Containers can revolutionize your development workflow, using a practical case study of data modeling with dbt. Learn how to create consistent, reproducible development environments that work across any technology…
🔥14❤🔥5⚡2❤1🤩1
👋 Привет! Давно не виделись.
Продуктивно работал, качественно отдыхал.
Если сделать выжимку по основным интересам:
🔄 Большой фокус сделал на интеграции данных с помощью dlt. Все пайплайны загрузок (в особенности REST API) теперь строю на этом туле
💾 Запись осуществляю как в традиционные DWH (Snowflake, Clickhouse), так и в Object Storage (Iceberg, Delta)
📊 Значительно продвинулся в использовании Kafka Connect и в частности Debezium для синка данных из операционных СУБД: ad-hoc incremental snapshots, rewind CDC (OpLog) position, преобразования на лету и прочее
☸️ Работал над размещение Kafka + related services в Kubernetes как отказоустойчивого сервиса на базе проекта Strimzi
⚡️ Изучал возможности serverless analytics: (WASM) DuckDB, Matomo
🐳 Вышел на новый уровень использования devcontainer: prebuild & pull, регулярные builds & push свежих версий зависимого ПО, обновления от dependabot
🔐 Совершенствовал безопасность и надежность деплоймента DWH (Snowflake security issues and checklists)
🤖 Прокачивал свой AI enhanced workflow & setup на базе IDE Cursor. В планах пробовать Cline, топовые модельки с OpenRouter
━━━━━━━━━━━━━━━━━━
И, наверное, самая актуальная новость:
🎯 На этой неделе я заканчиваю свою работу в Wheely! Путь длиной в 6 лет подошел к концу.
Причины, результаты работы, наблюдения, дальнейшие планы в следующем посте.
━━━━━━━━━━━━━━━━━━
💬 Какие новости у вас?
Продуктивно работал, качественно отдыхал.
Если сделать выжимку по основным интересам:
🔄 Большой фокус сделал на интеграции данных с помощью dlt. Все пайплайны загрузок (в особенности REST API) теперь строю на этом туле
💾 Запись осуществляю как в традиционные DWH (Snowflake, Clickhouse), так и в Object Storage (Iceberg, Delta)
📊 Значительно продвинулся в использовании Kafka Connect и в частности Debezium для синка данных из операционных СУБД: ad-hoc incremental snapshots, rewind CDC (OpLog) position, преобразования на лету и прочее
☸️ Работал над размещение Kafka + related services в Kubernetes как отказоустойчивого сервиса на базе проекта Strimzi
⚡️ Изучал возможности serverless analytics: (WASM) DuckDB, Matomo
🐳 Вышел на новый уровень использования devcontainer: prebuild & pull, регулярные builds & push свежих версий зависимого ПО, обновления от dependabot
🔐 Совершенствовал безопасность и надежность деплоймента DWH (Snowflake security issues and checklists)
🤖 Прокачивал свой AI enhanced workflow & setup на базе IDE Cursor. В планах пробовать Cline, топовые модельки с OpenRouter
━━━━━━━━━━━━━━━━━━
И, наверное, самая актуальная новость:
🎯 На этой неделе я заканчиваю свою работу в Wheely! Путь длиной в 6 лет подошел к концу.
Причины, результаты работы, наблюдения, дальнейшие планы в следующем посте.
━━━━━━━━━━━━━━━━━━
💬 Какие новости у вас?
🔥41❤8😱4 2