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
Snowflake Reports Financial Results for the Fourth Quarter and Full-Year of Fiscal 2023

Рост по всем показателям. Впечатляет, не правда ли?

Хотелось бы сравнить результаты с Databricks.
В частности больше всего интересует количество клиентов (в т.ч. $1M+ customers), а также динамику этих показателей по годам.

Однако, Databricks отчетность не публикует 🤔
Databricks is a privately held company and is not publicly traded on NYSE or NASDAQ in the U.S.

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from [TEST] SANDBOX
[TEST] SANDBOX
https://mikkeldengsoe.substack.com/p/data-as-share-of-workforce
Неоднозначная публикация.

А я считаю, что чем выше уровень maturity в компании, тем меньше должен быть sum of data work.

Что это значит?

— Все рутинные и повторяющиеся операции автоматизированы
— Исключена поддержка legacy решений и инструментов
— Для всех заинтересованных в data лиц в компании созданы идеальные условия: SQL access, self-service BI, A/B experiments

Метрику Data team as % of workforce в текущей компании, где я работаю я бы оценил в 2.5-3%

Я многое сделал, увидел длительную эволюцию подходов и решений, выбора инструментов и бизнес-задач. Отрефакторил тысячи строк кода.

На протяжении 4-х лет я единственный Data Engineer в команде.
Говорит ли это о том, что sum of data work не изменилась?

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Single Person Team в Data Engineering

В предыдущем посте упомянул: На протяжении 4-х лет я единственный Data Engineer в команде.

Эта фраза вызвала вопрос в комментах, на который есть желание ответить развернуто.

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

🔸По типу деятельности:

— Support / Bugfixing

Поддержка текущих операций, исправление ошибок: dbt jobs, Data Integration, schema migration (backend changes), data mapping

— New features

Появление новых и эволюция текущих: витрины данных, метрики, интеграции (-> DWH, DWH ->)

— Refactoring

Своевременный анализ и избавление от устаревших, неиспользуемых частей системы, технологий и подходов. Переход на что-то более управляемое, централизованное. Как результат, я инвестирую усилия в то, чтобы в будущем избавлять себя и команду от потока бессмысленных и поглощающих время фиксов и исправлений (иногда в авральном режиме).

— Infrastructure & Tooling

В основном, это стратегические задачи: выбор новой database platform (Amazon Redshift -> Snowflake), прототипы дашбордов в новых BI-тулах (Looker -> ??), Semantic Layer (LookML -> Cube / MetricFlow), reverse-ETL PoC (Census / Hightouch)

🔸По сфере:

— Анализ требований

Обязателен перед тем как я берусь делать что-либо. Обычно сводится в уточняющим вопросам в Slack/Jira (зачем делать это? какие альтернативы? учтены ли будущие изменения?). В результате у меня есть понимание того, что должно получиться в результате, как и кем это будет использоваться, и возможные пути решения (2-3 альтернативных варианта).

— Интеграция данных

Стараюсь использовать централизованный подход. Максимально все источники данных через SaaS Hevo.

— Моделирование данных

Результат - цепочка преобразований в dbt-проекте, заканчивающаяся Data Mart. Моя задача - получить результат с минимальными изменениями (используя те преобразования, которые уже в наличии).

— Поставка данных (data services)

50% - это всевозможные дашборды и визуализации. Остальные - это работающие интеграции с внешними системами: CRM, Customer Engagement, Backend, etc.

— Поддержка инфраструктуры

Большая часть сервисов - managed: Hevo, Redshift, Census. Конфигурация нужно, но нет необходимости мониторить CPU, добавлять диски и т.п. Есть работа, связанная с security, privacy, access segregation.
С networking, VM provisioning, Container orchestration (k8s) помогает SRE (удивительно, но который тоже Single Person Team 😄)

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
🙂 Please boost my channel so that I can post stories for you https://t.me/enthusiastech?boost
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡1
Хочу 100 графиков на дашборде и чтобы отображались за 10 секунд

Помните историю, которую рассказывал в июле? 🚀 Ключевые метрики компании на дашборде - путь от hardcoded cube к live calculated measures. Она вовсе не закончилась, но активно продолжается.

WBR Dashboard

В компании есть ключевой дашборд WBR (just like Amazon has), который представляет из себя набор метрик (всего около 50), каждая из которых визуализируется как на недельном, так и на месячном графиках, включая целевые (target) значения, YoY абсолютные и относительные значения (% Change).

До рефакторинга 2023-07:

— Одна таблица, предварительно агрегированная на уровне базы данных (dbt).
— Отсутствие гибкости (слишком долго и слишком сложно что-то менять и добавлять)
— Расчет агрегированной таблицы занимает значительное время (около 1 часа, и может упасть с ошибкой)

После рефакторинга 2023-07:

— Дашборд на 100% сделан в LookML (в виде кода Looker)
— Каждый график - это Merge Query, объединяющий measures, target values, calculated fields для YoY (offset)
— Каждый график в запросе обращается к Витринам с детальными данными (1 строка = 1 транзакция и т.д.)

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Data Apps Design
Хочу 100 графиков на дашборде и чтобы отображались за 10 секунд Помните историю, которую рассказывал в июле? 🚀 Ключевые метрики компании на дашборде - путь от hardcoded cube к live calculated measures. Она вовсе не закончилась, но активно продолжается.…
Ключевые проблемы после рефакторинга

В команде забыли про проблемы dev / release / dashboard errors, но мы потеряли в производительности:

— Время загрузки дашборда увеличилось до неприемлемых 30-120 секунд
— Cached версия - почти мгновенно, но! Просмотр дашборда с другими фильтрами (страна, город, сервис) - те же 30-120 секунд
— Количество запросов, необходимых для отображения дашбора выросло до 300
— Есть трудности со сбором объективной статистики по запускам дашборда (время загрузки)

Меры, которые я предпринимаю

— Ограничить количество строк в каждом запросе к БД, например 58 weeks ago for 6 weeks, 6 weeks ago for 6 weeks для Weekly + YoY
— Установить политики кэширования (Looker datagroups), прогревать кэш перед встречей WBR (Looker schedules)
Aggregate awareness - иметь мЕньшие, предагрегированные таблицы для быстро исполнения запросов
— Собрать статистику по запускам дашборда (из метаданных Looker): # Dashboard Runs, Average Runtime, % Cached Queries
— Избавиться от Merge Queries там где это возможно

Желаемый результат

— Время загрузки дашборда 10-15 секунд (в том числе при изменении значений фильтров)
— Добиться того, чтобы значительная часть запросов использовала кэш (почти мгновенно)
— Производительность не снижается, если одновременно с дашбордом работают достаточно большое количество людей

Планирую сделать серию статей с подробностями, выводами и рекомендациями формата "Хабр".

🔥 Stay tuned

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

Проблема:

— Вы строите отчетность, возможно, дашборды в BI
— Дашборды запускают агрегирующие запросы (типичный OLAP)
— Запросов много: разные метрики, разные измерения, фильтры
— Все запросы задействуют огромные таблицы фактов (1М+)
— Время отклика, стоимость и количество сканированных данных оставляет желать лучшего

Вы задумываетесь над тем, можно ли это как-то оптимизировать?

Решение:

— Делать предварительную агрегацию данных (миллионы строк -> тысячи строк)
— Всегда в запросах использовать мЕньшую таблицу там, где это возможно

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
2
👍3
В чем ценность решения?

— Performance: для ответа на вопросы используются таблицы, меньшие на порядки
— Cost savings: экономим ресурсы, эффект будет явно заметен на масштабе
— Reduced complexity: вместо хардкода и "отдельных" таблиц используем встроенные механизмы

Что необходимо учитывать:

Структура таблицы должна позволять получить ответ на вопрос

— Field factors: агрегат должен включать запрашиваемые dimensions, measures, filters
— Timeframe factors: дни можно агрегировать до недели, наоборот - не получится
— Measure type factors: складывать можно аддитивные меры (sum, count, average, min/max), неаддитивные складывать нелья (sum / count / average distinct, median)

👉 В комментах небольшой пример с использованием Looker от меня.
👍1
🙂 Могли бы покритиковать архитектуру Data Stack? 🙂

Салют!

Задача:

— Отчетность по операционным метрикам Near Real Time
— Устойчивый стек, возможность роста и эволюции

Архитектура:
— Debezium + Kafka для NRT репликации данных в DWH
— Clickhouse + dbt как движок DWH
— Cube как Semantic layer + Cache Store
— Superset как BI

Вопросы:


— Как вам архитектура решения и Data Stack?
— Кто работал с Debezium + Kafka: какие рекомендации по Deploy + Operations

#kafka #clickhouse #realtime #debezium

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
Data Apps Design
🙂 Могли бы покритиковать архитектуру Data Stack? 🙂 Салют! Задача: — Отчетность по операционным метрикам Near Real Time — Устойчивый стек, возможность роста и эволюции Архитектура: — Debezium + Kafka для NRT репликации данных в DWH — Clickhouse + dbt как…
И еще, всё это будет в Cloud и управлять этим тоже хочется в полу-автоматическом режиме.

Так что скорее всего Terraform + Ansible
Для окрестрации контейнеров K8S

Есть опыт, краткие рекомендации и pain points?

#kafka #clickhouse #realtime #debezium
👀 Продлеваю контракт с Looker (Annual Contract Renewal) 👀

🔹 Еще как минимум на год

— Со слов Sales Rep. продления On Demand (Month—to—month) нет
— Буду внимательно рассматривать альтернативы в течение этого времени

🔹 Текущие pain points в Looker

— Есть проблема с производительностью громоздких дашбордов (Company Wide KPI)
— SQL Runner только для лицензии Developer (дорого)

🔹 Есть уже такие привычные, но всё же Killer features

— Semantic Layer (LookML)
— Everything as Code (incl. dashboards!)
— Developer mode, sudo as user, rich API

🔹 Ценообразование странное и непрозрачное

— Есть базовая часть $USD = движок Looker + ряд лицензий (2 Dev + 10 Users)
— Количество остальных лицензий считаются по тарифам и добавляются к общей сумму контракта

Так вот, в моем случае, в прошлый год тот, кто занимался продлением, ошибочно заложил профицит этих лицензий.
Расcчитывали на рост штата, а фактически он поредел. В итоге, сумма платежей стала на 20—30% выше, чем могла быть.

💬 Кто еще на Looker или каких—то других BI?
Как оцениваете своё положение?

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Data Apps Design
👀 Продлеваю контракт с Looker (Annual Contract Renewal) 👀 🔹 Еще как минимум на год — Со слов Sales Rep. продления On Demand (Month—to—month) нет — Буду внимательно рассматривать альтернативы в течение этого времени 🔹 Текущие pain points в Looker — Есть…
Я собираюсь сэкономить $20K на правильном сетапе и использовании лицензий.

К, примеру, мне пришлось порядка 30 пользователям поменять роль. Я сделал через API это довольно быстро.

Кстати, эти 30 кандидатов я взял из внутренней статистики пользования и активности Looker.
🔥2
🔥 Открываю сбор заявок на серию вебинаров Building Modern Data Analytics Apps 🔥

4 года я готовил программы и вел занятия в Analytics & Data в ОТУС. Пришло время развивать свои проекты.

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

— 9-10 связанных вебинаров на которых строим Analytics Apps
— True Modern Data Stack: удобно, функционально, красиво - как я люблю
— Slides, Live coding, Demos, Labs (ваша практика)
— Участие будет платное
— Группа не более 10 человек

В ближайшее время опубликую:

— Программа курса (темы, подходы, стек) и почему она лучшая
— Результаты: ваши знания, умения, портфолио
— Дальнейшее сотрудничество: кому-то предложу делать всё это для клиентов с деньгами
— Углубленные серии: DataOps (MLOps), Advanced Modeling

Оставить заявку: https://forms.gle/4vGfQhCFTwgUoHBo7

#learning

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥122
👀 Как вы структурируете свои мысли? 👀

Вопрос больше относится к ведению записей, заметок, наблюдений (в т.ч. по рабочим проектам и задачам).

— Лет 5-7 назад я пользовался Evernote.
— Сегодня для личных заметок я использую Notes (Apple).
— Все записи, относящиеся к работе я веду просто в git-репозитории в markdown файлах.

На какие важные критерии я обращаю внимание?

— Кросс-девайс (рабочий, домашний компьютер, телефон)
— Разметка текста: предпочтительно Markdown
— Структура ведения: папки, ассоциативные модели (путешествия, работа, покупки, ...)
— Версионирование: история изменений
— Media: возможность вставить скан схемы с бумаги, фотографию, картинку
— Links: ссылки на другие записи, внешние ссылки, хештеги
— Расширенные возможности поиска и сортировки заметок (дата создания, изменения)

И еще очень важно - возможность bulk export / import записей! Если менять инструмент - это критично.

Сейчас присматриваюсь к Obsidian.

Кто что использует и какие ощущения?

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3
😒 dbt Semantic Layer - сплошное разочарование 😒

Итак, попробовав несколько разных подходов, собрав результаты и отзывы, эволюционно я пришел к тому, что для ключевого KPI-дашборда компании (Weekly Business Review) лучше всего иметь все метрики в необходимых разрезах и гранулярностях в предрассчитанном виде в СУБД в одной небольшой таблице.

Сегодня в течение дня я экспериментировал с dbt Semantic Layer 2.0 (бывший Metricflow, который стал частью dbt Labs).

Напомню, что ранее массово были публикации и обсуждения dbt Semantic Layer 1.0. Коротко, его суть сводилась к следующему:

— В .yml файле декларативно описывались правила расчета метрик со ссылками на dbt-модели
— В виде dbt package устанавливался набор специализированных макросов
— Эти макросы могли быть использованы либо статически (материализация в dbt models)
— Либо динамически (через интерактивное обращение из BI и других инструментов)

Однако, с версии dbt-core 1.6.0 этот подход стал deprecated и дальнейшее его развитие и поддержка не подразумевались. Вразумительного объяснения, почему этот подход стал deprecated у меня нет. Есть только предположение, что на этом подходе недостаточно хорошо и много можно зарабатывать.

TO BE CONTINUED 🔻

#metrics #semantic_layer #dbt

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
💔2👍1
😵‍💫 dbt Semantic Layer - сплошное разочарование ч.2 😵‍💫

Итак, с dbt Semantic Layer 2.0 я проделал следующие шаги:

— Обновил версию dbt-проекта до 1.7.X, добавил Metricflow в свой devcontainer (просто и удобно)
— Создал простое описание семантического слоя в semantic_layer.yml на базе одной из витрин dbt (отличается от Semantic Layer 1.0, и не в лучшую сторону)
— Добавил файл с описанием метрик metrics.yml с одной метрикой = # Journeys
— Генерировал файл с артефактами командой dbt parse
— Обращался к Metricflow через CLI: mf list, mf validate-configs, mf query
— Настроил dbt Semantic Layer в dbtCloud (обратите внимание на количество шагов и их)

Имеем в сухом остатке:

— Весь процесс конфигурации чтобы начать использовать на примитивном примере стал сложнее
— Есть сомнения в возможностях получить сложные расчеты и метрики с текущим функционалом Metricflow (задать это декларативным способом, в т.ч. связи таблиц = joins)
— Неясный концепт и дальнейшее развитие, вся рабочая схема выглядит ненадежно
— Это только для пользователей dbtCloud Team / Enterprise (sorry dbt Core users)
— И как следствие только для адаптеров Redshift, Snowflake, BigQuery, Databricks (никаких Clickhouse и community adapters)
— Нет простого SQL API (есть что-то неказисто-сложное на jdbc:arrow-flight-sql, что я не стал подключать через DBeaver - терпение кончилось)
И внимание! Метрики больше нельзя материализовать через dbt models в том же проекте (т.е. посчитать и записать значения в таблицу для дальнейшего чтения)

➡️ Итого: сложно, сомнительно, неудобно, с ограничениями и за плату.

Относительно всего вышеуказанного, такой инструмент как Cube смотрится гораздо привлекательнее и интереснее.

Это я уже не говорю о Looker, который на протяжении многих лет совершенствует свой Semantic layer. В плане feature parity, Looker - это топ, вершина, олимп. Основной минус Looker - это платный продукт, подразумевающий vendor lock-in.

😒 Более того, есть чувство, что dbt Labs теперь ставит своей задачей заработок денег, монетизацию через свой основной платный продукт - dbtCloud (включая Semantic Layer), при этом качество и продуктовая ценность новых предложений неуклонно падает.

Следующие планируемые посты по этой теме:

— Обзор подхода с расчетом метрик (On the fly vs. Pre-aggregated)
— Результаты и сравнение этих подходов на практике используя Looker
— Почему с учетом моих бизнес-требований лучше оказался всё же подход Pre-aggregated
— Обзор возможностей Cube для решения этих задач

💬 Задавайте вопросы, оставляйте комментарии - обсудим.

#dbt #metrics #semantic_layer

🌐 @data_apps | Навигация по каналу
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9😢4
Data Apps Design pinned «🔥 Открываю сбор заявок на серию вебинаров Building Modern Data Analytics Apps 🔥 4 года я готовил программы и вел занятия в Analytics & Data в ОТУС. Пришло время развивать свои проекты. Ключевые моменты: — 9-10 связанных вебинаров на которых строим Analytics…»