[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-databricks-databricks-iceberg":3,"mdc--ecsmn6-key":33,"related-org-databricks-databricks-iceberg":1502,"related-repo-databricks-databricks-iceberg":1690},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":31,"mdContent":32},"databricks-iceberg","manage Apache Iceberg tables on Databricks","Apache Iceberg tables on Databricks — Managed Iceberg tables, External Iceberg Reads (fka Uniform), Compatibility Mode, Iceberg REST Catalog (IRC), Iceberg v3, Snowflake interop, PyIceberg, OSS Spark, external engine access and credential vending. Use when creating Iceberg tables, enabling External Iceberg Reads (uniform) on Delta tables (including Streaming Tables and Materialized Views via compatibility mode), configuring external engines to read Databricks tables via Unity Catalog IRC, integrating with Snowflake catalog to read Foreign Iceberg tables",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"databricks","Databricks","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fdatabricks.png",[12,16,19,20],{"name":13,"slug":14,"type":15},"Data Engineering","data-engineering","tag",{"name":17,"slug":18,"type":15},"Data Warehouse","data-warehouse",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Spark","spark",204,"https:\u002F\u002Fgithub.com\u002Fdatabricks\u002Fdatabricks-agent-skills","2026-07-12T08:04:29.563212",null,60,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":26},[],"https:\u002F\u002Fgithub.com\u002Fdatabricks\u002Fdatabricks-agent-skills\u002Ftree\u002FHEAD\u002Fplugins\u002Fdatabricks\u002Fcopilot\u002Fskills\u002Fdatabricks-iceberg","---\nname: databricks-iceberg\ndescription: \"Apache Iceberg tables on Databricks — Managed Iceberg tables, External Iceberg Reads (fka Uniform), Compatibility Mode, Iceberg REST Catalog (IRC), Iceberg v3, Snowflake interop, PyIceberg, OSS Spark, external engine access and credential vending. Use when creating Iceberg tables, enabling External Iceberg Reads (uniform) on Delta tables (including Streaming Tables and Materialized Views via compatibility mode), configuring external engines to read Databricks tables via Unity Catalog IRC, integrating with Snowflake catalog to read Foreign Iceberg tables\"\ncompatibility: Requires databricks CLI (>= v1.0.0)\nmetadata:\n  version: \"0.1.0\"\nparent: databricks-core\n---\n\n# Apache Iceberg on Databricks\n\nDatabricks provides multiple ways to work with Apache Iceberg: native managed Iceberg tables, UniForm for Delta-to-Iceberg interoperability, and the Iceberg REST Catalog (IRC) for external engine access.\n\n---\n\n## Critical Rules (always follow)\n\n- **MUST** use Unity Catalog — all Iceberg features require UC-enabled workspaces\n- **MUST NOT** install an Iceberg library into Databricks Runtime (DBR includes built-in Iceberg support; adding a library causes version conflicts)\n- **MUST NOT** set `write.metadata.path` or `write.metadata.previous-versions-max` — Databricks manages metadata locations automatically; overriding causes corruption\n- **MUST** determine which Iceberg pattern fits the use case before writing code — see the [When to Use](#when-to-use) section below\n- **MUST** know that both `PARTITIONED BY` and `CLUSTER BY` produce the same Iceberg metadata for external engines — UC maintains an Iceberg partition spec with partition fields corresponding to the clustering keys, so external engines reading via IRC see a partitioned Iceberg table (not Hive-style, but proper Iceberg partition fields) and can prune on those fields; internally UC uses those fields as liquid clustering keys; the only differences between the two syntaxes are: (1) `PARTITIONED BY` is standard Iceberg DDL (any engine can create the table), while `CLUSTER BY` is DBR-only DDL; (2) `PARTITIONED BY` **auto-handles** DV\u002Frow-tracking properties, while `CLUSTER BY` requires manual TBLPROPERTIES on v2\n- **MUST NOT** use expression-based partition transforms (`bucket()`, `years()`, `months()`, `days()`, `hours()`) with `PARTITIONED BY` on managed Iceberg tables — only plain column references are supported; expression transforms cause errors\n- **MUST** disable deletion vectors and row tracking when using `CLUSTER BY` on Iceberg v2 tables — set `'delta.enableDeletionVectors' = false` and `'delta.enableRowTracking' = false` in TBLPROPERTIES (Iceberg v3 handles this automatically; `PARTITIONED BY` handles this automatically on both v2 and v3)\n\n---\n\n## Key Concepts\n\n| Concept | Summary |\n|---------|---------|\n| **Managed Iceberg Table** | Native Iceberg table created with `USING ICEBERG` — full read\u002Fwrite in Databricks and via external Iceberg engines |\n| **External Iceberg Reads (Uniform)** | Delta table that auto-generates Iceberg metadata — read as Iceberg externally, write as Delta internally |\n| **Compatibility Mode** | UniForm variant for streaming tables and materialized views in SDP pipelines |\n| **Iceberg REST Catalog (IRC)** | Unity Catalog's built-in REST endpoint implementing the Iceberg REST Catalog spec — lets external engines (Spark, PyIceberg, Snowflake) access UC-managed Iceberg data |\n| **Iceberg v3** | Next-gen format (Beta, DBR 17.3+) — deletion vectors, VARIANT type, row lineage |\n\n---\n\n## Quick Start\n\n### Create a Managed Iceberg Table\n\n```sql\n-- No clustering\nCREATE TABLE my_catalog.my_schema.events\nUSING ICEBERG\nAS SELECT * FROM raw_events;\n\n-- PARTITIONED BY (recommended for cross-platform): standard Iceberg syntax, works on EMR\u002FOSS Spark\u002FTrino\u002FFlink\n-- auto-disables DVs and row tracking — no TBLPROPERTIES needed on v2 or v3\nCREATE TABLE my_catalog.my_schema.events\nUSING ICEBERG\nPARTITIONED BY (event_date)\nAS SELECT * FROM raw_events;\n\n-- CLUSTER BY on Iceberg v2 (DBR-only syntax): must manually disable DVs and row tracking\nCREATE TABLE my_catalog.my_schema.events\nUSING ICEBERG\nTBLPROPERTIES (\n  'delta.enableDeletionVectors' = false,\n  'delta.enableRowTracking' = false\n)\nCLUSTER BY (event_date)\nAS SELECT * FROM raw_events;\n\n-- CLUSTER BY on Iceberg v3 (DBR-only syntax): no TBLPROPERTIES needed\nCREATE TABLE my_catalog.my_schema.events\nUSING ICEBERG\nTBLPROPERTIES ('format-version' = '3')\nCLUSTER BY (event_date)\nAS SELECT * FROM raw_events;\n```\n\n### Enable UniForm on an Existing Delta Table\n\n```sql\nALTER TABLE my_catalog.my_schema.customers\nSET TBLPROPERTIES (\n  'delta.columnMapping.mode' = 'name',\n  'delta.enableIcebergCompatV2' = 'true',\n  'delta.universalFormat.enabledFormats' = 'iceberg'\n);\n```\n\n---\n\n## Read\u002FWrite Capability Matrix\n\n| Table Type | Databricks Read | Databricks Write | External IRC Read | External IRC Write |\n|------------|:-:|:-:|:-:|:-:|\n| Managed Iceberg (`USING ICEBERG`) | Yes | Yes | Yes | Yes |\n| Delta + UniForm | Yes (as Delta) | Yes (as Delta) | Yes (as Iceberg) | No |\n| Delta + Compatibility Mode | Yes (as Delta) | Yes | Yes (as Iceberg) | No |\n\n---\n\n## Reference Files\n\n| File | Summary | Keywords |\n|------|---------|----------|\n| [references\u002F1-managed-iceberg-tables.md](references\u002F1-managed-iceberg-tables.md) | Creating and managing native Iceberg tables — DDL, DML, Liquid Clustering, Predictive Optimization, Iceberg v3, limitations | CREATE TABLE USING ICEBERG, CTAS, MERGE, time travel, deletion vectors, VARIANT |\n| [references\u002F2-uniform-and-compatibility.md](references\u002F2-uniform-and-compatibility.md) | Making Delta tables readable as Iceberg — UniForm for regular tables, Compatibility Mode for streaming tables and MVs | UniForm, universalFormat, Compatibility Mode, streaming tables, materialized views, SDP |\n| [references\u002F3-iceberg-rest-catalog.md](references\u002F3-iceberg-rest-catalog.md) | Exposing Databricks tables to external engines via the IRC endpoint — auth, credential vending, IP access lists | IRC, REST Catalog, credential vending, EXTERNAL USE SCHEMA, PAT, OAuth |\n| [references\u002F4-snowflake-interop.md](references\u002F4-snowflake-interop.md) | Bidirectional Snowflake-Databricks integration — catalog integration, foreign catalogs, vended credentials | Snowflake, catalog integration, external volume, vended credentials, REFRESH_INTERVAL_SECONDS |\n| [references\u002F5-external-engine-interop.md](references\u002F5-external-engine-interop.md) | Connecting PyIceberg, OSS Spark, AWS EMR, Apache Flink, and Kafka Connect via IRC | PyIceberg, OSS Spark, EMR, Flink, Kafka Connect, pyiceberg.yaml |\n\n---\n\n## When to Use\n\n- **Creating a new Iceberg table** → [references\u002F1-managed-iceberg-tables.md](references\u002F1-managed-iceberg-tables.md)\n- **Making an existing Delta table readable as Iceberg** → [references\u002F2-uniform-and-compatibility.md](references\u002F2-uniform-and-compatibility.md)\n- **Making a streaming table or MV readable as Iceberg** → [references\u002F2-uniform-and-compatibility.md](references\u002F2-uniform-and-compatibility.md) (Compatibility Mode section)\n- **Choosing between Managed Iceberg vs UniForm vs Compatibility Mode** → decision table in [references\u002F2-uniform-and-compatibility.md](references\u002F2-uniform-and-compatibility.md)\n- **Exposing Databricks tables to external engines via REST API** → [references\u002F3-iceberg-rest-catalog.md](references\u002F3-iceberg-rest-catalog.md)\n- **Integrating Databricks with Snowflake (either direction)** → [references\u002F4-snowflake-interop.md](references\u002F4-snowflake-interop.md)\n- **Connecting PyIceberg, OSS Spark, Flink, EMR, or Kafka** → [references\u002F5-external-engine-interop.md](references\u002F5-external-engine-interop.md)\n\n---\n\n## Common Issues\n\n| Issue | Solution |\n|-------|----------|\n| **No Change Data Feed (CDF)** | CDF is not supported on managed Iceberg tables. Use Delta + UniForm if you need CDF. |\n| **UniForm async delay** | Iceberg metadata generation is asynchronous. After a write, there may be a brief delay before external engines see the latest data. Check status with `DESCRIBE EXTENDED table_name`. |\n| **Compression codec change** | Managed Iceberg tables use `zstd` compression by default (not `snappy`). Older Iceberg readers that don't support zstd will fail. Verify reader compatibility or set `write.parquet.compression-codec` to `snappy`. |\n| **Snowflake 1000-commit limit** | Snowflake's Iceberg catalog integration can only see the last 1000 Iceberg commits. High-frequency writers must compact metadata or Snowflake will lose visibility of older data. |\n| **Deletion vectors with UniForm** | UniForm requires deletion vectors to be disabled (`delta.enableDeletionVectors = false`). If your table has deletion vectors enabled, disable them before enabling UniForm. |\n| **No shallow clone for Iceberg** | `SHALLOW CLONE` is not supported for Iceberg tables. Use `DEEP CLONE` or `CREATE TABLE ... AS SELECT` instead. |\n| **Version mismatch with external engines** | Ensure external engines use an Iceberg library version compatible with the format version of your tables. Iceberg v3 tables require Iceberg library 1.9.0+. |\n\n---\n\n## Related Skills\n\n- **[databricks-unity-catalog](..\u002Fdatabricks-unity-catalog\u002FSKILL.md)** — catalog\u002Fschema management, governance, system tables\n- **databricks-pipelines** — SDP pipelines (streaming tables, materialized views with Compatibility Mode)\n- **[databricks-python-sdk](..\u002Fdatabricks-python-sdk\u002FSKILL.md)** — Python SDK and REST API for Databricks operations\n- **[databricks-dbsql](..\u002Fdatabricks-dbsql\u002FSKILL.md)** — SQL warehouse features, query patterns\n\n---\n\n## Resources\n\n- **[Iceberg Overview](https:\u002F\u002Fdocs.databricks.com\u002Ficeberg\u002F)** — main hub for Iceberg on Databricks\n- **[UniForm](https:\u002F\u002Fdocs.databricks.com\u002Fdelta\u002Funiform.html)** — Delta Universal Format\n- **[Iceberg REST Catalog](https:\u002F\u002Fdocs.databricks.com\u002Fexternal-access\u002Ficeberg)** — IRC endpoint and external engine access\n- **[Compatibility Mode](https:\u002F\u002Fdocs.databricks.com\u002Fexternal-access\u002Fcompatibility-mode)** — UniForm for streaming tables and MVs\n- **[Iceberg v3](https:\u002F\u002Fdocs.databricks.com\u002Ficeberg\u002Ficeberg-v3)** — next-gen format features (Beta)\n- **[Foreign Tables](https:\u002F\u002Fdocs.databricks.com\u002Fquery-data\u002Fforeign-tables.html)** — reading external catalog data\n",{"data":34,"body":39},{"name":4,"description":6,"compatibility":35,"metadata":36,"parent":38},"Requires databricks CLI (>= v1.0.0)",{"version":37},"0.1.0","databricks-core",{"type":40,"children":41},"root",[42,51,57,61,68,289,292,298,414,417,423,430,684,690,745,748,754,875,878,884,1015,1018,1023,1121,1124,1130,1331,1334,1340,1395,1398,1404,1496],{"type":43,"tag":44,"props":45,"children":47},"element","h1",{"id":46},"apache-iceberg-on-databricks",[48],{"type":49,"value":50},"text","Apache Iceberg on Databricks",{"type":43,"tag":52,"props":53,"children":54},"p",{},[55],{"type":49,"value":56},"Databricks provides multiple ways to work with Apache Iceberg: native managed Iceberg tables, UniForm for Delta-to-Iceberg interoperability, and the Iceberg REST Catalog (IRC) for external engine access.",{"type":43,"tag":58,"props":59,"children":60},"hr",{},[],{"type":43,"tag":62,"props":63,"children":65},"h2",{"id":64},"critical-rules-always-follow",[66],{"type":49,"value":67},"Critical Rules (always follow)",{"type":43,"tag":69,"props":70,"children":71},"ul",{},[72,84,94,120,138,198,251],{"type":43,"tag":73,"props":74,"children":75},"li",{},[76,82],{"type":43,"tag":77,"props":78,"children":79},"strong",{},[80],{"type":49,"value":81},"MUST",{"type":49,"value":83}," use Unity Catalog — all Iceberg features require UC-enabled workspaces",{"type":43,"tag":73,"props":85,"children":86},{},[87,92],{"type":43,"tag":77,"props":88,"children":89},{},[90],{"type":49,"value":91},"MUST NOT",{"type":49,"value":93}," install an Iceberg library into Databricks Runtime (DBR includes built-in Iceberg support; adding a library causes version conflicts)",{"type":43,"tag":73,"props":95,"children":96},{},[97,101,103,110,112,118],{"type":43,"tag":77,"props":98,"children":99},{},[100],{"type":49,"value":91},{"type":49,"value":102}," set ",{"type":43,"tag":104,"props":105,"children":107},"code",{"className":106},[],[108],{"type":49,"value":109},"write.metadata.path",{"type":49,"value":111}," or ",{"type":43,"tag":104,"props":113,"children":115},{"className":114},[],[116],{"type":49,"value":117},"write.metadata.previous-versions-max",{"type":49,"value":119}," — Databricks manages metadata locations automatically; overriding causes corruption",{"type":43,"tag":73,"props":121,"children":122},{},[123,127,129,136],{"type":43,"tag":77,"props":124,"children":125},{},[126],{"type":49,"value":81},{"type":49,"value":128}," determine which Iceberg pattern fits the use case before writing code — see the ",{"type":43,"tag":130,"props":131,"children":133},"a",{"href":132},"#when-to-use",[134],{"type":49,"value":135},"When to Use",{"type":49,"value":137}," section below",{"type":43,"tag":73,"props":139,"children":140},{},[141,145,147,153,155,161,163,168,170,175,177,182,184,189,191,196],{"type":43,"tag":77,"props":142,"children":143},{},[144],{"type":49,"value":81},{"type":49,"value":146}," know that both ",{"type":43,"tag":104,"props":148,"children":150},{"className":149},[],[151],{"type":49,"value":152},"PARTITIONED BY",{"type":49,"value":154}," and ",{"type":43,"tag":104,"props":156,"children":158},{"className":157},[],[159],{"type":49,"value":160},"CLUSTER BY",{"type":49,"value":162}," produce the same Iceberg metadata for external engines — UC maintains an Iceberg partition spec with partition fields corresponding to the clustering keys, so external engines reading via IRC see a partitioned Iceberg table (not Hive-style, but proper Iceberg partition fields) and can prune on those fields; internally UC uses those fields as liquid clustering keys; the only differences between the two syntaxes are: (1) ",{"type":43,"tag":104,"props":164,"children":166},{"className":165},[],[167],{"type":49,"value":152},{"type":49,"value":169}," is standard Iceberg DDL (any engine can create the table), while ",{"type":43,"tag":104,"props":171,"children":173},{"className":172},[],[174],{"type":49,"value":160},{"type":49,"value":176}," is DBR-only DDL; (2) ",{"type":43,"tag":104,"props":178,"children":180},{"className":179},[],[181],{"type":49,"value":152},{"type":49,"value":183}," ",{"type":43,"tag":77,"props":185,"children":186},{},[187],{"type":49,"value":188},"auto-handles",{"type":49,"value":190}," DV\u002Frow-tracking properties, while ",{"type":43,"tag":104,"props":192,"children":194},{"className":193},[],[195],{"type":49,"value":160},{"type":49,"value":197}," requires manual TBLPROPERTIES on v2",{"type":43,"tag":73,"props":199,"children":200},{},[201,205,207,213,215,221,222,228,229,235,236,242,244,249],{"type":43,"tag":77,"props":202,"children":203},{},[204],{"type":49,"value":91},{"type":49,"value":206}," use expression-based partition transforms (",{"type":43,"tag":104,"props":208,"children":210},{"className":209},[],[211],{"type":49,"value":212},"bucket()",{"type":49,"value":214},", ",{"type":43,"tag":104,"props":216,"children":218},{"className":217},[],[219],{"type":49,"value":220},"years()",{"type":49,"value":214},{"type":43,"tag":104,"props":223,"children":225},{"className":224},[],[226],{"type":49,"value":227},"months()",{"type":49,"value":214},{"type":43,"tag":104,"props":230,"children":232},{"className":231},[],[233],{"type":49,"value":234},"days()",{"type":49,"value":214},{"type":43,"tag":104,"props":237,"children":239},{"className":238},[],[240],{"type":49,"value":241},"hours()",{"type":49,"value":243},") with ",{"type":43,"tag":104,"props":245,"children":247},{"className":246},[],[248],{"type":49,"value":152},{"type":49,"value":250}," on managed Iceberg tables — only plain column references are supported; expression transforms cause errors",{"type":43,"tag":73,"props":252,"children":253},{},[254,258,260,265,267,273,274,280,282,287],{"type":43,"tag":77,"props":255,"children":256},{},[257],{"type":49,"value":81},{"type":49,"value":259}," disable deletion vectors and row tracking when using ",{"type":43,"tag":104,"props":261,"children":263},{"className":262},[],[264],{"type":49,"value":160},{"type":49,"value":266}," on Iceberg v2 tables — set ",{"type":43,"tag":104,"props":268,"children":270},{"className":269},[],[271],{"type":49,"value":272},"'delta.enableDeletionVectors' = false",{"type":49,"value":154},{"type":43,"tag":104,"props":275,"children":277},{"className":276},[],[278],{"type":49,"value":279},"'delta.enableRowTracking' = false",{"type":49,"value":281}," in TBLPROPERTIES (Iceberg v3 handles this automatically; ",{"type":43,"tag":104,"props":283,"children":285},{"className":284},[],[286],{"type":49,"value":152},{"type":49,"value":288}," handles this automatically on both v2 and v3)",{"type":43,"tag":58,"props":290,"children":291},{},[],{"type":43,"tag":62,"props":293,"children":295},{"id":294},"key-concepts",[296],{"type":49,"value":297},"Key Concepts",{"type":43,"tag":299,"props":300,"children":301},"table",{},[302,321],{"type":43,"tag":303,"props":304,"children":305},"thead",{},[306],{"type":43,"tag":307,"props":308,"children":309},"tr",{},[310,316],{"type":43,"tag":311,"props":312,"children":313},"th",{},[314],{"type":49,"value":315},"Concept",{"type":43,"tag":311,"props":317,"children":318},{},[319],{"type":49,"value":320},"Summary",{"type":43,"tag":322,"props":323,"children":324},"tbody",{},[325,350,366,382,398],{"type":43,"tag":307,"props":326,"children":327},{},[328,337],{"type":43,"tag":329,"props":330,"children":331},"td",{},[332],{"type":43,"tag":77,"props":333,"children":334},{},[335],{"type":49,"value":336},"Managed Iceberg Table",{"type":43,"tag":329,"props":338,"children":339},{},[340,342,348],{"type":49,"value":341},"Native Iceberg table created with ",{"type":43,"tag":104,"props":343,"children":345},{"className":344},[],[346],{"type":49,"value":347},"USING ICEBERG",{"type":49,"value":349}," — full read\u002Fwrite in Databricks and via external Iceberg engines",{"type":43,"tag":307,"props":351,"children":352},{},[353,361],{"type":43,"tag":329,"props":354,"children":355},{},[356],{"type":43,"tag":77,"props":357,"children":358},{},[359],{"type":49,"value":360},"External Iceberg Reads (Uniform)",{"type":43,"tag":329,"props":362,"children":363},{},[364],{"type":49,"value":365},"Delta table that auto-generates Iceberg metadata — read as Iceberg externally, write as Delta internally",{"type":43,"tag":307,"props":367,"children":368},{},[369,377],{"type":43,"tag":329,"props":370,"children":371},{},[372],{"type":43,"tag":77,"props":373,"children":374},{},[375],{"type":49,"value":376},"Compatibility Mode",{"type":43,"tag":329,"props":378,"children":379},{},[380],{"type":49,"value":381},"UniForm variant for streaming tables and materialized views in SDP pipelines",{"type":43,"tag":307,"props":383,"children":384},{},[385,393],{"type":43,"tag":329,"props":386,"children":387},{},[388],{"type":43,"tag":77,"props":389,"children":390},{},[391],{"type":49,"value":392},"Iceberg REST Catalog (IRC)",{"type":43,"tag":329,"props":394,"children":395},{},[396],{"type":49,"value":397},"Unity Catalog's built-in REST endpoint implementing the Iceberg REST Catalog spec — lets external engines (Spark, PyIceberg, Snowflake) access UC-managed Iceberg data",{"type":43,"tag":307,"props":399,"children":400},{},[401,409],{"type":43,"tag":329,"props":402,"children":403},{},[404],{"type":43,"tag":77,"props":405,"children":406},{},[407],{"type":49,"value":408},"Iceberg v3",{"type":43,"tag":329,"props":410,"children":411},{},[412],{"type":49,"value":413},"Next-gen format (Beta, DBR 17.3+) — deletion vectors, VARIANT type, row lineage",{"type":43,"tag":58,"props":415,"children":416},{},[],{"type":43,"tag":62,"props":418,"children":420},{"id":419},"quick-start",[421],{"type":49,"value":422},"Quick Start",{"type":43,"tag":424,"props":425,"children":427},"h3",{"id":426},"create-a-managed-iceberg-table",[428],{"type":49,"value":429},"Create a Managed Iceberg Table",{"type":43,"tag":431,"props":432,"children":437},"pre",{"className":433,"code":434,"language":435,"meta":436,"style":436},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","-- No clustering\nCREATE TABLE my_catalog.my_schema.events\nUSING ICEBERG\nAS SELECT * FROM raw_events;\n\n-- PARTITIONED BY (recommended for cross-platform): standard Iceberg syntax, works on EMR\u002FOSS Spark\u002FTrino\u002FFlink\n-- auto-disables DVs and row tracking — no TBLPROPERTIES needed on v2 or v3\nCREATE TABLE my_catalog.my_schema.events\nUSING ICEBERG\nPARTITIONED BY (event_date)\nAS SELECT * FROM raw_events;\n\n-- CLUSTER BY on Iceberg v2 (DBR-only syntax): must manually disable DVs and row tracking\nCREATE TABLE my_catalog.my_schema.events\nUSING ICEBERG\nTBLPROPERTIES (\n  'delta.enableDeletionVectors' = false,\n  'delta.enableRowTracking' = false\n)\nCLUSTER BY (event_date)\nAS SELECT * FROM raw_events;\n\n-- CLUSTER BY on Iceberg v3 (DBR-only syntax): no TBLPROPERTIES needed\nCREATE TABLE my_catalog.my_schema.events\nUSING ICEBERG\nTBLPROPERTIES ('format-version' = '3')\nCLUSTER BY (event_date)\nAS SELECT * FROM raw_events;\n","sql","",[438],{"type":43,"tag":104,"props":439,"children":440},{"__ignoreMap":436},[441,452,461,470,479,489,498,507,515,523,532,540,548,557,565,573,582,591,600,609,618,626,634,643,651,659,668,676],{"type":43,"tag":442,"props":443,"children":446},"span",{"class":444,"line":445},"line",1,[447],{"type":43,"tag":442,"props":448,"children":449},{},[450],{"type":49,"value":451},"-- No clustering\n",{"type":43,"tag":442,"props":453,"children":455},{"class":444,"line":454},2,[456],{"type":43,"tag":442,"props":457,"children":458},{},[459],{"type":49,"value":460},"CREATE TABLE my_catalog.my_schema.events\n",{"type":43,"tag":442,"props":462,"children":464},{"class":444,"line":463},3,[465],{"type":43,"tag":442,"props":466,"children":467},{},[468],{"type":49,"value":469},"USING ICEBERG\n",{"type":43,"tag":442,"props":471,"children":473},{"class":444,"line":472},4,[474],{"type":43,"tag":442,"props":475,"children":476},{},[477],{"type":49,"value":478},"AS SELECT * FROM raw_events;\n",{"type":43,"tag":442,"props":480,"children":482},{"class":444,"line":481},5,[483],{"type":43,"tag":442,"props":484,"children":486},{"emptyLinePlaceholder":485},true,[487],{"type":49,"value":488},"\n",{"type":43,"tag":442,"props":490,"children":492},{"class":444,"line":491},6,[493],{"type":43,"tag":442,"props":494,"children":495},{},[496],{"type":49,"value":497},"-- PARTITIONED BY (recommended for cross-platform): standard Iceberg syntax, works on EMR\u002FOSS Spark\u002FTrino\u002FFlink\n",{"type":43,"tag":442,"props":499,"children":501},{"class":444,"line":500},7,[502],{"type":43,"tag":442,"props":503,"children":504},{},[505],{"type":49,"value":506},"-- auto-disables DVs and row tracking — no TBLPROPERTIES needed on v2 or v3\n",{"type":43,"tag":442,"props":508,"children":510},{"class":444,"line":509},8,[511],{"type":43,"tag":442,"props":512,"children":513},{},[514],{"type":49,"value":460},{"type":43,"tag":442,"props":516,"children":518},{"class":444,"line":517},9,[519],{"type":43,"tag":442,"props":520,"children":521},{},[522],{"type":49,"value":469},{"type":43,"tag":442,"props":524,"children":526},{"class":444,"line":525},10,[527],{"type":43,"tag":442,"props":528,"children":529},{},[530],{"type":49,"value":531},"PARTITIONED BY (event_date)\n",{"type":43,"tag":442,"props":533,"children":535},{"class":444,"line":534},11,[536],{"type":43,"tag":442,"props":537,"children":538},{},[539],{"type":49,"value":478},{"type":43,"tag":442,"props":541,"children":543},{"class":444,"line":542},12,[544],{"type":43,"tag":442,"props":545,"children":546},{"emptyLinePlaceholder":485},[547],{"type":49,"value":488},{"type":43,"tag":442,"props":549,"children":551},{"class":444,"line":550},13,[552],{"type":43,"tag":442,"props":553,"children":554},{},[555],{"type":49,"value":556},"-- CLUSTER BY on Iceberg v2 (DBR-only syntax): must manually disable DVs and row tracking\n",{"type":43,"tag":442,"props":558,"children":560},{"class":444,"line":559},14,[561],{"type":43,"tag":442,"props":562,"children":563},{},[564],{"type":49,"value":460},{"type":43,"tag":442,"props":566,"children":568},{"class":444,"line":567},15,[569],{"type":43,"tag":442,"props":570,"children":571},{},[572],{"type":49,"value":469},{"type":43,"tag":442,"props":574,"children":576},{"class":444,"line":575},16,[577],{"type":43,"tag":442,"props":578,"children":579},{},[580],{"type":49,"value":581},"TBLPROPERTIES (\n",{"type":43,"tag":442,"props":583,"children":585},{"class":444,"line":584},17,[586],{"type":43,"tag":442,"props":587,"children":588},{},[589],{"type":49,"value":590},"  'delta.enableDeletionVectors' = false,\n",{"type":43,"tag":442,"props":592,"children":594},{"class":444,"line":593},18,[595],{"type":43,"tag":442,"props":596,"children":597},{},[598],{"type":49,"value":599},"  'delta.enableRowTracking' = false\n",{"type":43,"tag":442,"props":601,"children":603},{"class":444,"line":602},19,[604],{"type":43,"tag":442,"props":605,"children":606},{},[607],{"type":49,"value":608},")\n",{"type":43,"tag":442,"props":610,"children":612},{"class":444,"line":611},20,[613],{"type":43,"tag":442,"props":614,"children":615},{},[616],{"type":49,"value":617},"CLUSTER BY (event_date)\n",{"type":43,"tag":442,"props":619,"children":621},{"class":444,"line":620},21,[622],{"type":43,"tag":442,"props":623,"children":624},{},[625],{"type":49,"value":478},{"type":43,"tag":442,"props":627,"children":629},{"class":444,"line":628},22,[630],{"type":43,"tag":442,"props":631,"children":632},{"emptyLinePlaceholder":485},[633],{"type":49,"value":488},{"type":43,"tag":442,"props":635,"children":637},{"class":444,"line":636},23,[638],{"type":43,"tag":442,"props":639,"children":640},{},[641],{"type":49,"value":642},"-- CLUSTER BY on Iceberg v3 (DBR-only syntax): no TBLPROPERTIES needed\n",{"type":43,"tag":442,"props":644,"children":646},{"class":444,"line":645},24,[647],{"type":43,"tag":442,"props":648,"children":649},{},[650],{"type":49,"value":460},{"type":43,"tag":442,"props":652,"children":654},{"class":444,"line":653},25,[655],{"type":43,"tag":442,"props":656,"children":657},{},[658],{"type":49,"value":469},{"type":43,"tag":442,"props":660,"children":662},{"class":444,"line":661},26,[663],{"type":43,"tag":442,"props":664,"children":665},{},[666],{"type":49,"value":667},"TBLPROPERTIES ('format-version' = '3')\n",{"type":43,"tag":442,"props":669,"children":671},{"class":444,"line":670},27,[672],{"type":43,"tag":442,"props":673,"children":674},{},[675],{"type":49,"value":617},{"type":43,"tag":442,"props":677,"children":679},{"class":444,"line":678},28,[680],{"type":43,"tag":442,"props":681,"children":682},{},[683],{"type":49,"value":478},{"type":43,"tag":424,"props":685,"children":687},{"id":686},"enable-uniform-on-an-existing-delta-table",[688],{"type":49,"value":689},"Enable UniForm on an Existing Delta Table",{"type":43,"tag":431,"props":691,"children":693},{"className":433,"code":692,"language":435,"meta":436,"style":436},"ALTER TABLE my_catalog.my_schema.customers\nSET TBLPROPERTIES (\n  'delta.columnMapping.mode' = 'name',\n  'delta.enableIcebergCompatV2' = 'true',\n  'delta.universalFormat.enabledFormats' = 'iceberg'\n);\n",[694],{"type":43,"tag":104,"props":695,"children":696},{"__ignoreMap":436},[697,705,713,721,729,737],{"type":43,"tag":442,"props":698,"children":699},{"class":444,"line":445},[700],{"type":43,"tag":442,"props":701,"children":702},{},[703],{"type":49,"value":704},"ALTER TABLE my_catalog.my_schema.customers\n",{"type":43,"tag":442,"props":706,"children":707},{"class":444,"line":454},[708],{"type":43,"tag":442,"props":709,"children":710},{},[711],{"type":49,"value":712},"SET TBLPROPERTIES (\n",{"type":43,"tag":442,"props":714,"children":715},{"class":444,"line":463},[716],{"type":43,"tag":442,"props":717,"children":718},{},[719],{"type":49,"value":720},"  'delta.columnMapping.mode' = 'name',\n",{"type":43,"tag":442,"props":722,"children":723},{"class":444,"line":472},[724],{"type":43,"tag":442,"props":725,"children":726},{},[727],{"type":49,"value":728},"  'delta.enableIcebergCompatV2' = 'true',\n",{"type":43,"tag":442,"props":730,"children":731},{"class":444,"line":481},[732],{"type":43,"tag":442,"props":733,"children":734},{},[735],{"type":49,"value":736},"  'delta.universalFormat.enabledFormats' = 'iceberg'\n",{"type":43,"tag":442,"props":738,"children":739},{"class":444,"line":491},[740],{"type":43,"tag":442,"props":741,"children":742},{},[743],{"type":49,"value":744},");\n",{"type":43,"tag":58,"props":746,"children":747},{},[],{"type":43,"tag":62,"props":749,"children":751},{"id":750},"readwrite-capability-matrix",[752],{"type":49,"value":753},"Read\u002FWrite Capability Matrix",{"type":43,"tag":299,"props":755,"children":756},{},[757,789],{"type":43,"tag":303,"props":758,"children":759},{},[760],{"type":43,"tag":307,"props":761,"children":762},{},[763,768,774,779,784],{"type":43,"tag":311,"props":764,"children":765},{},[766],{"type":49,"value":767},"Table Type",{"type":43,"tag":311,"props":769,"children":771},{"align":770},"center",[772],{"type":49,"value":773},"Databricks Read",{"type":43,"tag":311,"props":775,"children":776},{"align":770},[777],{"type":49,"value":778},"Databricks Write",{"type":43,"tag":311,"props":780,"children":781},{"align":770},[782],{"type":49,"value":783},"External IRC Read",{"type":43,"tag":311,"props":785,"children":786},{"align":770},[787],{"type":49,"value":788},"External IRC Write",{"type":43,"tag":322,"props":790,"children":791},{},[792,824,851],{"type":43,"tag":307,"props":793,"children":794},{},[795,807,812,816,820],{"type":43,"tag":329,"props":796,"children":797},{},[798,800,805],{"type":49,"value":799},"Managed Iceberg (",{"type":43,"tag":104,"props":801,"children":803},{"className":802},[],[804],{"type":49,"value":347},{"type":49,"value":806},")",{"type":43,"tag":329,"props":808,"children":809},{"align":770},[810],{"type":49,"value":811},"Yes",{"type":43,"tag":329,"props":813,"children":814},{"align":770},[815],{"type":49,"value":811},{"type":43,"tag":329,"props":817,"children":818},{"align":770},[819],{"type":49,"value":811},{"type":43,"tag":329,"props":821,"children":822},{"align":770},[823],{"type":49,"value":811},{"type":43,"tag":307,"props":825,"children":826},{},[827,832,837,841,846],{"type":43,"tag":329,"props":828,"children":829},{},[830],{"type":49,"value":831},"Delta + UniForm",{"type":43,"tag":329,"props":833,"children":834},{"align":770},[835],{"type":49,"value":836},"Yes (as Delta)",{"type":43,"tag":329,"props":838,"children":839},{"align":770},[840],{"type":49,"value":836},{"type":43,"tag":329,"props":842,"children":843},{"align":770},[844],{"type":49,"value":845},"Yes (as Iceberg)",{"type":43,"tag":329,"props":847,"children":848},{"align":770},[849],{"type":49,"value":850},"No",{"type":43,"tag":307,"props":852,"children":853},{},[854,859,863,867,871],{"type":43,"tag":329,"props":855,"children":856},{},[857],{"type":49,"value":858},"Delta + Compatibility Mode",{"type":43,"tag":329,"props":860,"children":861},{"align":770},[862],{"type":49,"value":836},{"type":43,"tag":329,"props":864,"children":865},{"align":770},[866],{"type":49,"value":811},{"type":43,"tag":329,"props":868,"children":869},{"align":770},[870],{"type":49,"value":845},{"type":43,"tag":329,"props":872,"children":873},{"align":770},[874],{"type":49,"value":850},{"type":43,"tag":58,"props":876,"children":877},{},[],{"type":43,"tag":62,"props":879,"children":881},{"id":880},"reference-files",[882],{"type":49,"value":883},"Reference Files",{"type":43,"tag":299,"props":885,"children":886},{},[887,907],{"type":43,"tag":303,"props":888,"children":889},{},[890],{"type":43,"tag":307,"props":891,"children":892},{},[893,898,902],{"type":43,"tag":311,"props":894,"children":895},{},[896],{"type":49,"value":897},"File",{"type":43,"tag":311,"props":899,"children":900},{},[901],{"type":49,"value":320},{"type":43,"tag":311,"props":903,"children":904},{},[905],{"type":49,"value":906},"Keywords",{"type":43,"tag":322,"props":908,"children":909},{},[910,931,952,973,994],{"type":43,"tag":307,"props":911,"children":912},{},[913,921,926],{"type":43,"tag":329,"props":914,"children":915},{},[916],{"type":43,"tag":130,"props":917,"children":919},{"href":918},"references\u002F1-managed-iceberg-tables.md",[920],{"type":49,"value":918},{"type":43,"tag":329,"props":922,"children":923},{},[924],{"type":49,"value":925},"Creating and managing native Iceberg tables — DDL, DML, Liquid Clustering, Predictive Optimization, Iceberg v3, limitations",{"type":43,"tag":329,"props":927,"children":928},{},[929],{"type":49,"value":930},"CREATE TABLE USING ICEBERG, CTAS, MERGE, time travel, deletion vectors, VARIANT",{"type":43,"tag":307,"props":932,"children":933},{},[934,942,947],{"type":43,"tag":329,"props":935,"children":936},{},[937],{"type":43,"tag":130,"props":938,"children":940},{"href":939},"references\u002F2-uniform-and-compatibility.md",[941],{"type":49,"value":939},{"type":43,"tag":329,"props":943,"children":944},{},[945],{"type":49,"value":946},"Making Delta tables readable as Iceberg — UniForm for regular tables, Compatibility Mode for streaming tables and MVs",{"type":43,"tag":329,"props":948,"children":949},{},[950],{"type":49,"value":951},"UniForm, universalFormat, Compatibility Mode, streaming tables, materialized views, SDP",{"type":43,"tag":307,"props":953,"children":954},{},[955,963,968],{"type":43,"tag":329,"props":956,"children":957},{},[958],{"type":43,"tag":130,"props":959,"children":961},{"href":960},"references\u002F3-iceberg-rest-catalog.md",[962],{"type":49,"value":960},{"type":43,"tag":329,"props":964,"children":965},{},[966],{"type":49,"value":967},"Exposing Databricks tables to external engines via the IRC endpoint — auth, credential vending, IP access lists",{"type":43,"tag":329,"props":969,"children":970},{},[971],{"type":49,"value":972},"IRC, REST Catalog, credential vending, EXTERNAL USE SCHEMA, PAT, OAuth",{"type":43,"tag":307,"props":974,"children":975},{},[976,984,989],{"type":43,"tag":329,"props":977,"children":978},{},[979],{"type":43,"tag":130,"props":980,"children":982},{"href":981},"references\u002F4-snowflake-interop.md",[983],{"type":49,"value":981},{"type":43,"tag":329,"props":985,"children":986},{},[987],{"type":49,"value":988},"Bidirectional Snowflake-Databricks integration — catalog integration, foreign catalogs, vended credentials",{"type":43,"tag":329,"props":990,"children":991},{},[992],{"type":49,"value":993},"Snowflake, catalog integration, external volume, vended credentials, REFRESH_INTERVAL_SECONDS",{"type":43,"tag":307,"props":995,"children":996},{},[997,1005,1010],{"type":43,"tag":329,"props":998,"children":999},{},[1000],{"type":43,"tag":130,"props":1001,"children":1003},{"href":1002},"references\u002F5-external-engine-interop.md",[1004],{"type":49,"value":1002},{"type":43,"tag":329,"props":1006,"children":1007},{},[1008],{"type":49,"value":1009},"Connecting PyIceberg, OSS Spark, AWS EMR, Apache Flink, and Kafka Connect via IRC",{"type":43,"tag":329,"props":1011,"children":1012},{},[1013],{"type":49,"value":1014},"PyIceberg, OSS Spark, EMR, Flink, Kafka Connect, pyiceberg.yaml",{"type":43,"tag":58,"props":1016,"children":1017},{},[],{"type":43,"tag":62,"props":1019,"children":1021},{"id":1020},"when-to-use",[1022],{"type":49,"value":135},{"type":43,"tag":69,"props":1024,"children":1025},{},[1026,1040,1053,1068,1082,1095,1108],{"type":43,"tag":73,"props":1027,"children":1028},{},[1029,1034,1036],{"type":43,"tag":77,"props":1030,"children":1031},{},[1032],{"type":49,"value":1033},"Creating a new Iceberg table",{"type":49,"value":1035}," → ",{"type":43,"tag":130,"props":1037,"children":1038},{"href":918},[1039],{"type":49,"value":918},{"type":43,"tag":73,"props":1041,"children":1042},{},[1043,1048,1049],{"type":43,"tag":77,"props":1044,"children":1045},{},[1046],{"type":49,"value":1047},"Making an existing Delta table readable as Iceberg",{"type":49,"value":1035},{"type":43,"tag":130,"props":1050,"children":1051},{"href":939},[1052],{"type":49,"value":939},{"type":43,"tag":73,"props":1054,"children":1055},{},[1056,1061,1062,1066],{"type":43,"tag":77,"props":1057,"children":1058},{},[1059],{"type":49,"value":1060},"Making a streaming table or MV readable as Iceberg",{"type":49,"value":1035},{"type":43,"tag":130,"props":1063,"children":1064},{"href":939},[1065],{"type":49,"value":939},{"type":49,"value":1067}," (Compatibility Mode section)",{"type":43,"tag":73,"props":1069,"children":1070},{},[1071,1076,1078],{"type":43,"tag":77,"props":1072,"children":1073},{},[1074],{"type":49,"value":1075},"Choosing between Managed Iceberg vs UniForm vs Compatibility Mode",{"type":49,"value":1077}," → decision table in ",{"type":43,"tag":130,"props":1079,"children":1080},{"href":939},[1081],{"type":49,"value":939},{"type":43,"tag":73,"props":1083,"children":1084},{},[1085,1090,1091],{"type":43,"tag":77,"props":1086,"children":1087},{},[1088],{"type":49,"value":1089},"Exposing Databricks tables to external engines via REST API",{"type":49,"value":1035},{"type":43,"tag":130,"props":1092,"children":1093},{"href":960},[1094],{"type":49,"value":960},{"type":43,"tag":73,"props":1096,"children":1097},{},[1098,1103,1104],{"type":43,"tag":77,"props":1099,"children":1100},{},[1101],{"type":49,"value":1102},"Integrating Databricks with Snowflake (either direction)",{"type":49,"value":1035},{"type":43,"tag":130,"props":1105,"children":1106},{"href":981},[1107],{"type":49,"value":981},{"type":43,"tag":73,"props":1109,"children":1110},{},[1111,1116,1117],{"type":43,"tag":77,"props":1112,"children":1113},{},[1114],{"type":49,"value":1115},"Connecting PyIceberg, OSS Spark, Flink, EMR, or Kafka",{"type":49,"value":1035},{"type":43,"tag":130,"props":1118,"children":1119},{"href":1002},[1120],{"type":49,"value":1002},{"type":43,"tag":58,"props":1122,"children":1123},{},[],{"type":43,"tag":62,"props":1125,"children":1127},{"id":1126},"common-issues",[1128],{"type":49,"value":1129},"Common Issues",{"type":43,"tag":299,"props":1131,"children":1132},{},[1133,1149],{"type":43,"tag":303,"props":1134,"children":1135},{},[1136],{"type":43,"tag":307,"props":1137,"children":1138},{},[1139,1144],{"type":43,"tag":311,"props":1140,"children":1141},{},[1142],{"type":49,"value":1143},"Issue",{"type":43,"tag":311,"props":1145,"children":1146},{},[1147],{"type":49,"value":1148},"Solution",{"type":43,"tag":322,"props":1150,"children":1151},{},[1152,1168,1192,1238,1254,1278,1315],{"type":43,"tag":307,"props":1153,"children":1154},{},[1155,1163],{"type":43,"tag":329,"props":1156,"children":1157},{},[1158],{"type":43,"tag":77,"props":1159,"children":1160},{},[1161],{"type":49,"value":1162},"No Change Data Feed (CDF)",{"type":43,"tag":329,"props":1164,"children":1165},{},[1166],{"type":49,"value":1167},"CDF is not supported on managed Iceberg tables. Use Delta + UniForm if you need CDF.",{"type":43,"tag":307,"props":1169,"children":1170},{},[1171,1179],{"type":43,"tag":329,"props":1172,"children":1173},{},[1174],{"type":43,"tag":77,"props":1175,"children":1176},{},[1177],{"type":49,"value":1178},"UniForm async delay",{"type":43,"tag":329,"props":1180,"children":1181},{},[1182,1184,1190],{"type":49,"value":1183},"Iceberg metadata generation is asynchronous. After a write, there may be a brief delay before external engines see the latest data. Check status with ",{"type":43,"tag":104,"props":1185,"children":1187},{"className":1186},[],[1188],{"type":49,"value":1189},"DESCRIBE EXTENDED table_name",{"type":49,"value":1191},".",{"type":43,"tag":307,"props":1193,"children":1194},{},[1195,1203],{"type":43,"tag":329,"props":1196,"children":1197},{},[1198],{"type":43,"tag":77,"props":1199,"children":1200},{},[1201],{"type":49,"value":1202},"Compression codec change",{"type":43,"tag":329,"props":1204,"children":1205},{},[1206,1208,1214,1216,1222,1224,1230,1232,1237],{"type":49,"value":1207},"Managed Iceberg tables use ",{"type":43,"tag":104,"props":1209,"children":1211},{"className":1210},[],[1212],{"type":49,"value":1213},"zstd",{"type":49,"value":1215}," compression by default (not ",{"type":43,"tag":104,"props":1217,"children":1219},{"className":1218},[],[1220],{"type":49,"value":1221},"snappy",{"type":49,"value":1223},"). Older Iceberg readers that don't support zstd will fail. Verify reader compatibility or set ",{"type":43,"tag":104,"props":1225,"children":1227},{"className":1226},[],[1228],{"type":49,"value":1229},"write.parquet.compression-codec",{"type":49,"value":1231}," to ",{"type":43,"tag":104,"props":1233,"children":1235},{"className":1234},[],[1236],{"type":49,"value":1221},{"type":49,"value":1191},{"type":43,"tag":307,"props":1239,"children":1240},{},[1241,1249],{"type":43,"tag":329,"props":1242,"children":1243},{},[1244],{"type":43,"tag":77,"props":1245,"children":1246},{},[1247],{"type":49,"value":1248},"Snowflake 1000-commit limit",{"type":43,"tag":329,"props":1250,"children":1251},{},[1252],{"type":49,"value":1253},"Snowflake's Iceberg catalog integration can only see the last 1000 Iceberg commits. High-frequency writers must compact metadata or Snowflake will lose visibility of older data.",{"type":43,"tag":307,"props":1255,"children":1256},{},[1257,1265],{"type":43,"tag":329,"props":1258,"children":1259},{},[1260],{"type":43,"tag":77,"props":1261,"children":1262},{},[1263],{"type":49,"value":1264},"Deletion vectors with UniForm",{"type":43,"tag":329,"props":1266,"children":1267},{},[1268,1270,1276],{"type":49,"value":1269},"UniForm requires deletion vectors to be disabled (",{"type":43,"tag":104,"props":1271,"children":1273},{"className":1272},[],[1274],{"type":49,"value":1275},"delta.enableDeletionVectors = false",{"type":49,"value":1277},"). If your table has deletion vectors enabled, disable them before enabling UniForm.",{"type":43,"tag":307,"props":1279,"children":1280},{},[1281,1289],{"type":43,"tag":329,"props":1282,"children":1283},{},[1284],{"type":43,"tag":77,"props":1285,"children":1286},{},[1287],{"type":49,"value":1288},"No shallow clone for Iceberg",{"type":43,"tag":329,"props":1290,"children":1291},{},[1292,1298,1300,1306,1307,1313],{"type":43,"tag":104,"props":1293,"children":1295},{"className":1294},[],[1296],{"type":49,"value":1297},"SHALLOW CLONE",{"type":49,"value":1299}," is not supported for Iceberg tables. Use ",{"type":43,"tag":104,"props":1301,"children":1303},{"className":1302},[],[1304],{"type":49,"value":1305},"DEEP CLONE",{"type":49,"value":111},{"type":43,"tag":104,"props":1308,"children":1310},{"className":1309},[],[1311],{"type":49,"value":1312},"CREATE TABLE ... AS SELECT",{"type":49,"value":1314}," instead.",{"type":43,"tag":307,"props":1316,"children":1317},{},[1318,1326],{"type":43,"tag":329,"props":1319,"children":1320},{},[1321],{"type":43,"tag":77,"props":1322,"children":1323},{},[1324],{"type":49,"value":1325},"Version mismatch with external engines",{"type":43,"tag":329,"props":1327,"children":1328},{},[1329],{"type":49,"value":1330},"Ensure external engines use an Iceberg library version compatible with the format version of your tables. Iceberg v3 tables require Iceberg library 1.9.0+.",{"type":43,"tag":58,"props":1332,"children":1333},{},[],{"type":43,"tag":62,"props":1335,"children":1337},{"id":1336},"related-skills",[1338],{"type":49,"value":1339},"Related Skills",{"type":43,"tag":69,"props":1341,"children":1342},{},[1343,1357,1367,1381],{"type":43,"tag":73,"props":1344,"children":1345},{},[1346,1355],{"type":43,"tag":77,"props":1347,"children":1348},{},[1349],{"type":43,"tag":130,"props":1350,"children":1352},{"href":1351},"..\u002Fdatabricks-unity-catalog\u002FSKILL.md",[1353],{"type":49,"value":1354},"databricks-unity-catalog",{"type":49,"value":1356}," — catalog\u002Fschema management, governance, system tables",{"type":43,"tag":73,"props":1358,"children":1359},{},[1360,1365],{"type":43,"tag":77,"props":1361,"children":1362},{},[1363],{"type":49,"value":1364},"databricks-pipelines",{"type":49,"value":1366}," — SDP pipelines (streaming tables, materialized views with Compatibility Mode)",{"type":43,"tag":73,"props":1368,"children":1369},{},[1370,1379],{"type":43,"tag":77,"props":1371,"children":1372},{},[1373],{"type":43,"tag":130,"props":1374,"children":1376},{"href":1375},"..\u002Fdatabricks-python-sdk\u002FSKILL.md",[1377],{"type":49,"value":1378},"databricks-python-sdk",{"type":49,"value":1380}," — Python SDK and REST API for Databricks operations",{"type":43,"tag":73,"props":1382,"children":1383},{},[1384,1393],{"type":43,"tag":77,"props":1385,"children":1386},{},[1387],{"type":43,"tag":130,"props":1388,"children":1390},{"href":1389},"..\u002Fdatabricks-dbsql\u002FSKILL.md",[1391],{"type":49,"value":1392},"databricks-dbsql",{"type":49,"value":1394}," — SQL warehouse features, query patterns",{"type":43,"tag":58,"props":1396,"children":1397},{},[],{"type":43,"tag":62,"props":1399,"children":1401},{"id":1400},"resources",[1402],{"type":49,"value":1403},"Resources",{"type":43,"tag":69,"props":1405,"children":1406},{},[1407,1423,1438,1453,1467,1481],{"type":43,"tag":73,"props":1408,"children":1409},{},[1410,1421],{"type":43,"tag":77,"props":1411,"children":1412},{},[1413],{"type":43,"tag":130,"props":1414,"children":1418},{"href":1415,"rel":1416},"https:\u002F\u002Fdocs.databricks.com\u002Ficeberg\u002F",[1417],"nofollow",[1419],{"type":49,"value":1420},"Iceberg Overview",{"type":49,"value":1422}," — main hub for Iceberg on Databricks",{"type":43,"tag":73,"props":1424,"children":1425},{},[1426,1436],{"type":43,"tag":77,"props":1427,"children":1428},{},[1429],{"type":43,"tag":130,"props":1430,"children":1433},{"href":1431,"rel":1432},"https:\u002F\u002Fdocs.databricks.com\u002Fdelta\u002Funiform.html",[1417],[1434],{"type":49,"value":1435},"UniForm",{"type":49,"value":1437}," — Delta Universal Format",{"type":43,"tag":73,"props":1439,"children":1440},{},[1441,1451],{"type":43,"tag":77,"props":1442,"children":1443},{},[1444],{"type":43,"tag":130,"props":1445,"children":1448},{"href":1446,"rel":1447},"https:\u002F\u002Fdocs.databricks.com\u002Fexternal-access\u002Ficeberg",[1417],[1449],{"type":49,"value":1450},"Iceberg REST Catalog",{"type":49,"value":1452}," — IRC endpoint and external engine access",{"type":43,"tag":73,"props":1454,"children":1455},{},[1456,1465],{"type":43,"tag":77,"props":1457,"children":1458},{},[1459],{"type":43,"tag":130,"props":1460,"children":1463},{"href":1461,"rel":1462},"https:\u002F\u002Fdocs.databricks.com\u002Fexternal-access\u002Fcompatibility-mode",[1417],[1464],{"type":49,"value":376},{"type":49,"value":1466}," — UniForm for streaming tables and MVs",{"type":43,"tag":73,"props":1468,"children":1469},{},[1470,1479],{"type":43,"tag":77,"props":1471,"children":1472},{},[1473],{"type":43,"tag":130,"props":1474,"children":1477},{"href":1475,"rel":1476},"https:\u002F\u002Fdocs.databricks.com\u002Ficeberg\u002Ficeberg-v3",[1417],[1478],{"type":49,"value":408},{"type":49,"value":1480}," — next-gen format features (Beta)",{"type":43,"tag":73,"props":1482,"children":1483},{},[1484,1494],{"type":43,"tag":77,"props":1485,"children":1486},{},[1487],{"type":43,"tag":130,"props":1488,"children":1491},{"href":1489,"rel":1490},"https:\u002F\u002Fdocs.databricks.com\u002Fquery-data\u002Fforeign-tables.html",[1417],[1492],{"type":49,"value":1493},"Foreign Tables",{"type":49,"value":1495}," — reading external catalog data",{"type":43,"tag":1497,"props":1498,"children":1499},"style",{},[1500],{"type":49,"value":1501},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1503,"total":1689},[1504,1521,1535,1552,1569,1589,1600,1623,1634,1651,1663,1675],{"slug":1505,"name":1505,"fn":1506,"description":1507,"org":1508,"tags":1509,"stars":23,"repoUrl":24,"updatedAt":1520},"databricks-agent-bricks","create Databricks Agent Bricks","Create Agent Bricks: Knowledge Assistants (KA) for document Q&A and Supervisor Agents for multi-agent orchestration (MAS).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1510,1513,1514,1517],{"name":1511,"slug":1512,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":1515,"slug":1516,"type":15},"Knowledge Management","knowledge-management",{"name":1518,"slug":1519,"type":15},"Multi-Agent","multi-agent","2026-07-15T05:41:38.548954",{"slug":1522,"name":1522,"fn":1523,"description":1524,"org":1525,"tags":1526,"stars":23,"repoUrl":24,"updatedAt":1534},"databricks-ai-functions","use Databricks built-in AI functions","Use Databricks built-in AI Functions (ai_classify, ai_extract, ai_summarize, ai_mask, ai_translate, ai_fix_grammar, ai_gen, ai_analyze_sentiment, ai_similarity, ai_parse_document, ai_prep_search, ai_query, ai_forecast) to add AI capabilities directly to SQL and PySpark pipelines without managing model endpoints. Also covers document parsing and building custom RAG pipelines (parse → prep_search → index → query).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1527,1530,1531],{"name":1528,"slug":1529,"type":15},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":15},{"name":1532,"slug":1533,"type":15},"LLM","llm","2026-07-31T05:53:33.562077",{"slug":1536,"name":1536,"fn":1537,"description":1538,"org":1539,"tags":1540,"stars":23,"repoUrl":24,"updatedAt":1551},"databricks-ai-runtime","submit and manage Databricks GPU workloads","Databricks AI Runtime (`air`) CLI — the command-line tool for submitting and managing GPU training workloads on Databricks serverless compute. Use for: running `air` workloads, custom Docker image setup, environment configuration, and troubleshooting `air` jobs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1541,1544,1545,1548],{"name":1542,"slug":1543,"type":15},"CLI","cli",{"name":9,"slug":8,"type":15},{"name":1546,"slug":1547,"type":15},"Docker","docker",{"name":1549,"slug":1550,"type":15},"Engineering","engineering","2026-07-12T08:04:55.843982",{"slug":1553,"name":1553,"fn":1554,"description":1555,"org":1556,"tags":1557,"stars":23,"repoUrl":24,"updatedAt":1568},"databricks-aibi-dashboards","create Databricks AI\u002FBI dashboards","Create Databricks AI\u002FBI dashboards. Must use when creating, updating, or deploying Lakeview dashboards as Databricks Dashboard have a unique json structure. CRITICAL: You MUST test ALL SQL queries via CLI BEFORE deploying. Follow guidelines strictly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1558,1561,1564,1567],{"name":1559,"slug":1560,"type":15},"Analytics","analytics",{"name":1562,"slug":1563,"type":15},"Dashboards","dashboards",{"name":1565,"slug":1566,"type":15},"Data Visualization","data-visualization",{"name":9,"slug":8,"type":15},"2026-07-12T08:04:25.314591",{"slug":1570,"name":1570,"fn":1571,"description":1572,"org":1573,"tags":1574,"stars":23,"repoUrl":24,"updatedAt":1588},"databricks-app-design","design UX for Databricks AppKit applications","Design the UX of custom-code Databricks Apps (AppKit\u002FReact) data screens — KPI\u002Foverview pages, reports, charts, tables, and Genie\u002Fchat data assistants — mapped to concrete AppKit components. Use when BUILDING or reviewing the UI of an AppKit\u002FReact app that displays data or answers data questions: choosing genre, layout, charts, KPIs, semantic color, required states (loading\u002Fempty\u002Ferror), IBCS notation, and AI-result trust (showing generated SQL\u002Fsources for Genie\u002Fchat). A plain \"create a dashboard\" request means a managed AI\u002FBI (Lakeview) dashboard → use databricks-aibi-dashboards, NOT this skill. Also NOT for non-data frontend (forms, settings, auth, marketing) or scaffolding\u002Fbuild\u002Fdeploy (→ databricks-apps). Complements databricks-apps; use it alongside whenever a custom app has a chart, table, KPI, report, or Genie\u002Fchat\u002FAI surface.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1575,1576,1579,1582,1585],{"name":9,"slug":8,"type":15},{"name":1577,"slug":1578,"type":15},"Design","design",{"name":1580,"slug":1581,"type":15},"Frontend","frontend",{"name":1583,"slug":1584,"type":15},"React","react",{"name":1586,"slug":1587,"type":15},"UI Components","ui-components","2026-07-12T08:04:02.02398",{"slug":1590,"name":1590,"fn":1591,"description":1592,"org":1593,"tags":1594,"stars":23,"repoUrl":24,"updatedAt":1599},"databricks-apps","build applications on Databricks Apps","Build apps on Databricks Apps platform. Use when asked to create data apps, analytics tools, or custom interactive visualizations. A plain \"create a dashboard\" request means a managed AI\u002FBI (Lakeview) dashboard → use databricks-aibi-dashboards, not this skill. Evaluates data access patterns (analytics vs Lakebase synced tables) before scaffolding. Invoke BEFORE starting implementation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1595,1596,1597,1598],{"name":1559,"slug":1560,"type":15},{"name":1562,"slug":1563,"type":15},{"name":1528,"slug":1529,"type":15},{"name":9,"slug":8,"type":15},"2026-07-12T08:03:59.061458",{"slug":1601,"name":1601,"fn":1602,"description":1603,"org":1604,"tags":1605,"stars":23,"repoUrl":24,"updatedAt":1622},"databricks-apps-python","build Python backends for Databricks Apps","Python backend for Databricks Apps — FastAPI (default), Flask, Dash, Streamlit, Gradio, Reflex. **Default for a new Databricks App is `databricks-apps` (AppKit — Node\u002FTypeScript\u002FReact) — reach for it first.** Use this skill only when the user asks for a Python backend, extends an existing Python app, or the team is Python-only. Covers OAuth auth, app resources, SQL warehouse and Lakebase connectivity, foundation-model \u002F Vector Search \u002F model-serving APIs (via `databricks-python-sdk`), and deployment via CLI or DABs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1606,1607,1610,1613,1616,1619],{"name":9,"slug":8,"type":15},{"name":1608,"slug":1609,"type":15},"FastAPI","fastapi",{"name":1611,"slug":1612,"type":15},"Flask","flask",{"name":1614,"slug":1615,"type":15},"Gradio","gradio",{"name":1617,"slug":1618,"type":15},"Python","python",{"name":1620,"slug":1621,"type":15},"Streamlit","streamlit","2026-07-12T08:04:10.970845",{"slug":38,"name":38,"fn":1624,"description":1625,"org":1626,"tags":1627,"stars":23,"repoUrl":24,"updatedAt":1633},"configure Databricks CLI and authentication","Databricks CLI operations and the parent\u002Fentry-point skill for Databricks CLI use: authentication, profile selection, and bundles. Load this first for CLI, auth, profile, and bundle tasks, then load the matching product skill. For finding or exploring data, answering questions about the data, or generating SQL, load the databricks-data-discovery skill (it routes to Genie One). Contains up-to-date guidelines for Databricks-related CLI tasks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1628,1631,1632],{"name":1629,"slug":1630,"type":15},"Authentication","authentication",{"name":1542,"slug":1543,"type":15},{"name":9,"slug":8,"type":15},"2026-07-18T05:11:05.45506",{"slug":1635,"name":1635,"fn":1636,"description":1637,"org":1638,"tags":1639,"stars":23,"repoUrl":24,"updatedAt":1650},"databricks-dabs","manage Databricks Declarative Automation Bundles","Create, configure, validate, deploy, run, and manage Declarative Automation Bundles (DABs, formerly Databricks Asset Bundles). Use when working with Databricks resources via DABs including dashboards, jobs, pipelines, alerts, volumes, and apps.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1640,1643,1646,1647],{"name":1641,"slug":1642,"type":15},"Automation","automation",{"name":1644,"slug":1645,"type":15},"Configuration","configuration",{"name":9,"slug":8,"type":15},{"name":1648,"slug":1649,"type":15},"Deployment","deployment","2026-07-15T05:41:35.930355",{"slug":1652,"name":1652,"fn":1653,"description":1654,"org":1655,"tags":1656,"stars":23,"repoUrl":24,"updatedAt":1662},"databricks-data-discovery","discover and query Databricks data","Discover, explore, and query Databricks data via Genie — the CLI equivalent of the Genie One MCP. MUST be invoked whenever the user asks to find or locate data ('what tables are in X', 'where does X live', 'which catalog\u002Fschema has Y'), answer a natural-language question about the data, or write a SQL query.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1657,1658,1659,1660],{"name":1528,"slug":1529,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":1661,"slug":435,"type":15},"SQL","2026-07-31T05:53:32.561877",{"slug":1392,"name":1392,"fn":1664,"description":1665,"org":1666,"tags":1667,"stars":23,"repoUrl":24,"updatedAt":1674},"query and script Databricks SQL warehouses","Databricks SQL (DBSQL) advanced features and SQL warehouse capabilities. This skill MUST be invoked when the user mentions: \"DBSQL\", \"Databricks SQL\", \"SQL warehouse\", \"SQL scripting\", \"stored procedure\", \"CALL procedure\", \"materialized view\", \"CREATE MATERIALIZED VIEW\", \"pipe syntax\", \"|>\", \"geospatial\", \"H3\", \"ST_\", \"spatial SQL\", \"collation\", \"COLLATE\", \"ai_query\", \"ai_classify\", \"ai_extract\", \"ai_gen\", \"AI function\", \"http_request\", \"remote_query\", \"read_files\", \"Lakehouse Federation\", \"recursive CTE\", \"WITH RECURSIVE\", \"multi-statement transaction\", \"temp table\", \"temporary view\", \"pipe operator\". SHOULD also invoke when the user asks about SQL best practices, data modeling patterns, or advanced SQL features on Databricks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1668,1669,1672,1673],{"name":1528,"slug":1529,"type":15},{"name":1670,"slug":1671,"type":15},"Database","database",{"name":9,"slug":8,"type":15},{"name":1661,"slug":435,"type":15},"2026-07-12T08:04:08.678282",{"slug":1676,"name":1676,"fn":1677,"description":1678,"org":1679,"tags":1680,"stars":23,"repoUrl":24,"updatedAt":1688},"databricks-docs","search Databricks documentation","Databricks documentation reference via llms.txt index. Use when other skills do not cover a topic, looking up unfamiliar Databricks features, or needing authoritative docs on APIs, configurations, or platform capabilities.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1681,1682,1685],{"name":9,"slug":8,"type":15},{"name":1683,"slug":1684,"type":15},"Documentation","documentation",{"name":1686,"slug":1687,"type":15},"Reference","reference","2026-07-15T05:41:34.697746",31,{"items":1691,"total":1689},[1692,1699,1705,1712,1719,1727,1734],{"slug":1505,"name":1505,"fn":1506,"description":1507,"org":1693,"tags":1694,"stars":23,"repoUrl":24,"updatedAt":1520},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1695,1696,1697,1698],{"name":1511,"slug":1512,"type":15},{"name":9,"slug":8,"type":15},{"name":1515,"slug":1516,"type":15},{"name":1518,"slug":1519,"type":15},{"slug":1522,"name":1522,"fn":1523,"description":1524,"org":1700,"tags":1701,"stars":23,"repoUrl":24,"updatedAt":1534},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1702,1703,1704],{"name":1528,"slug":1529,"type":15},{"name":9,"slug":8,"type":15},{"name":1532,"slug":1533,"type":15},{"slug":1536,"name":1536,"fn":1537,"description":1538,"org":1706,"tags":1707,"stars":23,"repoUrl":24,"updatedAt":1551},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1708,1709,1710,1711],{"name":1542,"slug":1543,"type":15},{"name":9,"slug":8,"type":15},{"name":1546,"slug":1547,"type":15},{"name":1549,"slug":1550,"type":15},{"slug":1553,"name":1553,"fn":1554,"description":1555,"org":1713,"tags":1714,"stars":23,"repoUrl":24,"updatedAt":1568},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1715,1716,1717,1718],{"name":1559,"slug":1560,"type":15},{"name":1562,"slug":1563,"type":15},{"name":1565,"slug":1566,"type":15},{"name":9,"slug":8,"type":15},{"slug":1570,"name":1570,"fn":1571,"description":1572,"org":1720,"tags":1721,"stars":23,"repoUrl":24,"updatedAt":1588},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1722,1723,1724,1725,1726],{"name":9,"slug":8,"type":15},{"name":1577,"slug":1578,"type":15},{"name":1580,"slug":1581,"type":15},{"name":1583,"slug":1584,"type":15},{"name":1586,"slug":1587,"type":15},{"slug":1590,"name":1590,"fn":1591,"description":1592,"org":1728,"tags":1729,"stars":23,"repoUrl":24,"updatedAt":1599},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1730,1731,1732,1733],{"name":1559,"slug":1560,"type":15},{"name":1562,"slug":1563,"type":15},{"name":1528,"slug":1529,"type":15},{"name":9,"slug":8,"type":15},{"slug":1601,"name":1601,"fn":1602,"description":1603,"org":1735,"tags":1736,"stars":23,"repoUrl":24,"updatedAt":1622},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1737,1738,1739,1740,1741,1742],{"name":9,"slug":8,"type":15},{"name":1608,"slug":1609,"type":15},{"name":1611,"slug":1612,"type":15},{"name":1614,"slug":1615,"type":15},{"name":1617,"slug":1618,"type":15},{"name":1620,"slug":1621,"type":15}]