mark_ott
Databricks Employee
Databricks Employee

For an average scenario in Databricks where bronze tables are populated by Autoloaders and silver tables require some aggregations, the following best practices are widely recommended:

Bronze Layer Best Practices

  • Land raw data in append-only Delta tables using Autoloader, with minimal transformation to preserve original data fidelity and auditability.​

  • Store file metadata (e.g., source file name, load date) in the bronze tables to support lineage and troubleshooting.​

  • Use partitioning (e.g., by date) to optimize query performance and lifecycle management.​

  • Maintain the rawest data possible (including duplicates and errors), and avoid deleting original files until successful landing and validation is confirmed.​

Silver Layer Best Practices

  • Read only from bronze; never load silver tables directly from sources, as this improves reliability and schema change handling.​

  • Clean, validate, deduplicate, and normalize data in silver tables. Enforce schema, handle nulls, fix data types, and standardize formats.​

  • Perform joins to combine related datasets or to slowly transform the data model (such as star or snowflake schemas). However, heavy aggregations are usually reserved for gold.​

  • When aggregations are required in silver (e.g., for rapid downstream access or business logic), use incremental processes such as MERGE or appropriate upserts, and clearly separate raw/validated vs. aggregated tables.​

  • Use streaming reads from bronze whenever possible, reserving batch reads for small, infrequently changing tables.​

  • For daily snapshot data, store all versions in bronze and deduplicate in silver using logic like ROW_NUMBER() to keep only the latest record per business key.​

Additional General Recommendations

  • Use Unity Catalog to govern table access and lineage across all layers, and register each table for easy discoverability and governance.​

  • Implement data quality checks and monitoring to ensure accuracy and detect drifts, preferably at the silver layer or above.​

  • Avoid irreversible transformations at the bronze stage so historic data can be reprocessed if downstream corrections are needed.​

  • Design aggregations with consumption and scaling in mind, potentially pushing major aggregations to the gold layer for BI or ML workloads.​

By following these practices, a robust, scalable, and future-proof Databricks lakehouse pipeline can be maintained, supporting both operational reliability and downstream analytical needs.