Kdybych dostal korunu za každou ETL pipeline postavenou na stored procedures v Oracle… Moderní data engineering stack se za poslední roky dramaticky změnil. dbt, Airflow, Snowflake — nástroje, které mění způsob, jakým pracujeme s daty. Tady je náš stack a proč jsme si ho vybrali.
Starý svět: ETL v Oracle¶
Typický český enterprise: Oracle DB, stored procedures pro transformace, scheduling přes Oracle Scheduler nebo cron. Funguje to? Ano. Je to udržitelné? Sotva. Verzování? Žádné. Testování? Neexistující. Dokumentace? Komentáře v PL/SQL (možná).
ELT místo ETL¶
Paradigm shift: místo transformací před načtením (ETL) načtěte raw data a transformujte v cílovém systému (ELT). Proč? Protože moderní warehousy (Snowflake, BigQuery) mají dostatek compute na transformace. A raw data v landing zone vám dávají možnost re-procesovat, když se změní logika.
Náš stack¶
Ingestion: Airbyte pro standardní zdroje (databáze, API, SaaS), custom Python scripty pro specifické zdroje. Data landing zone v Azure Blob Storage.
Warehouse: Snowflake. Ano, je to drahé. Ale: separation of storage and compute, auto-scaling, time travel, zero-copy cloning pro dev/test prostředí. Pro enterprise s mnoha data consumers je to game changer.
Transformation: dbt (data build tool). SQL transformace verzované v gitu, testování dat (not null, unique, referential integrity), dokumentace generovaná z kódu. Pro SQL-native analytiky je to revoluce.
Orchestrace: Apache Airflow. DAGs v Pythonu, bohatý ekosystém operátorů, UI pro monitoring. Na Kubernetes (KubernetesExecutor) pro škálování.
BI: Metabase pro self-service analytics (jednoduché, free tier), Looker pro power users. Metabase nad Snowflake funguje překvapivě dobře pro 90 % analytických dotazů.
dbt — proč je to game changer¶
dbt změní SQL transformace na software engineering projekt: verze v gitu, pull requesty, code review, CI/CD, testy, dokumentace. Analytik píše SELECT, dbt řeší materialization (view, table, incremental).
-- models/marts/finance/monthly_revenue.sql
SELECT
date_trunc('month', order_date) AS month,
SUM(amount) AS revenue,
COUNT(DISTINCT customer_id) AS customers
FROM {{ ref('stg_orders') }}
WHERE status = 'completed'
GROUP BY 1
Real-time: Kafka¶
Pro batch stačí Airflow + dbt. Pro real-time eventy (transakce, IoT data, clickstream) Apache Kafka. Kafka → Snowflake (Snowpipe) pro near-real-time analytics. Kafka → custom consumer pro real-time alerting.
Data governance¶
GDPR v ČR není volitelné. Data catalog (Datahub), column-level masking v Snowflake, audit logging kdo co kdy dotazoval. Pro regulované odvětví (banky) je to podmínka provozu.
Data jako produkt¶
Moderní data stack není jen o nástrojích — je o přístupu. Data jako produkt, version-controlled transformace, automatizované testování. Pokud stále píšete stored procedures bez verzování a testů, je čas na upgrade.