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
👍1
Слайды моего доклада с [dbt meetup]:

🔸 Оркестрация dbt jobs для Dev, Test, Prod без головной боли

— Сформулируем требования
— Что нужно для запуска dbt jobs?
— Какие бывают Environments
— Критерии выбора решения для запусков
— Обзор решений: devcontainer, dbtCloud, Github Actions, Gitlab CI, Airflow / Prefect / Dagster, Argo Workflows
— Матрица оценок по критериям
— Выводы: что, в каких случаях и почему лучше использовать

Доступны гиперссылки и .gif-анимация.

Задавайте вопросы, если появятся.

#meetup

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤‍🔥2
😎 Уже более полугода использую Census App для задач reverse ETL

Сегодня получил письмо касательно интеграции синков данных с dbtCloud jobs и уже выполнил все рекомендации.

As part of working with dbt Labs to improve dbt Cloud triggers, we have been migrating to webhook-based integration which requires different dbt Cloud permissions.

Legacy dbt Cloud Triggers will be disabled in two weeks on August 14th, 2023.

To upgrade, the Service Token provided to Census requires at least the developer permission (for Enterprise) or Member permission (for Team) in order to configure new webhooks. You can then provide the new Service Token in your Organization Settings. For more information, see our documentation.

Хочется еще раз резюмировать опыт использования инструмента:

— 15+ sources = источников данных (все популярные движки DWH)
— 130+ destinations = приемников данных = операционных систем
— Моделирование наборов данных: SQL query, dbt models, Looker Looks
— Audience hub = Создание сегментов
— Автоматических маппинг атрибутов - очень удобно при использовании 10+ полей
— Data Sync: расписание, dbtCloud integration (после завершения dbt build), API calls, Sequence (DAGs)
— Если вы передаете до 50 атрибутов, то использование сервиса не будет стоить ничего!

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

#reverse_etl

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41
❄️ Snowflake - перспективный лидер, и я ищу подводные камни

Сейчас в процессе тестирования СУБД Snowflake на замену Amazon Redshift

Пока выполнено:

— Сделал и загрузил дамп данных: Redshift -> S3 (Parquet) -> Snowflake. Для этого написал макрос.
— Собрал dev container для работы с dbt
— Настроил работу внешних таблиц: EXTERNAL STAGES
— Внёс все изменения по синтаксису, чтобы отработал слой моделей staging.*

Возникают сложности с:

— Регистр колонок и Reserved words в названиях колонок
— Работа с JSON Flattening. Синтаксис отличается от Redshift
— Работа с внешними таблицами (STAGES, EXTERNAL TABLES) устроена чуть по-другому

Потенциальные проблемные места:

— Конечно, Costs. Используются разные VIRTUAL WAREHOUSES для разных типов нагрузок: EL, T, BI, reverse ETL
— Чтение 1К+ файлов из S3 очень медленно. 5 минут чтобы прочесть JSON-файлы с курсами валют на каждые 4 часа (±2 года истории)

Буду держать в курсе.

#database #modeling #snowflake

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Что делать если в СУБД отсутствуют необходимые функции и преобразования?

🔸Использовать User Defined functions или External functions (они же Lambda functions).

Мой кейс - это работа с гео-индексами H3 (не поддерживается в Amazon Redshift):

— Агрегация точек в шестигранники-гексагоны
— Обезличивание данных при сохранении полезности
— Работа с разным масштабом гексагонов (детально - обобщенно)
— Построение тепловых карт (Heatmaps)

🔸Как это делается в двух словах?

— Создаем Lambda функцию - это почти unlimited возможности на любых языках программирования
— Регистрируем функцию в SQL: CREATE EXTERAL FUNCTION lambda_udf AS ...
— Убеждаемся что всё корректно: конфигурация function, аргументы и типы данных, выделяемые ресурсы, таймауты и т.д.
— Тестируем функцию: input - output, вызываем в SQL SELECT lambda_udf(a, b) as result
— Мониторинг: следим за потреблением ресурсов и производительностью

🔸В чем могут быть проблемы?

— +1 точка отказа
— Сообщения об ошибках в СУБД неинформативны
— В логах Lambda сложно что-то понять
— AWS: not enough capacity in your Region
— Дикий debug, когда ошибка возникает на какой-то из 10М строк и неизвестно на какой

🔸Что с этим делать?

Моё мнение такое:

— Использовать те СУБД, которые обладают требуемыми функциональными возможностями
— По возможности избегать Lambda и UDF
— Если возможности нет - писать ПРОСТЫЕ функции: 1 задача, 1 действие, 1 результат

Это одна из причин, по которой я рассматриваю использование Snowflake. Там работа с H3 поддерживается из коробки.

#database #modeling #udf #lambda #h3 #redshift #snowflake

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👏1
H3 geospatial indexing system - почему это интересно для пользователей?

#h3
3
Абсолютно неинформативный лог при ошибке в Amazon Redshift + Lambda UDF

Затруднительно выяснять реальную причину проблемы. Особенно если при ручном запуске на порции данных ошибки нет.

#udf #lambda #h3 #redshift
Data Apps Design
Абсолютно неинформативный лог при ошибке в Amazon Redshift + Lambda UDF Затруднительно выяснять реальную причину проблемы. Особенно если при ручном запуске на порции данных ошибки нет. #udf #lambda #h3 #redshift
Эту проблему удалось решить, уменьшив количество строк, обрабатываемых в одном пакете (обращении к Lambda).

Проблема означала, что превышен размер ответа от Lambda Function. Чем больше строк на вход - тем больше ответ.

Решение: обрабатывать мЕньшими батчами. MAX_BATCH_ROWS 800
Подробнее о конфигурации функций в Redshift по ссылке.
1
👀 Интересуюсь, есть ли планы поддержи Clickhouse target в dbtCloud.

Как думаете, будет?
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔3
🙂 Хочу провести сравнительный анализ курсов и обучающих материалов в сфере работы с данными: Data Analytics / Engineering.

Чтобы было честно, начну со своей программы.

🔸Ключевые моменты:

— Упор на современные и удобные тулы: Modern Data Stack
— Фокус на создание ценности (бизнес-результат), а не процесс
— Кульминация каждых 4-5 занятий - практическая задача (Lab) оформленная как репо в Github
— В целом это квинтэссенция моего опыта и знаний, которые я получил на практике в течение последних 8 лет

🔸5 модулей + Capstone project:

1. Data Integration: ELT
2. DWH Basics
3. dbt Deep Dive
4. Business Intelligence
5. Advanced Toolkit
6. Capstone project

Программа подробно: https://github.com/kzzzr/analytics-engineer

До недавнего времени я предлагал подобную обучающую программу на русском языке на площадке OTUS, но уже скоро закончу преподавание в OTUS.

#learning

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍21
Для кого программа Analytics Engineer:

— Те, кто ищет оптимальные способы решения задач и работет "вдолгую"
— Кто хочет использовать Modern Data Stack в своем проекте
— Кто готов и любит работать руками, погружаться, копать, разбираться
— У кого уже есть неплохой опыт (1-3 года, 1-2 компании/проекта)
— Кто хочет найти новый проект / место работы с более интересными задачами

🟢Особенности и плюсы

— Современная программа, топовые инструменты: dbt, Clickhouse, Airbyte, Datalens, Metabase, Cube.js
— Вы научитесь решать задачи самым оптимальным путем, это хорошая игра "вдолгую"
— Рабочие Labs в Github, половина Labs уже имеют автоматическую проверку правильности выполнения через Github Actions
— Опыт работы в смежных областях: DevOps, Data Ops, Cloud Engineering, Marketing

🔴 Слабые стороны:

— Стек не 100% релевантен для большинства корпораций РФ
— Довольно высокий порог входа - легко не будет
— Для многих ценность информации и возможность применить знания под вопросом

#learning

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Data Apps Design
🙂 Хочу провести сравнительный анализ курсов и обучающих материалов в сфере работы с данными: Data Analytics / Engineering. Чтобы было честно, начну со своей программы. 🔸Ключевые моменты: — Упор на современные и удобные тулы: Modern Data Stack — Фокус на…
Есть интерес к тому, чтобы посмотреть на рынок сегодня и сделать выводы, понять проблемные точки, выделить белые пятна.

Где учитесь вы и какие материалы используете?
Предпочитаете платить за информацию или собирать самостоятельно в открытых источниках?
За какую информацию в своём опыте платили и не пожалели потраченных средств?

Присылайте ответы и ссылки в комменты.
Please open Telegram to view this post
VIEW IN TELEGRAM
Салют,

💥 Многие видели письма от dbtLabs об очередном повышении цен на услуги.
Для кого-то это повышение будет многократным.

В связи с этим, мои рекомендации по альтернативам (для оркестрации dbt jobs):

1. Github Actions (если используете Github)
2. Gitlab CI (если используете Gitlab)
3. Prefect - удобно, приятно, лаконично
4. Paradime.io - с радостью бы попробовал на замену dbtCloud

🟢 Чем вы пользуетесь, что могли бы рекомендовать и почему?

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
👍3
🙂 Datalens в Open Source

Отличная новость, теперь можно хостить этот BI on-prem.

Я пользуюсь Managed версией в Y.Cloud довольно давно.

🟢 Плюсы:
— Получается делать сложные вещи, например Period over Period аналитику (LAG([Принятые заявки (шт)], 52 ORDER BY [Неделя] BEFORE FILTER BY [Неделя]))
— Есть tabs на дашбордах (во многих BI этого нет! В т.ч. Looker)
— Удобный UI
— Достаточно богатые возможности для визуализации
— Готовые коннекторы для популярных СУБД: Clickhouse, Postgres

🔴 Из недостатков:
— Отсутствие code-based semantic layer - все метрики настраиваем руками в UI
— Для связи таблиц можно задать только условие равенства = (equi-join). Нельзя задать период для дат, например (dt >= date_start and dt <= date_end)
— Версионирование датасетов, чартов, дашбордов. Что-то вроде недавно появилось в этом отношении (drafts), но это всё равно не git
— Селектор (фильтр) действует только на 1 поле одного датасета. Возможно, есть workaround с alias, но это сложно

💬 Есть ли те, кто пользуется этим инструментом?
Какие преимущества и недостатки отметили?

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍2