Data Apps Design pinned «🔥 Открываю сбор заявок на серию вебинаров Building Modern Data Analytics Apps 🔥 4 года я готовил программы и вел занятия в Analytics & Data в ОТУС. Пришло время развивать свои проекты. Ключевые моменты: — 9-10 связанных вебинаров на которых строим Analytics…»
Салют!
Запуск будет состоять из вебинаров на эти темы:
— Infra Deployment
Deploying Databases, VMs for Data Pipelines and Orchestrators with Terraform
— Start modeling with dbt
Project configuration, Adapters setup, Launching devcontainers
— Sync Data Sources
Types of source data, file formats, sync methods
— Marketing analytics
Combine ad platforms, website trackers, CRM data, build data marts
— Ensure Data Quality
Unit tests, Freshness tests, Automated Integration testing
— Configure Semantic Layer (metrics)
Define metrics declarative way, Debug it
— Deploy and configure BI tool
Build dashboards, visualize key metrics, enable drills
— Team work
Setup dev sandboxes, CI tests, PR reviews
— Production Deployment
Scheduling production workloads, Chaining jobs
— Open topic session
Q&A sessions, Deep into details sessions, Live coding
В каждом вебинаре буду делать акцент на проблематике, подходах, и практических решениях. То есть то, чего зачастую не пишут в документации.
#learning
Please open Telegram to view this post
VIEW IN TELEGRAM
Google Docs
Building Modern Data Analytics Apps
🔥10👍2❤1
Планируемый стек:
— Y.Cloud, Terraform (Ansible)
— Clickhouse
— dbt + packages
— One of BI tools: Metabase, Superset (Datalens, LightDash)
— Cube for metrics layer
— Github (Actions)
— One of EL tools: Airbyte, Meltano, Stitch
Вся практика планируется в Я.Облаке.
#learning
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Data Apps Design
🟡 Дайджест самых интересных публикаций по темам:
Data Integration
— ▶ Успешный SaaS на рынке Аналитики – cтановление и планы развития / Алексей Сидоров из mybi connect
— 👨💻 Сказ о том как я realtime replication чинил (Kafka + Debezium + Clickhouse)
—…
Data Integration
— ▶ Успешный SaaS на рынке Аналитики – cтановление и планы развития / Алексей Сидоров из mybi connect
— 👨💻 Сказ о том как я realtime replication чинил (Kafka + Debezium + Clickhouse)
—…
❤3
⚡️ Real time replication работает как в сказке! Но всё далеко непросто ⚡️
#kafka #clickhouse #realtime #debezium
Салют! Ранее рассказывал о проблематике и архитектуре решения. По этой задаче есть обновления:
🔸 Infrastructure deployment
— Это Kafka, Kafka Connect, Zookeeper
— Все сервисы в Docker-контейнерах
— Для Connect готовил custom Dockerfile с добавлением нужных JDBC-драйверов (Clickhouse) и плагинов (JDBC Sink)
— Развернул Clickhouse (пока single node deployment)
🔸 Source Connector (MS SQL)
— Первый источник - MS SQL
— Потребовалось применить конфигурации в самой базе-источнике (CDC configuration)
— Настройка Initial Snapshot
— Очень много операций с Kafka Connect REST API (создал - удалил - обновил конфиг - посмотрел статус и т.д.)
— Трансформация SMT - Topic reroute - топик должен называться так же как и таблица в Clickhouse
🔸 JDBC Sink Connector (Clickhouse)
— Для работы коннектора необходимо применить трансформацию ExtractNewRecordState ко всем событиям
— Очень много работы связано с Data Type Mapping (любой mismatch - ошибка и падение)
— Добавил ко всем топикам метаданные
— Научился использовать secrets в Debezium (
🔸Clickhouse configuration
— init dbt repository + devcontainer
— Разобрал Debezium Schema Changes topic c помощью jq + yq => получил .yml конфиг для источников dbt
— dbt macros для создания исходных таблиц в цикле согласно схеме данных .yml
— Макрос умеет DROP & CREATE, CREATE OR REPLACE, CREATE IF NOT EXISTS
Это кратко.
Сначала отработал всю схему на 1-2 таблицах, заглядывая в Kafka topics. Потом автоматизировал на 70+ таблиц и полных snapshot данных.
В целом, впечатления от Debezium + Kafka Connect строго положительные. Штука сложная, но функциональная и поставленную задачу решает - я вижу данные в Clickhouse в real time. Продолжу работу.
🔸На очереди:
— Postgres Source Connector
— Оркестрация контейнеров (k8s)
— Гибкое и простое управление конфигурациями Connectors
— Clickhouse Materialized Views для подсчета метрик в real time
💬 Что скажете? Есть вопросы?
Запилить полноценный пост-инструкцию на Хабр?
🌐 @data_apps | Навигация по каналу
#kafka #clickhouse #realtime #debezium
Салют! Ранее рассказывал о проблематике и архитектуре решения. По этой задаче есть обновления:
🔸 Infrastructure deployment
— Это Kafka, Kafka Connect, Zookeeper
— Все сервисы в Docker-контейнерах
— Для Connect готовил custom Dockerfile с добавлением нужных JDBC-драйверов (Clickhouse) и плагинов (JDBC Sink)
— Развернул Clickhouse (пока single node deployment)
🔸 Source Connector (MS SQL)
— Первый источник - MS SQL
— Потребовалось применить конфигурации в самой базе-источнике (CDC configuration)
— Настройка Initial Snapshot
— Очень много операций с Kafka Connect REST API (создал - удалил - обновил конфиг - посмотрел статус и т.д.)
— Трансформация SMT - Topic reroute - топик должен называться так же как и таблица в Clickhouse
🔸 JDBC Sink Connector (Clickhouse)
— Для работы коннектора необходимо применить трансформацию ExtractNewRecordState ко всем событиям
— Очень много работы связано с Data Type Mapping (любой mismatch - ошибка и падение)
— Добавил ко всем топикам метаданные
op,source.ts_ms:ts_ms_source,ts_ms:ts_ms_debezium— Научился использовать secrets в Debezium (
${file:/secrets/clickhouse.properties:url})🔸Clickhouse configuration
— init dbt repository + devcontainer
— Разобрал Debezium Schema Changes topic c помощью jq + yq => получил .yml конфиг для источников dbt
— dbt macros для создания исходных таблиц в цикле согласно схеме данных .yml
— Макрос умеет DROP & CREATE, CREATE OR REPLACE, CREATE IF NOT EXISTS
Это кратко.
Сначала отработал всю схему на 1-2 таблицах, заглядывая в Kafka topics. Потом автоматизировал на 70+ таблиц и полных snapshot данных.
В целом, впечатления от Debezium + Kafka Connect строго положительные. Штука сложная, но функциональная и поставленную задачу решает - я вижу данные в Clickhouse в real time. Продолжу работу.
🔸На очереди:
— Postgres Source Connector
— Оркестрация контейнеров (k8s)
— Гибкое и простое управление конфигурациями Connectors
— Clickhouse Materialized Views для подсчета метрик в real time
Запилить полноценный пост-инструкцию на Хабр?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤1⚡1
Потому что это знания, которыми делятся лучшие эксперты в своих областях.
— В первую очередь это доступ к самым актуальным и интересным книгам в IT
— Это мероприятия и live sessions
Например, мне был интересен вебинар ChatGPT for Software Engineers
— Это Interactive Labs & Sandboxes
K8s, Databases, Machine Learning, Data Analysis. Готовые окружения и песочницы прямо в браузере.
Подписка на год стоит $499. Я успел воспользоваться предложением Black Friday и заплатил $299
#learning #books
Please open Telegram to view this post
VIEW IN TELEGRAM
Oreilly
Online Learning Features - O'Reilly Media
O'Reilly offers a powerful combination of highly trusted content and learning experiences so you and your teams have the tools to work smarter and stay ahead.
Салют!
В Data-сфере происходит много событий: появляются новые тулзы, фреймворки, фичи, обновления, компании продают и покупают друг друга и т.д.
День ото дня я сам решаю множество различных задач, о большей части я не успеваю рассказать.
⭐ Есть мнение, что пора включить режим турбо-блоггинга
Какие у вас ожидания? Что хочется видеть в канале? Голосуем.
В Data-сфере происходит много событий: появляются новые тулзы, фреймворки, фичи, обновления, компании продают и покупают друг друга и т.д.
День ото дня я сам решаю множество различных задач, о большей части я не успеваю рассказать.
Какие у вас ожидания? Что хочется видеть в канале? Голосуем.
Please open Telegram to view this post
VIEW IN TELEGRAM
(выпуск My first week with the new dbt, рассылка Analytics Engineering Roundup)
🔸 Старт разработки без головной боли
With the Cloud CLI, every dbt build I execute on the command line is parsed and executed from within a VM living inside of dbt Cloud’s infrastructure. This means: I no longer have to do local version upgrades, a massive advantage for someone like me who honestly just doesn’t have time to f around with Python dependencies.
Это замечательно и то, что нужно. Фокус аналитика - на создании аналитических приложений, а не на борьбу с зависимостями, version upgrades и поиск error codes на stackoverflow. Чем больше чистого времени у аналитика, тем больше результатов можно получить.
Я уже давно использую devcontainers и даже писал об этом для тех же целей - это бесплатно и не требует иметь лицензию dbtCloud.
🔸 Auto-deferral
Auto-deferral (now also available in the IDE) means that every time you execute a dbt run, dbt is comparing the state of your development project to the state of the production environment and it is only executing code in your development environment where that code differs from production, or is downstream of those changes. All upstream references point to prod.
Я давно использую defer в рамках CI tests (= прогон и тесты только изменяемых graph nodes). Теперь, в рамках dev это ускоряет процессы разрабтки на порядок.
Жаль, что удобно использовать это можно пока только в dbtCloud.
Из связанного, на ум сразу приходит фича Snowflake zero-copy clone.
🔸Data Mesh
Коротко, это про то, чтобы DWH разделить на зоны ответственности и дать командам развивать интересующие их области самостоятельно, по их правилам.
Называйте это Microservices в Data.
Задействованы и технические аспекты (как это реализовать) и организационные (кто владеет ownership).
Это классная идея и эволюционное развитие, но это скорее релевантно крупным компаниям, в которых как минимум несколько отделов-ветвей заинтересованы в data services, у них есть свои ресурсы на разработку и устоявшиеся правила. Читай, это для корпораций. По моим оценкам, доля таких компаний среди пользователей dbt пока не очень велика. Но это тренд!
They have set up their own CODEOWNERS and other processes, and are much more able to operate independently. They’re excited, empowered.
🔸 Explorer на смену dbt Docs
Мне доступна эта версия в dbtCloud. Приложу несколько скриншотов в комменты.
Из главного: визуальный граф (DAG), факты о расчете модели (когда, кем, сколько - это новое!), code, dependencies, columns, tests.
dbt Docs just knew about your code, it didn’t really have any more information to show you. Explorer also knows about job and test execution, can trend runtimes, can tell you when data was last loaded, and more. After a few hours with it, I can now feel myself gravitating to it as the place to learn about what’s going on inside our warehouse.
#dbt #roundup #opinion
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🚀 Сквозная аналитика + Modern Data Stack 🚀
Открытый вебинар 13 декабря в 19:00
🔸 Бизнес-результат (ценность):
— Почему владельцы готовы платить за аналитику?
— Оптимизация привлечения и удержания клиентов
— Совершенствование продукта: анализ паттернов и поведения
— С [MDS] 1 человек способен делать, на что ранее требовались целые команды
🔸 Как создать эту ценность с Modern Data Stack:
— Расширение списка источников данных: Ads platforms, Clickstream, CRM, Billing, gSheets
— Шаблонизация, макросы и интеллектуальное моделирование с dbt и Clickhouse
— Семантический слой, потребление дата-продуктов и аналитики: Cube
— Визуализации и дашборды, которые живут долго: Datalens, Metabase, Superset
Регистрация: https://artemiy-kozyr.timepad.ru/event/2709562/
Вебинар бесплатный, регистрация обязательна.
Расскажите об этом всем, кому может быть интересно.
#learning
🌐 @data_apps | Навигация по каналу
Открытый вебинар 13 декабря в 19:00
🔸 Бизнес-результат (ценность):
— Почему владельцы готовы платить за аналитику?
— Оптимизация привлечения и удержания клиентов
— Совершенствование продукта: анализ паттернов и поведения
— С [MDS] 1 человек способен делать, на что ранее требовались целые команды
🔸 Как создать эту ценность с Modern Data Stack:
— Расширение списка источников данных: Ads platforms, Clickstream, CRM, Billing, gSheets
— Шаблонизация, макросы и интеллектуальное моделирование с dbt и Clickhouse
— Семантический слой, потребление дата-продуктов и аналитики: Cube
— Визуализации и дашборды, которые живут долго: Datalens, Metabase, Superset
Регистрация: https://artemiy-kozyr.timepad.ru/event/2709562/
Вебинар бесплатный, регистрация обязательна.
Расскажите об этом всем, кому может быть интересно.
#learning
Please open Telegram to view this post
VIEW IN TELEGRAM
artemiy-kozyr.timepad.ru
Сквозная аналитика + Modern Data Stack / События на TimePad.ru
Практический вебинар о создании ценности для бизнеса, современные практики для аналитиков и инженеров
❤🔥10
Data Apps Design pinned «🚀 Сквозная аналитика + Modern Data Stack 🚀 Открытый вебинар 13 декабря в 19:00 🔸 Бизнес-результат (ценность): — Почему владельцы готовы платить за аналитику? — Оптимизация привлечения и удержания клиентов — Совершенствование продукта: анализ паттернов…»
⚙️ Добавить логику повторных попыток retry в оркестрацию расчетов DAG
Для того, чтобы бороться с повторяющимися случайными ошибками.
В моем случае это проблемы с сетью (сетевым подключением). В рамках расчетов я делаю обращение из Clickhouse во внешнюю СУБД и порой во время чтения данных подключение прерывается:
* Можно тонко конфигурировать настройки, но не всегда это возможно на стороне СУБД-источника данных
В итоге расчет всех витрин прерывается в случайном месте, и в результате имеем в отчетности либо отстающие, либо несогласованные данные.
🔹 Как можно предусмотреть возможность повторных попыток?
— Реализовать собственноручно в коде исполнения (Exception handling, Retries, etc.)
— Настроить встроенные механизмы (Airflow task retries)
— Использовать специальные обертки (Github Actions)
В моем случае использую Github Actions как оркестратор запусков dbt
Step, который прежде выполнял единственную команду
В Github Actions я бы рекомендовал использовать retry action. Есть ряд альтернатив, но, например с Retry Step у меня возникли проблемы и я отказался от его использования.
#orchestration #dbt #github_actions
🌐 @data_apps | Навигация по каналу
Для того, чтобы бороться с повторяющимися случайными ошибками.
В моем случае это проблемы с сетью (сетевым подключением). В рамках расчетов я делаю обращение из Clickhouse во внешнюю СУБД и порой во время чтения данных подключение прерывается:
05:08:57 :HTTPDriver for https://***:8443 returned response code 500)
05:08:57 Poco::Exception. Code: 1000, e.code() = 2013, mysqlxx::ConnectionLost: Lost connection to MySQL server during query (***:3306) (version 23.3.17.13 (official build))
* Можно тонко конфигурировать настройки, но не всегда это возможно на стороне СУБД-источника данных
В итоге расчет всех витрин прерывается в случайном месте, и в результате имеем в отчетности либо отстающие, либо несогласованные данные.
🔹 Как можно предусмотреть возможность повторных попыток?
— Реализовать собственноручно в коде исполнения (Exception handling, Retries, etc.)
— Настроить встроенные механизмы (Airflow task retries)
— Использовать специальные обертки (Github Actions)
В моем случае использую Github Actions как оркестратор запусков dbt
Step, который прежде выполнял единственную команду
dbt build, теперь выглядит так:- uses: Wandalen/wretry.action@master
with:
command: dbt build
attempt_limit: 3
attempt_delay: 2000
В Github Actions я бы рекомендовал использовать retry action. Есть ряд альтернатив, но, например с Retry Step у меня возникли проблемы и я отказался от его использования.
#orchestration #dbt #github_actions
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Стрим проведу в Tg-канале @enthusiastech, запись будет выложена в YouTube позже.
Прикладываю несколько слайдов в качестве тизера
Подключайтесь, и расскажите тем, кому это может быть интересно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤🔥5🔥3
❓ Q&A: В комментариях к этому посту задаем вопросы по стриму 🚀 Сквозная аналитика + Modern Data Stack
Data Apps Design
🚀 Сквозная аналитика + Modern Data Stack 🚀 Открытый вебинар 13 декабря в 19:00 🔸 Бизнес-результат (ценность): — Почему владельцы готовы платить за аналитику? — Оптимизация привлечения и удержания клиентов — Совершенствование продукта: анализ паттернов…
🚀 Сквозная аналитика + Modern Data Stack 🚀
Слайды: https://drive.google.com/file/d/1eEyvrP6WDlXen82YcqdVdD5P2c0kQgZP/view
#learning
Слайды: https://drive.google.com/file/d/1eEyvrP6WDlXen82YcqdVdD5P2c0kQgZP/view
#learning
👍9
Data Apps Design
🚀 Сквозная аналитика + Modern Data Stack 🚀 Открытый вебинар 13 декабря в 19:00 🔸 Бизнес-результат (ценность): — Почему владельцы готовы платить за аналитику? — Оптимизация привлечения и удержания клиентов — Совершенствование продукта: анализ паттернов…
🚀 Сквозная аналитика + Modern Data Stack 🚀
Запись вебинара на YouTube: https://youtu.be/wkLIPy_pczY?si=_vIHRcCKA6BueeU_
#learning
🌐 @data_apps | Навигация по каналу
Запись вебинара на YouTube: https://youtu.be/wkLIPy_pczY?si=_vIHRcCKA6BueeU_
#learning
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Сквозная аналитика и Modern Data Stack 🚀
Для кого этот вебинар?
- Владельцы бизнеса
- Руководители, Менеджеры (Макретинг, Продажи, Клиентский опыт)
- Аналитики (BI / Data analysts)
- Инженеры и Разработчики (Data Engineers, Developers, Administrators)
Стейкхолдеры. За что они готовы платить?
-…
- Владельцы бизнеса
- Руководители, Менеджеры (Макретинг, Продажи, Клиентский опыт)
- Аналитики (BI / Data analysts)
- Инженеры и Разработчики (Data Engineers, Developers, Administrators)
Стейкхолдеры. За что они готовы платить?
-…
👍11🔥1
❄️ Наступает время Snowflake ❄️
Ранее я писал, что рассматриваю альтернативные СУБД в качестве аналитического движка.
3 февраля 2024 заканчивается резерв Amazon Redshift RA3 Nodes сроком год.
К этой дате я планирую полностью подготовить кластер Snowflake, код dbt-проекта, и все другие необходимые конфигурации.
В один день я просто переключу все нагрузки на Snowflake, и большинство пользователей даже ничего не заметят (поначалу 🙂)
Самый актуальный вопрос, который задавался - а зачем?
🔹 Новый подход к проблемам с производительностью (расчетов, запросов, пиковых нагрузок и т.д.)
— Невероятно быстрое масштабирование благодаря Serverless & Cloud native природе
— Индивидуальная работа с каждым видом нагрузки (workload) с помощью Virtual Warehouses: EL, T, BI, Analysts, и т.д.
— Платим только за потребленные ресурсы - кластер не работает 24/7.
🔹 Ускорение цикла создания ценности (Time to Market)
— Расширенный список поддерживаемых функций: Geospatial, in-database ML, Data streaming, advanced analytics, etc.
— Доступ к экосистеме: marketplace, packages, modules, solutions, code examples, how-to guides
— Developer Experience: разработка features становится приятной и легкой, может занимать часы и дни (не недели и месяцы)
— Фокус аналитиков на поиске ответов на бизнес-вопросы, а не на отладке ошибок и чтении документации к СУБД
🔹 Повышение устойчивости (к миграциям, необходимому набору навыков), совершенствование кодовой базы
— Рефакторинг кода: снижение сложности при сохранении чистоты базы кода. Любая последующая миграция будет значительно быстрее и безболезненнее
— В Snowflake траты на обслуживание и администрирование близки к 0: экономим инженерные ресурсы и время
— Чем меньше устаревшего кода и инструментов, тем легче найти инженера или аналитика (С dbt + Snowflake работать проще, чем с dbt + Redshift + S3 + Lambda + Python + Airflow)
— Если мы используем Snowflake, мы избавляемся от 3-5 бессмысленных джобов dbtCloud (VACUUM + ANALYZE, Job to enable Slim CI)
Это коротко.
Сталкиваетесь ли вы с подобными проблемами?
Дальше будут посты с детальным планом миграции и TODO.
#database #snowflake #redshift
🌐 @data_apps | Навигация по каналу
Ранее я писал, что рассматриваю альтернативные СУБД в качестве аналитического движка.
3 февраля 2024 заканчивается резерв Amazon Redshift RA3 Nodes сроком год.
К этой дате я планирую полностью подготовить кластер Snowflake, код dbt-проекта, и все другие необходимые конфигурации.
В один день я просто переключу все нагрузки на Snowflake, и большинство пользователей даже ничего не заметят (поначалу 🙂)
Самый актуальный вопрос, который задавался - а зачем?
🔹 Новый подход к проблемам с производительностью (расчетов, запросов, пиковых нагрузок и т.д.)
— Невероятно быстрое масштабирование благодаря Serverless & Cloud native природе
— Индивидуальная работа с каждым видом нагрузки (workload) с помощью Virtual Warehouses: EL, T, BI, Analysts, и т.д.
— Платим только за потребленные ресурсы - кластер не работает 24/7.
🔹 Ускорение цикла создания ценности (Time to Market)
— Расширенный список поддерживаемых функций: Geospatial, in-database ML, Data streaming, advanced analytics, etc.
— Доступ к экосистеме: marketplace, packages, modules, solutions, code examples, how-to guides
— Developer Experience: разработка features становится приятной и легкой, может занимать часы и дни (не недели и месяцы)
— Фокус аналитиков на поиске ответов на бизнес-вопросы, а не на отладке ошибок и чтении документации к СУБД
🔹 Повышение устойчивости (к миграциям, необходимому набору навыков), совершенствование кодовой базы
— Рефакторинг кода: снижение сложности при сохранении чистоты базы кода. Любая последующая миграция будет значительно быстрее и безболезненнее
— В Snowflake траты на обслуживание и администрирование близки к 0: экономим инженерные ресурсы и время
— Чем меньше устаревшего кода и инструментов, тем легче найти инженера или аналитика (С dbt + Snowflake работать проще, чем с dbt + Redshift + S3 + Lambda + Python + Airflow)
— Если мы используем Snowflake, мы избавляемся от 3-5 бессмысленных джобов dbtCloud (VACUUM + ANALYZE, Job to enable Slim CI)
Это коротко.
Сталкиваетесь ли вы с подобными проблемами?
Дальше будут посты с детальным планом миграции и TODO.
#database #snowflake #redshift
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8🔥3👍1👏1