Tutoriel : projet fictif NovaRetail

Objectif : partir de données brutes de ventes et finir avec des tables préparées pour le reporting.

Ce tutoriel est aligné sur la section « Tutoriel interactif » du README.md.

Vue d’ensemble

        flowchart LR
   sourceLakehouse["BronzeLakehouse (brut)"] --> cleanStep["Nettoyage"]
   cleanStep --> silverStep["Enrichissement Silver"]
   silverStep --> curatedLakehouse["SilverLakehouse (curated)"]
   curatedLakehouse --> preparedStep["Préparation sémantique"]
   preparedStep --> preparedLakehouse["PreparedLakehouse"]
   preparedLakehouse --> warehouseStep["Warehouse + BI"]
    

Étape 1 — Lire les ventes brutes

import fabrictools as ft

orders_raw = ft.read_lakehouse("BronzeLakehouse", "dbo/orders_raw")
orders_raw.show(5)

Étape 2 — Nettoyer les données

orders_clean = ft.clean_data(orders_raw)

Étape 3 — Enrichir en métadonnées Silver

orders_silver = ft.add_silver_metadata(
    orders_clean,
    source_lakehouse_name="BronzeLakehouse",
    source_relative_path="dbo/orders_raw",
    source_layer="bronze",
)

Étape 4 — Écrire en Silver

ft.write_lakehouse(
    orders_silver,
    lakehouse_name="SilverLakehouse",
    relative_path="dbo/orders",
    mode="overwrite",
    partition_by=["year", "month", "day"],
)

Étape 5 — Scanner la qualité

quality = ft.scan_data_errors(orders_silver, include_samples=True, display_results=True)
quality["summary_df"].show(truncate=False)

Étape 6 — Fusion incrémentale (upsert)

orders_updates = ft.read_lakehouse("BronzeLakehouse", "dbo/orders_updates")

ft.merge_lakehouse(
    source_df=orders_updates,
    lakehouse_name="SilverLakehouse",
    relative_path="dbo/orders",
    merge_condition="src.order_id = tgt.order_id",
)

Étape 7 — Écriture dans un Warehouse

ft.write_warehouse(
    df=orders_silver,
    warehouse_name="RetailWarehouse",
    table="dbo.orders",
    mode="overwrite",
)

Étape 8 — Pipeline préparé (table unique)

prepared_df = ft.prepare_and_write_data(
    source_lakehouse_name="SilverLakehouse",
    source_relative_path="Tables/dbo/orders",
    target_lakehouse_name="PreparedLakehouse",
    target_relative_path="Tables/dbo/orders_prepared",
    mode="overwrite",
)

Étape 9 — Pipeline préparé (bulk)

bulk_result = ft.prepare_and_write_all_tables(
    source_lakehouse_name="SilverLakehouse",
    target_lakehouse_name="PreparedLakehouse",
    include_schemas=["dbo"],
    continue_on_error=True,
)
print(bulk_result["successful_tables"], bulk_result["failed_tables"])

Étape 10 — Dimensions pour reporting

dims = ft.generate_dimensions(
    lakehouse_name="PreparedLakehouse",
    warehouse_name="RetailWarehouse",
    include_date=True,
    include_country=True,
    include_city=True,
)

Pour aller plus loin, consultez la API publique (import racine) et la FAQ.