Silver Fanout
Silver fanout is a topology where a single bronze table feeds multiple silver tables, each with its own transformation logic, filter conditions, and CDC configuration.
How it works
- Run the first onboarding job to create the bronze table and the first silver table.
- Run a second onboarding job in append mode (
"overwrite": "False") with a new onboarding file defining the additional silver table. - The pipeline reads all silver entries for the group and materializes each silver table in the same update.
silver_append_flows configuration
For a second silver table within the same onboarding entry, use silver_append_flows:
{
"silver_append_flows": [
{
"name": "customers_active_silver_flow",
"create_streaming_table": false,
"source_format": "delta",
"source_details": {
"source_database": "my_catalog.retail_bronze",
"source_table": "customers_bronze"
},
"reader_options": {},
"once": false
}
]
}
Pipeline topology


Full example: customers_bronze → two silver tables
First onboarding file (run with "overwrite": "True"):
[
{
"data_flow_id": "1",
"data_flow_group": "customers_group",
"source_format": "cloudFiles",
"source_details": {
"source_schema_path": "/Volumes/my_catalog/my_schema/my_volume/schema/customers.ddl",
"source_path_dev": "s3://my-bucket/cdc/customers/"
},
"bronze_catalog_dev": "my_catalog",
"bronze_database_dev": "retail_bronze",
"bronze_table": "customers_bronze",
"silver_catalog_dev": "my_catalog",
"silver_database_dev": "retail_silver",
"silver_table": "customers_silver",
"silver_transformation_json_prod": "/Volumes/my_catalog/my_schema/my_volume/conf/silver_transformations.json"
}
]
Second onboarding file (run with "overwrite": "False"):
[
{
"data_flow_id": "2",
"data_flow_group": "customers_group",
"source_format": "delta",
"source_details": {
"source_database": "my_catalog.retail_bronze",
"source_table": "customers_bronze"
},
"silver_catalog_dev": "my_catalog",
"silver_database_dev": "retail_silver",
"silver_table": "customers_active_silver",
"silver_transformation_json_prod": "/Volumes/my_catalog/my_schema/my_volume/conf/silver_transformations_fanout.json"
}
]
The silver_transformations_fanout.json file applies a where_clause to restrict to active customers:
[
{
"target_table": "customers_active_silver",
"source_format": "delta",
"select_exp": ["customer_id", "name", "email", "region"],
"where_clause": "is_active = true"
}
]
Running the demo
python demo/launch_silver_fanout_demo.py \
--cloud_provider_name=aws \
--dbr_version=15.3.x-scala2.12 \
--uc_catalog_name=<your_catalog>
Related
- Silver Transformations Schema —
where_clauseconfiguration - Row Filters — alternative approach using pipeline-time row filtering
- Example onboarding files:
demo/conf/json/onboarding.template