Skip to main content

Dataflowspec

The onboarding file (YAML or JSON) is the configuration you write to define your pipelines. The Onboard Job reads it and writes the derived metadata into bronze_dataflowspec and silver_dataflowspec Delta tables, which the Generic Declarative Pipeline reads at runtime.

Each entry in the onboarding file represents one flow. A flow has a shared identity section, a Bronze section, and an optional Silver section.

Architecture

SDP-META operates in two phases:

  1. Onboard Job — reads your onboarding file and writes metadata into bronze_dataflowspec and silver_dataflowspec Delta tables. Re-run this job whenever you change the onboarding file.
  2. Generic Declarative Pipeline — at startup, reads the DataflowSpec tables and dynamically constructs the pipeline graph.

Common fields

These fields are required on every flow entry.

FieldTypeRequiredDescription
data_flow_idstringYesUnique identifier for the flow within the file.
data_flow_groupstringYesGroup name. A pipeline processes only flows matching its configured group.
source_formatstringYesSource format: cloudFiles, delta, eventhub, kafka, or snapshot.
source_detailsmapYesSource-specific connection properties. Keys vary by source_format (e.g. source_path_<env>, source_schema_path).
source_systemstringNoInformational label for the source system.

Bronze fields

FieldTypeRequiredDescription
bronze_catalog_<env>stringUC onlyUnity Catalog catalog name for the Bronze target.
bronze_database_<env>stringYesSchema for the Bronze target table.
bronze_tablestringYesBronze table name.
bronze_table_commentstringNoTable comment.
bronze_table_path_<env>stringNon-UCExternal path for the Bronze table (required without Unity Catalog).
bronze_reader_optionsmapNoSpark reader options (e.g. cloudFiles.format, header).
bronze_table_propertiesmapNoDelta table properties.
bronze_partition_columnsstringNoComma-separated partition column names.
bronze_cluster_bylistNoLiquid clustering columns.
bronze_cluster_by_autobooleanNoEnable auto liquid clustering.
bronze_data_quality_expectations_json_<env>stringNoPath to a DQE file (JSON or YAML).
bronze_catalog_quarantine_<env>stringNoCatalog for the quarantine table (defaults to bronze catalog).
bronze_database_quarantine_<env>stringNoSchema for the quarantine table. Required when DQE has drop expectations.
bronze_quarantine_tablestringNoQuarantine table name.
bronze_quarantine_table_commentstringNoQuarantine table comment.
bronze_quarantine_table_path_<env>stringNoExternal path for the quarantine table (non-UC).
bronze_quarantine_table_cluster_bylistNoLiquid clustering columns for the quarantine table.
bronze_quarantine_table_cluster_by_autobooleanNoAuto liquid clustering for the quarantine table.
bronze_cdc_apply_changesmapNoSingle-source CDC config. See CDC.
bronze_apply_changes_from_snapshotmapNoSnapshot-based CDC config. See Snapshot CDC.
bronze_append_flowslistNoAdditional append flows. See Autoloader.
bronze_sinkslistNoSink configs (Delta, Kafka, Event Hubs). See DLT Sink.
bronze_row_filterstringNoROW FILTER clause for the Bronze table (Unity Catalog only).

Silver fields

FieldTypeRequiredDescription
silver_catalog_<env>stringUC onlyUnity Catalog catalog name for the Silver target.
silver_database_<env>stringYesSchema for the Silver target table.
silver_tablestringYesSilver table name.
silver_table_commentstringNoTable comment.
silver_table_path_<env>stringNon-UCExternal path for the Silver table (required without Unity Catalog).
silver_transformation_json_<env>stringYes*Path to a transformations file defining select_exp and where_clause. *Not required when using silver_cdc_apply_changes_flows.
silver_data_quality_expectations_json_<env>stringNoPath to a DQE file.
silver_cdc_apply_changesmapNoSingle-source CDC config. See CDC.
silver_cdc_apply_changes_flowsmapNoMulti-source CDC flow group. See Multi-source CDC.
silver_reader_optionsmapNoAdditional Spark reader options for the Silver source.
silver_cluster_bylistNoLiquid clustering columns.
silver_cluster_by_autobooleanNoEnable auto liquid clustering.
silver_row_filterstringNoROW FILTER clause for the Silver table (Unity Catalog only).

Environment suffixes

Fields ending in _<env> accept environment-specific values. The Onboard Job is called with an env parameter (typically dev or prod), and it reads the matching field — for example bronze_database_prod when env=prod. This lets one onboarding file serve multiple environments.

Example

- data_flow_id: '1'
data_flow_group: retail
source_format: cloudFiles
source_details:
source_path_prod: /Volumes/my_catalog/my_schema/landing/customers
source_schema_path: /Volumes/my_catalog/my_schema/ddl/customers.ddl
bronze_catalog_prod: my_catalog
bronze_database_prod: retail_bronze
bronze_table: customers
bronze_reader_options:
cloudFiles.format: csv
header: 'true'
bronze_cluster_by_auto: true
bronze_data_quality_expectations_json_prod: /Volumes/my_catalog/my_schema/dqe/customers.yml
bronze_database_quarantine_prod: retail_bronze
bronze_quarantine_table: customers_quarantine
silver_catalog_prod: my_catalog
silver_database_prod: retail_silver
silver_table: customers
silver_cdc_apply_changes:
keys: [customer_id]
sequence_by: updated_at
scd_type: '1'
silver_transformation_json_prod: /Volumes/my_catalog/my_schema/transformations/silver.yml

Source of truth

The bronze_dataflowspec and silver_dataflowspec Delta tables are derived artifacts. Always edit the onboarding file, then re-run the Onboard Job. Do not edit DataflowSpec rows directly — they are overwritten on the next run when overwrite=True.