Orchestrators

Databricks

Jobs API for run history and task graphs; system tables for lineage and query history.

Databricks splits its useful metadata between an API and a set of system tables. The Jobs API describes what is scheduled and what each run did; Unity Catalog's system tables describe what actually touched which table, which is the more trustworthy of the two.

The characteristic Databricks problem is work that runs outside a job — a notebook executed interactively against production, or a scheduled query on a SQL warehouse. Neither appears in the Jobs API, and both show up in the lineage and audit tables, which is exactly the declared-versus-observed gap this product is built around.

What is read

What Decim reads from Databricks

Every item below is read-only, and each is a specific view, endpoint or file rather than a category of access. If something here is unacceptable in your environment, it can be removed from the query catalogue — see the agent for how that works.

Databricks — metadata sources
What From Why it matters
Job definitionsGET /api/2.1/jobs/getTask graph, dependencies and cluster spec
Run historyGET /api/2.1/jobs/runs/listState, duration and task-level results
Table lineagesystem.access.table_lineageWhich entity read or wrote which table, and when
Query historysystem.query.historyStatement text, duration and rows produced
Audit logsystem.access.auditWho ran what, including interactive notebook execution
Table metadatasystem.information_schema.tablesStructure and ownership
Delta historyDESCRIBE HISTORY <table>Per-version operation metrics — genuine row counts

Permissions required

Written out in full, because "read-only access" is not a specification. Nothing below grants the ability to write, and row access is requested only on the specific tables you name.

Service principal with read-only scopes sql
-- Unity Catalog system tables. Read-only, no data access.
GRANT USAGE  ON CATALOG system TO `decim-agent`;
GRANT SELECT ON SCHEMA  system.access TO `decim-agent`;
GRANT SELECT ON SCHEMA  system.query  TO `decim-agent`;
GRANT SELECT ON TABLE   system.information_schema.tables TO `decim-agent`;

-- DESCRIBE HISTORY needs read on the table itself. Grant per table,
-- on the reconciliation targets only.
GRANT SELECT ON TABLE sales.fct_transactions TO `decim-agent`;

-- Jobs API: a service principal token with the workspace "can view"
-- entitlement. No "can manage" and no cluster creation.

What it builds

What this source contributes to the pipeline topology and to the evidence available during an investigation:

  • Task graphs and their real execution order from run history
  • Table-level lineage covering work that runs outside any job
  • Per-version row counts from Delta table history
  • Interactive notebook runs against production — usually undocumented

Nodes learned from a definition are marked declared; nodes observed running are marked observed; nodes both declared and observed are verified. Where two sources disagree, the disagreement is recorded as a drift note rather than resolved silently.

Failure modes

Failure modes it surfaces

What this source is uniquely good at proving — and, just as usefully, at disproving. An investigation that can refute a hypothesis cheaply is worth as much as one that confirms it.

Failure modes Databricks evidence distinguishes
Failure mode The signal
Notebook run against productionAudit entry with no corresponding job run
Task succeeded, wrote nothingDelta history showing zero numOutputRows
Duplicate writeTwo Delta versions with the same operation in one window
Silent overwriteA WRITE with mode overwrite where append was expected

Limits

What this integration cannot tell you. Stated because an investigation that overstates its sources produces confident wrong answers, which is worse than an honest blocked.

  • System tables require Unity Catalog; workspaces on the legacy Hive metastore have neither lineage nor query history
  • system.access.audit has a materialisation delay, typically under an hour but not instant
  • Delta history is trimmed by log retention — an incident older than 30 days may have lost its operation metrics

Related integrations

  • Apache Airflow — The metadata database holds connections, variables, pools and manual state — none of it in git.
  • dbt — manifest.json is the model graph; run_results.json is what actually happened. Both are artefacts, not APIs.
  • AWS Glue — For visual jobs there is no file. The DAG is service state, read through GetJob.

See all integrations, or how the sources are combined into one graph.

Get started

Investigating a Databricks pipeline?

Bring an incident you already know the answer to. If Decim gets it wrong, that is a more useful demo than one where it doesn't.