Walmart M5 Data Platform Step 7 report · Airflow → Databricks Jobs
Step 07 · Complete

Airflow successfully triggered the Databricks Medallion job

End-to-end orchestration is live: local Airflow validates raw M5 files, then runs Databricks job walmart_m5_medallion (218487573209118) through Bronze → Silver → Gold (~11–12 minutes).

All Airflow tasks success Databricks job success batch m5_20260909T123803Z_ac813310
Airflow DAG
m5_pipeline
6 tasks · linear
Databricks Job ID
218487573209118
walmart_m5_medallion
Job notebooks
7
01 → 07 sequential
Latest run
~12m
full medallion refresh

1) End-to-end architecture

flowchart LR
  A[data/raw CSVs] --> B[Airflow m5_pipeline]
  B --> C[check + validate]
  C --> D[DatabricksRunNowOperator]
  D --> E[Job walmart_m5_medallion]
  E --> F[Bronze]
  F --> G[Silver]
  G --> H[Gold]
  H --> I[record_databricks_success]
      

2) Airflow DAG diagram

Defined in airflow/dags/m5_pipeline_dag.py.

flowchart LR
  start --> check_source_files --> validate_raw_files
  validate_raw_files --> run_databricks_medallion
  run_databricks_medallion --> record_databricks_success --> end
      
start
check_source_files
validate_raw_files
run_databricks_medallion
record_databricks_success
end
TaskTypeRole
check_source_filesPythonConfirm local raw CSVs exist
validate_raw_filesPythonSchema/size/rows + write manifest
run_databricks_medallionDatabricksRunNowTrigger & wait for Databricks job
record_databricks_successPythonWrite local success audit marker

3) Airflow UI proof — Graph view

Latest run: every task green, including Databricks trigger and success recorder.

Airflow Graph view of m5_pipeline with all six tasks successful including Databricks
Airflow Graph — start → check → validate → run_databricks_medallion → record → end (all success).

4) Airflow UI proof — Grid view

Earlier runs were short local-only validations. The latest run includes the full Databricks Medallion job (~11–12 minutes).

Airflow Grid view showing successful Databricks medallion run of about 12 minutes
Airflow Grid — latest column all green; duration bar ~00:11–00:12 for Databricks run.

5) Databricks Job DAG diagram

Job walmart_m5_medallion runs notebooks sequentially through the Medallion layers.

flowchart TB
  bronze_ingestion["01 bronze_ingestion"] --> silver_sales["02 silver_sales"]
  silver_sales --> silver_products["03 silver_products"]
  silver_products --> silver_calendar["04 silver_calendar"]
  silver_calendar --> gold_dimensions["05 gold_dimensions"]
  gold_dimensions --> gold_facts["06 gold_facts"]
  gold_facts --> gold_aggregations["07 gold_aggregations"]
      
Task keyNotebookLayer
bronze_ingestion01_bronze_ingestionBronze
silver_sales02_silver_salesSilver
silver_products03_silver_productsSilver
silver_calendar04_silver_calendarSilver
gold_dimensions05_gold_dimensionsGold
gold_facts06_gold_factsGold
gold_aggregations07_gold_aggregationsGold

6) Combined control plane

flowchart TB
  subgraph Airflow["Apache Airflow m5_pipeline"]
    A1[check_source_files] --> A2[validate_raw_files]
    A2 --> A3[run_databricks_medallion]
    A3 --> A4[record_databricks_success]
  end

  subgraph Databricks["Databricks Job walmart_m5_medallion"]
    B1[01 Bronze] --> B2[02 Silver sales]
    B2 --> B3[03 Products/stores/prices]
    B3 --> B4[04 Calendar]
    B4 --> B5[05 Gold dims]
    B5 --> B6[06 Gold facts]
    B6 --> B7[07 Gold aggs]
  end

  A3 -->|Run Now + wait| B1
  B7 -->|job success| A4
      

7) Success marker written locally

{
  "status": "databricks_medallion_success",
  "batch_id": "m5_20260909T123803Z_ac813310",
  "databricks_job_id": "218487573209118",
  "layers": ["bronze", "silver", "gold"],
  "notebooks": [
    "01_bronze_ingestion",
    "02_silver_sales",
    "03_silver_products",
    "04_silver_calendar",
    "05_gold_dimensions",
    "06_gold_facts",
    "07_gold_aggregations"
  ]
}

File: data/ingestion/manifests/databricks_run_latest.json

What’s next