Data Apps Design – Telegram
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
В среду 28.07 в 14.00 состоится презентация моей программы Analytics Engineer.

4 месяца интенсивного погружения в самые востребованные и актуальные навыки на стыке миров Data Engineering & Data Analytics.

На вебинаре расскажу про потребность на рынке, содержание программы, отвечу на вопросы.

Ссылка на трансляцию будет здесь за 5-10 минут.
MongoDB – одна из самых популярных документ-ориентированных баз данных класса NoSQL с большим сообществом пользователей. Ее основными преимуществами являются гибкость схемы хранения, иерархическая структура документов, поддержка расширенного набора типов данных. Сегодня MongoDB чаще всего используется как бэкенд веб- и мобильных приложений.

Казалось бы, зачем может потребоваться извлекать схему данных в schemaless database? Однако это может быть крайне полезно и в некоторых ситуациях абсолютно необходимо:

• Репликация данных в аналитическое хранилище

• Интерактивная аналитика из BI-инструментов (SQL)

• Аудит имеющейся структуры БД

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

https://habr.com/ru/company/otus/blog/571286/
SQL – это нескучно. С современными инструментами возможности языка кратно возросли. Мультитул для моделирования данных dbt, современные колоночные аналитические СУБД позволяют буквально творить с данными чудеса.

Меня зовут Артемий и я Analytics Engineer в компании Wheely. И сегодня я подготовил небольшой экскурс в реальные и интересные сценарии использования гибридного SQL:

– Операции Pivot и Unpivot для табличных данных
– Генерирование суррогатного ключа и ключа конкатенации
– Гибкая фильтрация записей из таблиц-источников
– Автоматизация экспорта данных из Хранилища в S3
– Валютные курсы, Continuous Integration, Data Quality

https://habr.com/ru/company/otus/blog/572816/
Современные Data Pipelines превратились в commodity наподобие электричества в розетке – они просто должны быть и функционировать, обеспечивая базовые потребности аналитиков и инженеров.

Множество компаний, таких как Fivetran, Hevo, Alooma, сегодня зарабатывают на предоставлении Data Pipelines / Integration как сервис. Наряду с очевидными преимуществами, основными недостатками являются закрытый исходный код и отсутствие возможности быстро добавлять новые коннекторы.

В этой публикации на примере репликации данных открытого счетчика Яндекс.Метрика в объектное хранилище S3 я познакомлю вас с Airbyte – решением с открытым исходным кодом. Это новый стандарт для выстраивания потоков интеграции данных из всевозможных приложений, баз данных и API в аналитические хранилища данных, озера данных.

https://habr.com/ru/company/otus/blog/574704/
Яндекс.Облако не перестает приятно удивлять.
Респект, так держать.

Скоро на канале будут кейсы Маркетинговой аналитики с использованием Я.Облака:
- ELT + Airbyte
- S3 Data Lake (Parquet columnar)
- dbt + Clickhouse
- Dashboarding + Datalens
А вот служба поддержки разочаровывает 🙃
15 дней на ответ совсем не о том.

P.S. пытаюсь поставить clickhouse-jdbc-bridge на управляемую версию CH от Я.Облака, чтобы писать запросы к другим базам из CH. Хитрый замысел.
Подсказка для тех, кто будет подключаться к Managed Yandex.Clickhouse из DBeaver (или любой JDBC):

1. Установить сертификат

mkdir -p ~/.clickhouse-client /usr/local/share/ca-certificates/Yandex && \
wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" -O /usr
/local/share/ca-certificates/Yandex/YandexInternalRootCA.crt && \
wget "https://storage.yandexcloud.net/mdb/clickhouse-client.conf


2. Использовать порт 8443

3. Сконфигурировать ssl в настройках драйвера

ssl : true
sslrootcert : /usr/local/share/ca-certificates/Yandex/YandexInternalRootCA.crt (путь к сертификату)
socket_timeout : 300000 (5 минут таймаут запроса)


Позже напишу про подключение для dbt
Сижу и где-то час втыкаю, не понимая почему упорно не запускается тест на relationships (foreign keys).
Экспериментировал с наличием и порядком параметров теста, с отступами в yaml 🤨

Особенно будет интересно тем, с кем это смотрели на занятии Data Quality в прошлый четверг - у нас тогда не запустился тест.
Зарекся разобраться – разобрался.

Оказывается всё просто:

Тест relationships затрагивает 2 модели. При запуске тестов только на child, либо только на parent тест не запустится.
А вот при запуске на обе модели - да!

dbt test -m flt_orders_arrays # won't trigger
dbt test -m flt_orders_events # won't trigger
dbt test -m flt_orders_arrays flt_orders_events # triggers!

Описание теста (definition):

    - name: flt_orders_arrays
columns:
- name: request_id
tests:
- dbt_utils.relationships_where:
to: ref('flt_orders_events')
field: request_id
from_condition: get_array_length(events) > 0
Data Apps Design
Сижу и где-то час втыкаю, не понимая почему упорно не запускается тест на relationships (foreign keys). Экспериментировал с наличием и порядком параметров теста, с отступами в yaml 🤨 Особенно будет интересно тем, с кем это смотрели на занятии Data Quality…
В данном конкретном случае я хочу проверить что все те события (заказы) с непустым массивом events (событий в заказе) доезжают в нижележащую модель, в которой происходит парсинг этого массива (каждое событие становится отдельной строкой с атрибутами).

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

Наш кластер Redshift непроизвольно рестартится несколько раз в сутки. Причина остается невыясненной и способов выяснить это я пока не вижу. В целом это часто аффектит нашу текущую деятельность, прерывая процессы расчета витрин.

Напишу сюда, как получу ответ.
Также есть еще один баг, связанный с MATERIALIZED VIEW. Подробности будут позже.
Рассматриваем в Wheely апгрейд кластера Redshift и в частности переход на ноды 3-го поколения RA3

Основная фишка этих нод – разделение compute & storage (как в Snowflake)
Потенциально, я вижу следующие плюсы в разделении compute/storage:

- Blue/green deployments (first create new schema, then rename it – swap new version)
- Dedicated sandbox schema for each analyst
- Eliminate disk full errors for heavy caculations (full refresh of seances)

Однако есть вопросы по стоимости и ресурсам нод DC2 vs RA3.
Я составил таблицу, из которой видно что вместо кластера на RA3 выгоднее сорать 10 нод DC2.large и получить 20 CPU (вместо 12 на RA3), 150GM RAM (вместо 96 на RA3).

Задал вопрос в Amazon, возможно они пояснят, чем compute RA3 лучше, и почему такой кластер выходит дороже.
У кого-то есть такой опыт?
Обожаю Looker.
С версии 21.0 по дефолту дашборды строятся в новом стиле.
Однако часть пользователей привыкли к предыдущей (legacy) версии.

Для обратной совместимости фичей заботливо оставлена возможность включить поддержку Legacy Features.
Вернул к предыдущему виду. Сам дашборд не могу показать :)

#looker #bi
Начали пылесосить события Github организации Wheely в наше Хранилище.
Интеграция с помощью Webhook:
– PushEvent
– PullRequestEvent
– ReleaseEvent

Пока отталкиваемся от опыта Gitlab – Centralized Engineering Metrics. Интересные метрики:
– MR Rate
– MRs vs Issues
– MRs by team members

Идея – отслеживать метрики и привязывать цели/OKR разработчиков и команд к этим метрикам.

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

#dwh #pipelines
Here's an easy way to generate comprehensive definition (.yml) of your data sources:

dbt run-operation generate_source --args '{"schema_name": "hevo", "generate_columns": "True", "include_denoscriptions": "True"}' > src.yaml


- get the list of attributes for every source table
- include denoscriptions (docs) to be filled

My goals are to:

- Create a single source of truth unifying source data (backend, marketing, events), data marts (DWH), exposures (dashboards, reports) in one place – dbt Docs
- Provide smooth access to docs website via Google SSO / AWS Cognito to whole company
- Cover source tables with freshness and schema tests
- Enable filling in comments and denoscriptions into predefined structure
- Put docs where the code is (version controlled)

I will use the same generator for all the dbt models.

#docs #pipelines #catalog
Long live Telegram
Rest in peace Facebook, WhatsApp, Instagram
Right now 😄
Data Apps Design
Начали пылесосить события Github организации Wheely в наше Хранилище. Интеграция с помощью Webhook: – PushEvent – PullRequestEvent – ReleaseEvent Пока отталкиваемся от опыта Gitlab – Centralized Engineering Metrics. Интересные метрики: – MR Rate – MRs vs…
Here's what Github has sent onto our webhook for past 5 days.

Events of most interest:

- Issues & Pull requests (#, who, when, where, how hard)
- Push (commit frequency and complexity by repos, teams)
- Workflows (Actions metrices)
- Checks (Continuous Integration metrices)

Detailed event payload described at Github Docs.

This data is heavy nested, so new SUPER data type (Redshift) comes really handy for this task to unnest and flatten data.

Soon I will build something worthwhile on top of this data.

#dwh #pipelines #github