Skip to content

Platform and deploy families

Ten families describe the project-wide artifacts: the asset bundle and its resource files, the include-only pieces those files compose, the generated deploy workflow, the notebook that applies the DDL, the Fabric git-integration file, and the helper libraries that own no context at all.

Two of the ten are include-only pieces whose field-by-field sections are still to be written: bundle-workflow-pipeline (pieces/dlt_pipeline.jinja, root workflow), one declarative pipeline entry, and bundle-job-task (pieces/job_task.jinja, root task), one task leg of a bundle job. A third piece, pieces/job.jinja, belongs to the workflow-rollup family and is indexed on the overview page.

Templates: databricks/_platform/databricks.yml.jinja

Roots: project, databricksTargets, build, dv

The asset bundle’s root file. The Build emits exactly one deployment target, synthesized from the target connection.

The bundle name comes from dv, and this is the one place to get it right. The body’s single read for the name: key is dv.project.nameSnakeCaseKey, the identifier-safe form. Do not reach for project.nameSnakeCase, and do not reach for dv.project.nameSnakeCase either: both are the display name through snake case, which lowercases capitals but leaves spaces and dots alone, so a project named Sales DWH renders name: sales _dwh. That is an illegal Databricks bundle name which still parses as valid configuration, so nothing fails loudly and the deployment breaks later. The project root is still supplied here and is simply no longer read for the name.

FieldTypeMeaning
project.namestringThe project’s raw name.
project.nameSnakeCasestringThe display name through snake case. Not the bundle name, and not safe as one: see the warning above.
databricksTargets[].environmentNamestringTarget key and environment name, from the target connection’s name (dev fallback); kept in sync with the deploy workflow’s target flag.
databricksTargets[].databricksHoststringWorkspace host address; empty when the connection carries none.
databricksTargets[].catalogs.bronze / .silver / .goldstringLanding, staging (or persistent staging when staging is unset), and gold catalogs; unbuilt layers stay empty.
databricksTargets[].landingRootstringLanding volume root path; default empty.
databricksTargets[].alertEmails / .alertEmailCountstring[] / numberJob failure alert recipients and the precomputed count (branch on the count: an empty list is truthy in the template language).
databricksTargets[].slackWebhookIdstring?Conditional: present only when the target carries one; the key is omitted entirely otherwise.
buildobjectThe resolved build settings; no bundle template reads it, carried as a visible input.

Templates: databricks/_platform/resources/pipelines.yml.jinja

Roots: landingPipelines, target, tables, connections, project, dv, ingestionRuntimes, vaultTableCount

The pipelines resource file: the landing pipelines plus the table sweep that decides which further pipelines exist. The landing runtime each table ingests through is resolved ahead of render onto the table itself.

FieldTypeMeaning
landingPipelines[]arrayOne entry per landing pipeline resource: key, name, catalog, and libraries[] ({kind: notebook or file, path}).
target.dltSettings.edition / .channelstringPipeline edition and release channel; defaults advanced and CURRENT.
target.dltSettings.photon / .photonLiteralvaries / stringThe resolved Photon setting and its serialized form; the serialization is the emitted byte (a boolean emits bare, a string emits quoted).
tables[]arrayVault, mart, and view rows the resource loops over: name, connectionId, schema, tableType, kind, ingestion (runtimeOverride, ingestMode), schemaSnakeCase, nameSnakeCase, and bronzeRuntime (the resolved landing runtime; unmatched connections resolve to empty and emit no library line).
connections[]arrayThe connection rows runtime resolution matched against: _id, connectionType, databricksRuntimeHint.
project.name / .nameSnakeCasestringThe project’s raw and snake-cased names. The resource keys do not build from these. All three pipeline keys are dv.project.nameSnakeCaseKey and their display names are dv.project.name, for the identifier-safety reason the bundle-root warning above gives.
ingestionRuntimes[]arrayThe runtime registry: name, priority, isEnabled, supportedIngestModes, supportedConnectionTypes.
vaultTableCountnumberHow many tables are vault entities, precomputed: gates the vault pipeline’s emission.

Templates: databricks/_platform/resources/pieces/ingest_pipeline.jinja

Roots: workflow, dv

One Lakeflow ingestion definition pipeline entry, at workflow grain rather than project grain. It is an include-only piece: it emits at zero indent so the file including it decides the depth, and it composes a further per-table piece for each member landing table, binding this, source, sources and connection around each include.

It reads workflow.pipelineKey, workflow.name, workflow.connectionName, workflow.schema, workflow.catalog, workflow.sourceType and workflow.tasks[], and each task carries the templatePath of the per-table piece along with the four landing roots that piece is handed. A field-by-field section for this family is still to be written; the dv root is described on the overview page.

Templates: databricks/_platform/resources/workflows.yml.jinja

Roots: dv

The workflows resource file. It takes no flat roots at all: the whole file is rendered by walking the linked model, so the jobs, their schedules and their tasks are reached through dv rather than handed over as a precomputed workflowJobs array. A project with no workflows yet falls to a medallion job built from the project’s own key.

A field-by-field section for this family is still to be written. It is the one platform family with a live preview: pick a workflow or a project rather than falling back to the sample.

Templates: databricks/ci/deploy_bundle_workflow.yml.jinja

Roots: bundlePath, targetEnvironment

The generated deploy workflow interpolates exactly two values. No workspace host appears anywhere: the workflow reads it from a repository secret, and DeltaVault never emits a customer workspace address.

FieldTypeMeaning
bundlePathstringThe bundle’s path in the repository; databricks fallback when no asset bundle path is set.
targetEnvironmentstringThe deploy target; dev fallback when the target connection has no name.

Templates: databricks/deploy/ddl_runner.jinja

Roots: project, catalogs, schemas, ddlStatements

The notebook that applies the generated DDL: catalogs first, then schemas, then the ordered statements.

FieldTypeMeaning
project.namestringThe project’s raw name (a bare literal here; no snake-cased form on this family).
catalogsstring[]Every distinct catalog in scope, de-duplicated and sorted.
schemas[]{catalog, name}[]Every distinct catalog-schema pair, de-duplicated and sorted by the composite.
ddlStatements[]arrayThe ordered statements: path and sql as authored, plus pathJson and sqlJson (the Python string literals the emitted tuples carry).

Templates: fabric/_platform/platform_file.jinja

Roots: artifactType, displayName, logicalId

The Fabric git-integration platform file: three metadata values describing an artifact.

FieldTypeMeaning
artifactTypestringThe artifact’s type (for example Notebook).
displayNamestringThe artifact’s display name.
logicalIdstringThe artifact’s stable logical identifier.

Templates: _base/sql.jinja, _helpers/*.jinja, databricks/_platform/_routing.jinja

Macro libraries and routing partials. Helpers own no context, are excluded from contract checks, and are never offered a preview. They exist to be imported by path from other templates, yours included.