databricks/databricks-agent-copilot-databricks-lakeflow-connect
Build managed ingestion pipelines into Databricks using Lakeflow Connect. Use when ingesting from SaaS apps (Salesforce, Workday Reports, ServiceNow, Google Analytics 4, HubSpot, Confluence) or databases (SQL Server cloud and on-prem; PostgreSQL/MySQL CDC in PuPr) into Unity Catalog with serverless pipelines.
This is a copy. The original lives at databricks/databricks-lakeflow-connect.
npx skills add https://github.com/databricks/databricks-agent-skills --skill databricks-lakeflow-connect
Build managed ingestion pipelines that pull from SaaS apps and databases into Unity Catalog Delta tables, governed end-to-end and powered by serverless Lakeflow Spark Declarative Pipelines (formerly Delta Live Tables / DLT).
Status: mixed catalog — GA connectors for production use, plus Public Preview, Beta, and Private Preview connectors that expand over time. See the connector catalog below.
Managed connectors for ingesting data from SaaS applications and databases. The resulting ingestion pipeline is governed by Unity Catalog and powered by serverless compute and Lakeflow Spark Declarative Pipelines.
Three frames to keep in mind:
There are four architecture patterns:
Decide this before you build. Lakeflow Connect is the managed pull path for SaaS apps and databases — it is not the answer for every ingestion intent.
| If the source is... | Use | Skill |
|---|---|---|
| A SaaS app or database with a managed connector (Salesforce, Workday, ServiceNow, GA4, HubSpot, Confluence, SQL Server, ...) | Lakeflow Connect | this skill |
| Files on cloud object storage (S3 / ADLS / GCS) | Auto Loader | databricks-pipelines |
| A source you want to query in place, no copy | Lakehouse Federation | — |
| An app or device that pushes events at you | Zerobus | databricks-zerobus-ingest |
| A partner offering a Delta share | Delta Sharing | — |
Full reasoning, including the Federation-vs-Connect and Auto-Loader-vs-Connect trade-offs, is in 4-ingestion-decision-tree.md.
Lakeflow Connect ships connectors at multiple release stages. GA and Public Preview connectors are production-supported; Beta and Private Preview are early-access and not production-supported.
Full coverage in this skill.
| Source | Type | Auth | Reference |
|--------|------|------|-----------|
| Salesforce (Sales / Service / etc.) | SaaS pull | OAuth U2M | 1-saas-connectors.md |
| Workday Reports (RaaS) | SaaS pull | OAuth refresh token / basic | 1-saas-connectors.md |
| ServiceNow | SaaS pull | OAuth U2M / basic | 1-saas-connectors.md |
| Google Analytics 4 | SaaS pull (via BigQuery) | Service-account JSON | 1-saas-connectors.md |
| HubSpot | SaaS pull | OAuth | 1-saas-connectors.md |
| Confluence | SaaS pull | OAuth | 1-saas-connectors.md |
| SQL Server (cloud) | Database CDC | DB user + change tracking / CDC | 2-database-connectors.md |
| SQL Server (on-prem) | Database CDC | DB user + ExpressRoute / Direct Connect | 2-database-connectors.md |
Production-supported. Configuration may evolve before GA. Deep coverage is being added incrementally; until then, see the public connector reference for current setup steps.
| Source | Type | Auth |
|--------|------|------|
| NetSuite | SaaS pull | OAuth |
| Dynamics 365 | SaaS pull | OAuth |
| PostgreSQL CDC | Database CDC | DB user + gateway |
| MySQL CDC | Database CDC | DB user + gateway |
| Oracle / Teradata / SQL Server / PG / MySQL (query-based) | Database query | DB user |
| Snowflake / Redshift / Synapse / BigQuery (Foreign Catalog) | Database query | Foreign Catalog |
| SFTP | File pull | Key / password |
Early-access connectors are not production-supported. The list changes month to month; check the public connector reference for current availability.
For the Lakeflow-Connect-vs-Auto-Loader-vs-Federation-vs-Delta-Sharing decision, see 4-ingestion-decision-tree.md.
databricks pipelines create and databricks connections create. Verify with databricks --version.databricks-sdk>=0.85.0) if you prefer SDK over CLI.No extra connector-specific SDK is needed. Lakeflow Connect reuses the pipelines API surface — pipelines are created with an ingestion_definition block instead of a libraries block, but the API and CLI are otherwise the same.
Confirm before creating any pipeline:
USE CATALOG, USE SCHEMA, CREATE TABLE, and MODIFY on the target schema.CONNECTION object with credentials for the source. SaaS OAuth U2M connections must be created via the UI (Catalog Explorer); API-key and basic-auth connections can be created via CLI / DAB.The canonical authoring path is JSON to databricks pipelines create --json. (There is no SQL CREATE TABLE … FROM CONNECTION syntax for Lakeflow Connect — that syntax exists only for Lakehouse Federation, which is a different product.)
databricks pipelines create --json '{
"name": "salesforce_to_uc",
"ingestion_definition": {
"connection_name": "my_salesforce_oauth_connection",
"objects": [
{"table": {"source_schema": "salesforce", "source_table": "Account",
"destination_catalog": "main", "destination_schema": "salesforce_raw"}},
{"table": {"source_schema": "salesforce", "source_table": "Opportunity",
"destination_catalog": "main", "destination_schema": "salesforce_raw"}}
]
}
}'
For a DAB-authored version (the production path), see 1-saas-connectors.md.
Once authored, deploy and trigger a run. The bundle path gives the cleanest run-by-key command:
databricks bundle deploy -t dev
databricks bundle run salesforce_ingestion # KEY = the pipeline resource key in the bundle; waits by default
databricks bundle run salesforce_ingestion --no-wait
A pipeline created imperatively with pipelines create --json has no run-by-name CLI — start and poll an update by pipeline ID instead:
databricks pipelines start-update <pipeline-id> # returns an update_id
databricks pipelines get-update <pipeline-id> <update-id> # poll one update's status
databricks pipelines list-updates <pipeline-id> # recent updates and their states
That asymmetry is one more reason to author with a Declarative Automation Bundle.
| Topic | File | When to read |
|-------|------|--------------|
| SaaS connectors (Salesforce, Workday Reports, ServiceNow, GA4, HubSpot, Confluence) | 1-saas-connectors.md | Unified SaaS pattern, per-connector deltas, OAuth flows, DAB stubs |
| Database connectors (SQL Server cloud + on-prem) | 2-database-connectors.md | Gateway pattern, change tracking vs CDC, network setup |
| Ingestion decision tree | 4-ingestion-decision-tree.md | Lakeflow Connect vs Auto Loader vs Lakehouse Federation vs Delta Sharing |
| Troubleshooting and monitoring | 5-troubleshooting-and-monitoring.md | Event log queries, common errors, escalation pointers |
For each new ingestion pipeline:
CONNECTION — UI for OAuth U2M, CLI / DAB for everything else.databricks pipelines create --json for one-offs, DAB YAML for anything shipping to a customer.pipeline_task (cron or interval). Lakeflow Connect supports triggered runs only — continuous: false selects triggered mode but is not itself a schedule, so the cadence comes from the Jobs trigger.Three forms that look plausible but fail — wrong vs. right:
1. CREATE TABLE ... FROM CONNECTION is Lakehouse Federation, not Lakeflow Connect.
-- WRONG: Federation syntax; no LFC equivalent exists
CREATE TABLE main.salesforce_raw.account FROM CONNECTION my_salesforce_conn;
// RIGHT: author an ingestion_definition (see the Minimal Example above)
{"ingestion_definition": {"connection_name": "my_salesforce_conn", "objects": [/* ... */]}}
2. An ingestion pipeline carries ingestion_definition, never a libraries block.
// WRONG: libraries is for a standard SDP pipeline running your notebooks/files
{"name": "salesforce_to_uc", "libraries": [{"notebook": {"path": "/Repos/.../ingest"}}]}
// RIGHT:
{"name": "salesforce_to_uc", "ingestion_definition": {"connection_name": "...", "objects": []}}
3. continuous: true is rejected — Lakeflow Connect is triggered-only.
// WRONG: continuous mode fails at create
{"continuous": true, "ingestion_definition": {/* ... */}}
// RIGHT: continuous:false (or omit) + schedule with a Jobs pipeline_task
{"continuous": false, "ingestion_definition": {/* ... */}}
CONNECTION is the credential anchor — every Lakeflow Connect pipeline points at a UC connection. The connection owns the auth; the pipeline references it by name.APPLY CHANGES / AUTO CDC, or apply_changes_from_snapshot for snapshot sources). Compatible with downstream materialized views and Spark streaming.databricks connections get <connection_name> reports READY.For common errors and their fixes — duplicate-key violations, watermark / cursor problems, schema evolution, gateway region availability, the channel runtime-channel setting, and pipelines that run but land no data — see 5-troubleshooting-and-monitoring.md, which also has the event-log queries to diagnose them.
CONNECTION objects that LFC credentials live in.pipeline_task.Take databricks/databricks-agent-copilot-databricks-lakeflow-connect from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.