Skip to main content

dbt Artifact Storage: Azure Blob Storage Configuration

This guide walks you through configuring Azure Blob Storage as the artifact storage layer for dbt Core + OpenMetadata integration. Perfect for Microsoft Azure deployments.

Prerequisites Checklist

RequirementDetailsHow to Verify
Azure AccountWith permissions to create Storage Accountsaz account show
Azure CLIInstalled and configuredaz --version
dbt ProjectExisting dbt projectdbt debug
OrchestrationAirflow or ADFAccess to pipeline configuration
Database ServiceData warehouse already ingestedCheck Settings → Services

Step 1: Azure Blob Storage Setup

1.1 Create Storage Account and Container

Expected output:

1.2 Create Blob Container

1.3 Configure Access (Choose One Option)

Option A: Using Storage Account Key (Simplest)
Option B: Using SAS Token (Read-only for OpenMetadata)
Option C: Using Managed Identity (Recommended for AKS)

1.4 Verify Blob Storage Access

Step 2: Upload Artifacts from dbt

2.1 Understanding dbt Artifacts

OpenMetadata requires these dbt-generated files:
FileGenerated ByRequired?What It Contains
manifest.jsondbt run, dbt compile, dbt buildYESModels, sources, lineage, descriptions, tests
catalog.jsondbt docs generateRecommendedColumn names, types, descriptions
run_results.jsondbt run, dbt test, dbt buildOptionalTest pass/fail results, timing
Generate all artifacts:

2.2 Complete Airflow DAG

This is a complete, working DAG for Azure deployments. Save as dbt_with_azure.py in your Airflow DAGs folder:

2.3 Alternative: Azure CLI Upload

For simpler setups, use Azure CLI directly:

Step 3: Configure OpenMetadata

Configuration

  1. Go to Settings → Services → Database Services
  2. Click on your database service (e.g., “production-synapse”)
  3. Go to the Ingestion tab
  4. Click Add Ingestion
  5. Select dbt from the dropdown
Configure dbt Source (Azure):
FieldValueNotes
dbt Configuration SourceAzureSelect from dropdown
Azure Account Namedbtartifacts12345Your storage account name
Azure Container Namedbt-artifactsYour container name
Azure Blob PrefixLeave empty or specify folder
Azure Credentials (choose one): Option A: Using Account Key
FieldValue
Azure Account Keyabc123...Storage account key
Option B: Using Connection String
FieldValue
Azure Connection StringDefaultEndpointsProtocol=https;AccountName=...Full connection string
Configure dbt Options:
FieldRecommended Value
Update DescriptionsEnabled
Update OwnersEnabled
Include TagsEnabled
Classification NamedbtTags
Test & Deploy:
  1. Click Test Connection
  2. If successful, click Deploy
  3. Click Run to trigger immediately

Verification

After running the full pipeline, verify:
CheckHow to VerifyExpected Result
Azure blobs existaz storage blob list --container-name Xmanifest.json, catalog.json listed
Ingestion completedOpenMetadata UI → Service → Ingestion tabGreen status, no errors
Lineage appearsClick on a dbt model → Lineage tabUpstream/downstream connections
Descriptions syncedClick on a table → Schema tabColumn descriptions visible
Tags appearClick on a table → Tags sectiondbt tags shown

Troubleshooting

IssueSymptomCauseSolution
Access Denied”403 Forbidden” errorInsufficient permissionsVerify storage account key or SAS token is correct
Container Not Found”404 Not Found”Container name incorrectCheck container name matches actual container
Invalid Credentials”Authentication failed”Wrong credentialsVerify account key, connection string, or SAS token
No blobs foundArtifacts not appearingWrong upload path or failedCheck container and verify upload succeeded
Stale dataOld lineage/descriptionsOld artifacts in blobVerify dbt DAG uploads fresh artifacts

Next Steps

See other storage options: S3 | GCS | HTTP | Local | dbt Cloud