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.
bundle-root
Section titled “bundle-root”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.
| Field | Type | Meaning |
|---|---|---|
project.name | string | The project’s raw name. |
project.nameSnakeCase | string | The display name through snake case. Not the bundle name, and not safe as one: see the warning above. |
databricksTargets[].environmentName | string | Target key and environment name, from the target connection’s name (dev fallback); kept in sync with the deploy workflow’s target flag. |
databricksTargets[].databricksHost | string | Workspace host address; empty when the connection carries none. |
databricksTargets[].catalogs.bronze / .silver / .gold | string | Landing, staging (or persistent staging when staging is unset), and gold catalogs; unbuilt layers stay empty. |
databricksTargets[].landingRoot | string | Landing volume root path; default empty. |
databricksTargets[].alertEmails / .alertEmailCount | string[] / number | Job failure alert recipients and the precomputed count (branch on the count: an empty list is truthy in the template language). |
databricksTargets[].slackWebhookId | string? | Conditional: present only when the target carries one; the key is omitted entirely otherwise. |
build | object | The resolved build settings; no bundle template reads it, carried as a visible input. |
bundle-pipelines
Section titled “bundle-pipelines”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.
| Field | Type | Meaning |
|---|---|---|
landingPipelines[] | array | One entry per landing pipeline resource: key, name, catalog, and libraries[] ({kind: notebook or file, path}). |
target.dltSettings.edition / .channel | string | Pipeline edition and release channel; defaults advanced and CURRENT. |
target.dltSettings.photon / .photonLiteral | varies / string | The resolved Photon setting and its serialized form; the serialization is the emitted byte (a boolean emits bare, a string emits quoted). |
tables[] | array | Vault, 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[] | array | The connection rows runtime resolution matched against: _id, connectionType, databricksRuntimeHint. |
project.name / .nameSnakeCase | string | The 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[] | array | The runtime registry: name, priority, isEnabled, supportedIngestModes, supportedConnectionTypes. |
vaultTableCount | number | How many tables are vault entities, precomputed: gates the vault pipeline’s emission. |
bundle-lakeflow
Section titled “bundle-lakeflow”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.
bundle-workflows
Section titled “bundle-workflows”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.
ci-workflow
Section titled “ci-workflow”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.
| Field | Type | Meaning |
|---|---|---|
bundlePath | string | The bundle’s path in the repository; databricks fallback when no asset bundle path is set. |
targetEnvironment | string | The deploy target; dev fallback when the target connection has no name. |
ddl-runner
Section titled “ddl-runner”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.
| Field | Type | Meaning |
|---|---|---|
project.name | string | The project’s raw name (a bare literal here; no snake-cased form on this family). |
catalogs | string[] | 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[] | array | The ordered statements: path and sql as authored, plus pathJson and sqlJson (the Python string literals the emitted tuples carry). |
fabric-platform-file
Section titled “fabric-platform-file”Templates: fabric/_platform/platform_file.jinja
Roots: artifactType, displayName, logicalId
The Fabric git-integration platform file: three metadata values describing an artifact.
| Field | Type | Meaning |
|---|---|---|
artifactType | string | The artifact’s type (for example Notebook). |
displayName | string | The artifact’s display name. |
logicalId | string | The artifact’s stable logical identifier. |
helper
Section titled “helper”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.