Data Apps Design
1.54K subscribers
143 photos
2 videos
41 files
231 links
В этом блоге я публикую свои выводы и мнения на работу в Data:

— Data Integration
— Database engines
— Data Modeling
— Business Intelligence
— Semantic Layer
— DataOps and DevOps
— Orchestrating jobs & DAGs
— Business Impact and Value
Download Telegram
Чем быстрее и проще создается ценность для конечного пользователя, тем более востребованы будут ваши решения.

Любое решение похоже на пирамиду, каждый новый уровень которой строится на основе предыдущего.

Применительно к этому принципу, ранее я демонстрировал проект 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% вопросов бизнеса и нести ценность компании.

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

Посмотрите здесь: https://github.com/kzzzr/mybi-dbt-showcase

Недавно мои друзья из myBI Connect выпустили серию замечательных прикладных материалов по работе с платформой и её возможностями.

📊 Получить доступ: study.mybi.ru
Бонусом 1.500 рублей на баланс аккаунта + диплом.

А я скоро подготовлю новый кейс и серию видео / публикаций:

Bitrix как источник данных (myBI Connect)
Clickhouse
dbt (моделирование витрин)
Cube (semantic layer)
Observable (data app)
Github Actions (CI / CD)

Всё с учетом моего свежего опыта и знаний.

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍311
Universal dbt deployment (CD) and testing (CI) workflows, Data Integration via dlt, devcontainers advancements

Привет! Updates + ideas sharing за последние несколько недель:

🟡 Мгновенные универсальные и идентичные среды разработки на базе devcontainers 🟡

Я фанат 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


🔵 Data Integration Pipelines via dlt orchestrated by Github Actions 🔵

Работал над интеграцией данных одного из популярных сервисов через API.

— Изучил API, доступные методы и структуру данных
— Подготовил скрипт на Python, который осуществляет регулярные выгрузки данных
— В структурированный файловый формат .parquet с типизацией
— Доступны режимы: 'incremental' and 'historical' (any specified time period)
— Запускаю по расписанию как workflow в Github Actions
— Сам код и зависимости выполняются в контейнере (конечно, devcontainers)
— Уведомления об ошибках отправляет Tg-bot в указанную группу

Появилась идея писать универсальные интеграции с использованием некоего фреймворка. Рассматриваю dlt - data load tool.

Кто работал с dlt? Насколько интересный и качественный тул?


🟢 dbt deployment (CD) with Github Actions - единый универсальный workflow 🟢

Проблема:

— В наличии множество 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 sources + Database Engine features (Clickhouse, Snowflake) 🩷

Проблема:

— В 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👍31
— Все интеграции создаются через STAGES, SNOWPIPES, NAMED COLLECTIONS - забыли про указание токенов, секретов, адресов, логинов, паролей, ключей для БД-источников
— Возможность указывать (подмножество колонок, явное указание типа данных) и не указывать (SELECT *) схему данных для создаваемых таблиц-источников
— Заполнение всех данных по каждому источнику: 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 | Навигация по каналу
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
😘 Семантический Слой и Метрики - всё что вы хотели знать / Semantic Layer / Gen AI / Synmetrix / Cube 🟢 В новом выпуске подкаста обсудили концепцию Semantic Layer – Семантический слой — Эволюция работы с метриками. Почему вообще возникает проблема которую…
💬 В тему Semantic Layer и, в частности, Cube.js:

У нас недавно был классный выпуск подкаста со множеством тем, ситуаций и прогнозов по развитию.

Если у вас всё же остаются вопросы и живой интерес к теме, либо вы на пути внедрения Cube в свои проекты, то приглашаю вступить в Tg-группу Cube.js русскоговрящий чат

🔸 Там в общении с другими людьми на разных этапах внедрения вы сможете найти ответы на вопросы:

— Зачем мне в 2025 семантический слой
— Production checklist / Architecture
— BI-интеграции (Superset, Metabase, Tableau и др.)
— Семантические слои в целом – best practices в B2B-аналитике и data-инфре
— Разница между Cube core / Cube cloud / Synmetrix
— И прочие

📊 Ссылка на TG-чат: https://t.me/cubejsru

💡 Если что в чате есть @jfokeev — один из первых сотрудников statsbot, в котором был разработан фреймворк cube.js и автор synmetrix (https://github.com/synmetrix/synmetrix)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
ОФФЛАЙН МИТАП в Сочи: dbt как де-факто стандарт создания Хранилищ Данных

Салют!

Выступлю в Сочи на площадке ИТ-хаба СБЕР

У меня будет ~30 минут чтобы зарядить вас, сделать увлекательно, интересно и познавательно:

— Ликбез для тех, кто пока не в курсе, что такое dbt
— Обзор эволюции развития dbt и продуктов dbt Labs
— Зачем вам dbt? Сравнение До / После
— Лучшие практики без воды после моих 5+ лет в проде

💡Время: 15 мая, сбор с 18:30, старт в 19:00
📍Где: ул. Войкова, 2 — IT-офис Сбера, Сочи

Регистрация: https://public.oprosso.sberbank.ru/p/hw0rd7yo

🔻 У кого есть возможность прийти и пообщаться – буду рад.

Запись тоже постараюсь сделать.

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥7
СЛАЙДЫ dbt как де-факто стандарт создания Хранилищ Данных

Привет,

По следам доклада на ОФФЛАЙН митапе в Сочи:

📊 Смотреть слайды: https://drive.google.com/file/d/17nZnuRBzH6xDL5Cku56daA1Uqs2t5Ssr/view?usp=sharing


Основные идеи:

🏆 dbt - индустриальный стандарт для трансформации данных в DWH
✍️ Позволяет писать, тестировать, документировать трансформации как SQL-код
☁️ Работает поверх современных облачных и on-premise платформ (Snowflake, BigQuery, Redshift, Databricks, Postgres и др.)
🏆 Использует лучшие практики разработки: версионирование, модульность, CI/CD, документация


Было много вопросов и заблуждений по поводу концепта dbt, поэтому дублирую:

— С т.з. манипуляции данными dbt умеет ровно столько, сколько умеет ваша аналитическая БД
— dbt не пропускает данные через себя, а лишь "раздает" команды БД, которая выполняет все операции (heavy lifting)
— dbt это просто python package с удобным CLI
— Рассматривайте dbt как мультитул-автоматизацию для работы с вашей аналитической БД


Наблюдения и выводы:

— Тема вызвала живой интерес и поток вопросов (которые продолжились после выступления)
— Отметил, что даже сложные концепты в подаче с простыми примерами и доступными формулировками легко воспринимаются даже неподготовленным слушателем
— Обрел старых (Станислав, привет 🙂!) и новых друзей и единомышленников
— Стихийно организовалась afterparty в соседнем ресторане с обсуждением смежных тем, обменом опыта и знакомствами
— Зарядился на дальнейшие планы и шаги, о которых буду сообщать


Запись, к сожалению, не велась.

😘 Если будет хотя бы 3-5 комментариев-запросов, то я сделаю видеозапись по этим слайдам и идеям и выложу на YouTube / RuTube.

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥61💯1
🪙 Почему люди ищут новую работу и проекты?

Привет! Рассуждаю вслух и делаю выводы из своего опыта:


🟡 Востребованность результатов

— Делать что-то и видеть, как это помогает другим людям
— Создавать нечто новое, ранее не существовавшее
— Помогать получать конкурентные преимущества и выигрывать борьбу
— Непосредственно участвовать в создании ценности
— Чувствовать себя незаменимым и востребованным

Определенно, это лучше чем:

— Быть винтиком системы, который ни на что не влияет
— И может быть легко заменен
— Не видеть смысла в своей работе
— Или обманывать себя насчет этого смысла
— Забыть про драйв и позитивные эмоции, связанные с работой


🔵 Технологии, с которыми вы работаете

— Использование гибких, передовых решений, отвечающим духу времени
— Создание собственных решений
— Иметь инструменты и влияние на то как осуществляются операции
— Сравнивать и оценивать подходы и инструменты, выбирать лучшее

Против:

— Работа в заданных рамках со стеком, который вы не выбирали
— Копошение в legacy, порожденном чужими ошибками и неправильным выбором
— Отставание, устаревание, следование на несколько шагов позади
— Невозможность найти адекватное решение для возникающих задач


🩷 Команда и окружение

— Работа бок о бок с сильными специалистами
— Которые вдохновляют и мотивируют
— У которых есть чему учиться
— И нет страха показаться глупым или задать вопрос

Против:

— Работа в токсичной среде
— Работа ради выполнения KPI (написания письма, закрытие тикета)
— Где нет рычага и ощущуения, что команда это нечто большее чем каждый человек по-отдельности
— Где все позиции, продвижения, премии выдаются не за достижения, а "по связям"


🟢 Деньги

Это важный аспект, но его ставлю на последнее место.

Определенно, труд должен быть оплачен соразмерно результатам и усилиям, в этом сомнений нет. Сегодня размер заработной платы - это одно из основных мерил привлекательности. Плохо, когда она - единственный критерий.

Я мыслю с другой стороны:

🪙 Деньги придут, если вы занимаетесь востребованными и интересными вещами, и делаете это лучше других.


🔥Сегодня мой друг Николай Валиотти из LEFT JOIN ищет человека с навыками BigQuery, GCP и dbt.
Это отличный способ получить международный опыт в динамичной и конкурентной среде с востребованными технологиями.

📊 Посмотреть предложения и откликнуться: https://valiottianalytics.huntflow.io/


Немного позже я поделюсь своим видением (путеводной звездой) того, что хотел бы предложить рынку:

— В плане технологического стека
— В плане решения востребованных бизнес-задач и создания ценности
— В плане организации команды и партнерства, где каждый может развиваться


🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍4🤔31💯1
🆕 Полностью БЕССЕРВЕРНЫЕ Аналитические Приложения на dlt, DuckDB, dbt, Observable (Streamlit)

Или как собрать аналитическое приложение за $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-проекты с историческими данными

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



Конкретный пример использования:

— Собираем данные Я.Метрика, Я.Директ, AmoCRM (Bitrix) с помощью dlt в DuckDB
— Варим эти данные, чистим, нормализуем, объединяем, считаем витрины (dbt + DuckDB)
— Создаем интерактивное приложение на основе Observable с DuckDB-WASM под капотом (т.е. бразуер = сервер, который процессит витрину в DuckDB)
— В приложении видим динамику ключевых метрик Marketing, Sales разрезах: даты, каналы, георгафия, воронки, sales-менеджеры
— Приложение = статический вебсайт, который размещается на любом хостинге (Object storage / S3) и не требует сервера


💬 У кого какие мнения на этот счет?
Где еще можно (нужно) применить такой подход?
Кто пробовал похожие решения?

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥239👍3🤩2💯1
🆕 Что насчет StarRocks?

Салют!

19 июня в 19:00 МСК будем слушать 2 шикарных доклада и беседовать с практиками:

— Как мы нашли замену vertica, clickhouse и hadoop – Станислав Лысиков
— Опыт использования Starrocks как Unified SQL Engine – Алексей Дёмин


🟡В этот раз я буду модератором, готовлю интересные вопросы и гипотезы, и вам рекомендую!

📊 Митап состоится онлайн, регистрация по ссылке.

Сообщество пользователей подготовило 2 доклада, охватывающие весь спектр задач - от типичного dwh небольшой компании до использования lakehouse движка поверх S3 и открытых форматов. От часовых витрин до bi безумия из сотен тысяч запросов. Мы постараемся ответить - жив ли еще опенсорс, есть ли альтернатива кликхаузу, гринпламу или трино. А если вдруг что-то забудем, то после докладов приглашаем вас на сессию вопросов и ответов в zoom к докладчикам 👍


🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24
Forwarded from СБЕР IT Сочи
💬 Вам пришло сообщение с приглашением на митап

26 июня приглашаем вас в наш уютный IT-офис. Будем общаться, играть в плойку и слушать доклады.


🔘Как сделать приватное облако на базе Kubernetes по цене смартфона
Михаил Старостин, технический директор, VYZOR

🔘Магия контейнеров для разработки и развертывания любого приложения
Артемий Козырь, независимый Data-консультант

Приглашаем к участию IT-специалистов уровня junior+,
количество участников ограничено, спешите зарегистрироваться.

➡️ 26 июня, сбор с 18:30, старт в 19:00
📍ул. Войкова, 2 — IT-офис Сбера, Сочи

Приходите, обменивайтесь опытом и заряжайтесь новыми идеями. Ждём вас!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥93
😘 Новый доклад: Магия контейнеров для разработки и развертывания (любых!) ваших приложений 🪄

Поделюсь опытом использования Development Containers – технологии, которая радикально упрощает настройку среды разработки для любых проектов.

🎯 О чём расскажу:
— Реальный кейс моделирования данных с dbt
— Как забыть о "у меня не работает" в команде
— Почему devcontainers – это game changer
— Практические примеры конфигурации
— Оптимизация для CI/CD

💡 Особенно полезно будет:
— Тимлидам и техлидам
— Data-инженерам
— Разработчикам на любом стеке
— DevOps-инженерам

⚡️ Ключевые моменты:
— Единая среда разработки для всей команды
— Работа с микросервисами через docker-compose
— Предварительная сборка образов
— Поддержка нескольких архитектур (AMD64/ARM)

📺 Смотреть доклад: https://www.youtube.com/watch?v=qTtRF6xpieI
📊 Смотреть слайды: https://drive.google.com/file/d/1-89LR6YQYpHXwzcsGtX4HBquK8vpYHi5/view?usp=sharing

🔗 Полезные ссылки из доклада:
https://containers.dev
https://github.com/devcontainers/spec

#devcontainers #development #docker #dbt #dataengineering

💬 P.S.: Задавайте вопросы в комментариях – с радостью отвечу и поделюсь дополнительными материалами! 🙌

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤‍🔥521🤩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 лет подошел к концу.

Причины, результаты работы, наблюдения, дальнейшие планы в следующем посте.

━━━━━━━━━━━━━━━━━━

💬 Какие новости у вас?
🔥418😱42