blob: 6572830f9ee70740c1003a2cda2f91d3562fe030 [file] [log] [blame]
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="prev" href="../spark-ddl/">
<link rel="next" href="../spark-queries/">
<link rel="icon" href="../../../assets/images/favicon-96x96.png">
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.23">
<title>Procedures - Apache Iceberg</title>
<link rel="stylesheet" href="../../../assets/stylesheets/main.6543a935.min.css">
<link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
<link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.46f4883b.css">
<style>:root{--md-text-font:"Nunito Sans";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../../../assets/stylesheets/extra.css">
<link rel="stylesheet" href="../../../assets/stylesheets/bootstrap-grid.css">
<link rel="stylesheet" href="../../../assets/stylesheets/bootstrap-buttons.css">
<link rel="stylesheet" href="../../../assets/stylesheets/home.css">
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="iceberg" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#spark-procedures" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<!--
Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
-->
<!-- Determine classes -->
<!-- Header -->
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<!-- Link to home -->
<a
href="../../.."
title="Apache Iceberg"
class="md-header__button md-logo"
aria-label="Apache Iceberg"
data-md-component="logo"
>
<img src="../../../assets/images/Iceberg-logo.svg" alt="logo">
</a>
<!-- Button to open drawer -->
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<!-- Header title -->
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis"> </span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Procedures
</span>
</div>
</div>
</div>
<!-- Button to open search modal -->
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<!-- Search interface -->
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-social">
<a href="https://iceberg.apache.org/community/" target="_blank" rel="noopener" title="iceberg.apache.org" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M88.2 309.1c9.8-18.3 6.8-40.8-7.5-55.8C59.4 230.9 48 204 48 176c0-63.5 63.8-128 160-128s160 64.5 160 128-63.8 128-160 128c-13.1 0-25.8-1.3-37.8-3.6-10.4-2-21.2-.6-30.7 4.2-4.1 2.1-8.3 4.1-12.6 6-16 7.2-32.9 13.5-49.9 18 2.8-4.6 5.4-9.1 7.9-13.6 1.1-1.9 2.2-3.9 3.2-5.9zM0 176c0 41.8 17.2 80.1 45.9 110.3-.9 1.7-1.9 3.5-2.8 5.1-10.3 18.4-22.3 36.5-36.6 52.1-6.6 7-8.3 17.2-4.6 25.9C5.8 378.3 14.4 384 24 384c43 0 86.5-13.3 122.7-29.7 4.8-2.2 9.6-4.5 14.2-6.8 15.1 3 30.9 4.5 47.1 4.5 114.9 0 208-78.8 208-176S322.9 0 208 0 0 78.8 0 176zm432 304c16.2 0 31.9-1.6 47.1-4.5 4.6 2.3 9.4 4.6 14.2 6.8C529.5 498.7 573 512 616 512c9.6 0 18.2-5.7 22-14.5 3.8-8.8 2-19-4.6-25.9-14.2-15.6-26.2-33.7-36.6-52.1-.9-1.7-1.9-3.4-2.8-5.1 28.8-30.3 46-68.6 46-110.4 0-94.4-87.9-171.5-198.2-175.8 4.1 15.2 6.2 31.2 6.2 47.8v.6c87.2 6.7 144 67.5 144 127.4 0 28-11.4 54.9-32.7 77.2-14.3 15-17.3 37.6-7.5 55.8 1.1 2 2.2 4 3.2 5.9 2.5 4.5 5.2 9 7.9 13.6-17-4.5-33.9-10.7-49.9-18-4.3-1.9-8.5-3.9-12.6-6-9.5-4.8-20.3-6.2-30.7-4.2-12.1 2.4-24.7 3.6-37.8 3.6-61.7 0-110-26.5-136.8-62.3-16 5.4-32.8 9.4-50 11.8C279 439.8 350 480 432 480z"/></svg>
</a>
<a href="https://github.com/apache/iceberg" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</a>
<a href="https://www.youtube.com/@ApacheIceberg" target="_blank" rel="noopener" title="www.youtube.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"/></svg>
</a>
<a href="https://join.slack.com/t/apache-iceberg/shared_invite/zt-287g3akar-K9Oe_En5j1UL7Y_Ikpai3A" target="_blank" rel="noopener" title="join.slack.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"/></svg>
</a>
</div>
<!-- Color palette toggle -->
<!-- User preference: color palette -->
<!-- Site language selector -->
<!-- Repository information -->
</nav>
<!-- Navigation tabs (sticky) -->
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../../.." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="../../../spark-quickstart/" class="md-tabs__link">
Quickstart
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../../nightly/" class="md-tabs__link">
Docs
</a>
</li>
<li class="md-tabs__item">
<a href="../../../releases/" class="md-tabs__link">
Releases
</a>
</li>
<li class="md-tabs__item">
<a href="../../../blogs/" class="md-tabs__link">
Blogs
</a>
</li>
<li class="md-tabs__item">
<a href="../../../talks/" class="md-tabs__link">
Talks
</a>
</li>
<li class="md-tabs__item">
<a href="../../../vendors/" class="md-tabs__link">
Vendors
</a>
</li>
<li class="md-tabs__item">
<a href="../../../community/" class="md-tabs__link">
Project
</a>
</li>
<li class="md-tabs__item">
<a href="../../../concepts/catalog/" class="md-tabs__link">
Concepts
</a>
</li>
</ul>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../../.." title="Apache Iceberg" class="md-nav__button md-logo" aria-label="Apache Iceberg" data-md-component="logo">
<img src="../../../assets/images/Iceberg-logo.svg" alt="logo">
</a>
Apache Iceberg
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../.." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
Quickstart
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Quickstart
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../spark-quickstart/" class="md-nav__link">
<span class="md-ellipsis">
Spark
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../hive-quickstart/" class="md-nav__link">
<span class="md-ellipsis">
Hive
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked>
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
<span class="md-ellipsis">
Docs
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Docs
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1" >
<label class="md-nav__link" for="__nav_3_1" id="__nav_3_1_label" tabindex="0">
<span class="md-ellipsis">
nightly
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_1">
<span class="md-nav__icon md-icon"></span>
nightly
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../nightly/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1_2" >
<label class="md-nav__link" for="__nav_3_1_2" id="__nav_3_1_2_label" tabindex="0">
<span class="md-ellipsis">
Tables
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_1_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_1_2">
<span class="md-nav__icon md-icon"></span>
Tables
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../nightly/branching/" class="md-nav__link">
<span class="md-ellipsis">
Branching and Tagging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/evolution/" class="md-nav__link">
<span class="md-ellipsis">
Evolution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/maintenance/" class="md-nav__link">
<span class="md-ellipsis">
Maintenance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/partitioning/" class="md-nav__link">
<span class="md-ellipsis">
Partitioning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/performance/" class="md-nav__link">
<span class="md-ellipsis">
Performance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/reliability/" class="md-nav__link">
<span class="md-ellipsis">
Reliability
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/schemas/" class="md-nav__link">
<span class="md-ellipsis">
Schemas
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1_3" >
<label class="md-nav__link" for="__nav_3_1_3" id="__nav_3_1_3_label" tabindex="0">
<span class="md-ellipsis">
Views
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_1_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_1_3">
<span class="md-nav__icon md-icon"></span>
Views
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../nightly/view-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1_4" >
<label class="md-nav__link" for="__nav_3_1_4" id="__nav_3_1_4_label" tabindex="0">
<span class="md-ellipsis">
Spark
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_1_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_1_4">
<span class="md-nav__icon md-icon"></span>
Spark
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../nightly/spark-getting-started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/spark-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/spark-ddl/" class="md-nav__link">
<span class="md-ellipsis">
DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/spark-procedures/" class="md-nav__link">
<span class="md-ellipsis">
Procedures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/spark-queries/" class="md-nav__link">
<span class="md-ellipsis">
Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/spark-structured-streaming/" class="md-nav__link">
<span class="md-ellipsis">
Structured Streaming
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/spark-writes/" class="md-nav__link">
<span class="md-ellipsis">
Writes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1_5" >
<label class="md-nav__link" for="__nav_3_1_5" id="__nav_3_1_5_label" tabindex="0">
<span class="md-ellipsis">
Flink
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_1_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_1_5">
<span class="md-nav__icon md-icon"></span>
Flink
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../nightly/flink/" class="md-nav__link">
<span class="md-ellipsis">
Flink Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/flink-connector/" class="md-nav__link">
<span class="md-ellipsis">
Flink Connector
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/flink-ddl/" class="md-nav__link">
<span class="md-ellipsis">
Flink DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/flink-queries/" class="md-nav__link">
<span class="md-ellipsis">
Flink Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/flink-writes/" class="md-nav__link">
<span class="md-ellipsis">
Flink Writes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/flink-actions/" class="md-nav__link">
<span class="md-ellipsis">
Flink Actions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/flink-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Flink Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../nightly/hive/" class="md-nav__link">
<span class="md-ellipsis">
Hive
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://trino.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Trino
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/daft/" class="md-nav__link">
<span class="md-ellipsis">
Daft
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://clickhouse.com/docs/en/engines/table-engines/integrations/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Clickhouse
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://prestodb.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Presto
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.dremio.com/data-formats/apache-iceberg/" class="md-nav__link">
<span class="md-ellipsis">
Dremio
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.starrocks.io/en-us/latest/data_source/catalog/iceberg_catalog" class="md-nav__link">
<span class="md-ellipsis">
Starrocks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon Athena
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-cluster.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon EMR
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.snowflake.com/en/user-guide/tables-iceberg" class="md-nav__link">
<span class="md-ellipsis">
Snowflake
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://impala.apache.org/docs/build/html/topics/impala_iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Impala
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://doris.apache.org/docs/dev/lakehouse/datalake-analytics/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Doris
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1_18" >
<label class="md-nav__link" for="__nav_3_1_18" id="__nav_3_1_18_label" tabindex="0">
<span class="md-ellipsis">
Integrations
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_1_18_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_1_18">
<span class="md-nav__icon md-icon"></span>
Integrations
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../nightly/aws/" class="md-nav__link">
<span class="md-ellipsis">
AWS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/dell/" class="md-nav__link">
<span class="md-ellipsis">
Dell
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/jdbc/" class="md-nav__link">
<span class="md-ellipsis">
JDBC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/nessie/" class="md-nav__link">
<span class="md-ellipsis">
Nessie
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_1_19" >
<label class="md-nav__link" for="__nav_3_1_19" id="__nav_3_1_19_label" tabindex="0">
<span class="md-ellipsis">
API
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_1_19_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_1_19">
<span class="md-nav__icon md-icon"></span>
API
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../nightly/java-api-quickstart/" class="md-nav__link">
<span class="md-ellipsis">
Java Quickstart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/api/" class="md-nav__link">
<span class="md-ellipsis">
Java API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../nightly/custom-catalog/" class="md-nav__link">
<span class="md-ellipsis">
Java Custom Catalog
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../javadoc/nightly" class="md-nav__link">
<span class="md-ellipsis">
Javadoc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://py.iceberg.apache.org/" class="md-nav__link">
<span class="md-ellipsis">
PyIceberg
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://rust.iceberg.apache.org/" class="md-nav__link">
<span class="md-ellipsis">
IcebergRust
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2" >
<label class="md-nav__link" for="__nav_3_2" id="__nav_3_2_label" tabindex="0">
<span class="md-ellipsis">
latest
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2">
<span class="md-nav__icon md-icon"></span>
latest
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../latest/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_2" >
<label class="md-nav__link" for="__nav_3_2_2" id="__nav_3_2_2_label" tabindex="0">
<span class="md-ellipsis">
Tables
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_2_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2_2">
<span class="md-nav__icon md-icon"></span>
Tables
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../latest/branching/" class="md-nav__link">
<span class="md-ellipsis">
Branching and Tagging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/evolution/" class="md-nav__link">
<span class="md-ellipsis">
Evolution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/maintenance/" class="md-nav__link">
<span class="md-ellipsis">
Maintenance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/partitioning/" class="md-nav__link">
<span class="md-ellipsis">
Partitioning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/performance/" class="md-nav__link">
<span class="md-ellipsis">
Performance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/reliability/" class="md-nav__link">
<span class="md-ellipsis">
Reliability
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/schemas/" class="md-nav__link">
<span class="md-ellipsis">
Schemas
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_3" >
<label class="md-nav__link" for="__nav_3_2_3" id="__nav_3_2_3_label" tabindex="0">
<span class="md-ellipsis">
Views
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_2_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2_3">
<span class="md-nav__icon md-icon"></span>
Views
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../latest/view-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_4" >
<label class="md-nav__link" for="__nav_3_2_4" id="__nav_3_2_4_label" tabindex="0">
<span class="md-ellipsis">
Spark
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_2_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2_4">
<span class="md-nav__icon md-icon"></span>
Spark
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../latest/spark-getting-started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/spark-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/spark-ddl/" class="md-nav__link">
<span class="md-ellipsis">
DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/spark-procedures/" class="md-nav__link">
<span class="md-ellipsis">
Procedures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/spark-queries/" class="md-nav__link">
<span class="md-ellipsis">
Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/spark-structured-streaming/" class="md-nav__link">
<span class="md-ellipsis">
Structured Streaming
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/spark-writes/" class="md-nav__link">
<span class="md-ellipsis">
Writes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_5" >
<label class="md-nav__link" for="__nav_3_2_5" id="__nav_3_2_5_label" tabindex="0">
<span class="md-ellipsis">
Flink
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_2_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2_5">
<span class="md-nav__icon md-icon"></span>
Flink
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../latest/flink/" class="md-nav__link">
<span class="md-ellipsis">
Flink Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/flink-connector/" class="md-nav__link">
<span class="md-ellipsis">
Flink Connector
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/flink-ddl/" class="md-nav__link">
<span class="md-ellipsis">
Flink DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/flink-queries/" class="md-nav__link">
<span class="md-ellipsis">
Flink Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/flink-writes/" class="md-nav__link">
<span class="md-ellipsis">
Flink Writes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/flink-actions/" class="md-nav__link">
<span class="md-ellipsis">
Flink Actions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/flink-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Flink Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../latest/hive/" class="md-nav__link">
<span class="md-ellipsis">
Hive
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://trino.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Trino
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://clickhouse.com/docs/en/engines/table-engines/integrations/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Clickhouse
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://prestodb.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Presto
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.dremio.com/data-formats/apache-iceberg/" class="md-nav__link">
<span class="md-ellipsis">
Dremio
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.starrocks.io/en-us/latest/data_source/catalog/iceberg_catalog" class="md-nav__link">
<span class="md-ellipsis">
Starrocks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon Athena
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-cluster.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon EMR
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.snowflake.com/en/user-guide/tables-iceberg" class="md-nav__link">
<span class="md-ellipsis">
Snowflake
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://impala.apache.org/docs/build/html/topics/impala_iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Impala
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://doris.apache.org/docs/dev/lakehouse/datalake-analytics/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Doris
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_17" >
<label class="md-nav__link" for="__nav_3_2_17" id="__nav_3_2_17_label" tabindex="0">
<span class="md-ellipsis">
Integrations
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_2_17_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2_17">
<span class="md-nav__icon md-icon"></span>
Integrations
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../latest/aws/" class="md-nav__link">
<span class="md-ellipsis">
AWS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/dell/" class="md-nav__link">
<span class="md-ellipsis">
Dell
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/jdbc/" class="md-nav__link">
<span class="md-ellipsis">
JDBC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/nessie/" class="md-nav__link">
<span class="md-ellipsis">
Nessie
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_2_18" >
<label class="md-nav__link" for="__nav_3_2_18" id="__nav_3_2_18_label" tabindex="0">
<span class="md-ellipsis">
API
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_2_18_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_2_18">
<span class="md-nav__icon md-icon"></span>
API
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../latest/java-api-quickstart/" class="md-nav__link">
<span class="md-ellipsis">
Java Quickstart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/api/" class="md-nav__link">
<span class="md-ellipsis">
Java API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../latest/custom-catalog/" class="md-nav__link">
<span class="md-ellipsis">
Java Custom Catalog
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../javadoc/latest" class="md-nav__link">
<span class="md-ellipsis">
Javadoc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://py.iceberg.apache.org/" class="md-nav__link">
<span class="md-ellipsis">
PyIceberg
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://rust.iceberg.apache.org/" class="md-nav__link">
<span class="md-ellipsis">
IcebergRust
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3" checked>
<label class="md-nav__link" for="__nav_3_3" id="__nav_3_3_label" tabindex="0">
<span class="md-ellipsis">
1.5.2
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_3_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3_3">
<span class="md-nav__icon md-icon"></span>
1.5.2
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3_2" >
<label class="md-nav__link" for="__nav_3_3_2" id="__nav_3_3_2_label" tabindex="0">
<span class="md-ellipsis">
Tables
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_3_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_3_2">
<span class="md-nav__icon md-icon"></span>
Tables
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../branching/" class="md-nav__link">
<span class="md-ellipsis">
Branching and Tagging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../evolution/" class="md-nav__link">
<span class="md-ellipsis">
Evolution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../maintenance/" class="md-nav__link">
<span class="md-ellipsis">
Maintenance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../partitioning/" class="md-nav__link">
<span class="md-ellipsis">
Partitioning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../performance/" class="md-nav__link">
<span class="md-ellipsis">
Performance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../reliability/" class="md-nav__link">
<span class="md-ellipsis">
Reliability
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../schemas/" class="md-nav__link">
<span class="md-ellipsis">
Schemas
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3_3" >
<label class="md-nav__link" for="__nav_3_3_3" id="__nav_3_3_3_label" tabindex="0">
<span class="md-ellipsis">
Views
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_3_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_3_3">
<span class="md-nav__icon md-icon"></span>
Views
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../view-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3_4" checked>
<label class="md-nav__link" for="__nav_3_3_4" id="__nav_3_3_4_label" tabindex="0">
<span class="md-ellipsis">
Spark
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_3_4_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_3_3_4">
<span class="md-nav__icon md-icon"></span>
Spark
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../spark-getting-started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../spark-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../spark-ddl/" class="md-nav__link">
<span class="md-ellipsis">
DDL
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Procedures
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Procedures
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#usage" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
<nav class="md-nav" aria-label="Usage">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#named-arguments" class="md-nav__link">
<span class="md-ellipsis">
Named arguments
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#positional-arguments" class="md-nav__link">
<span class="md-ellipsis">
Positional arguments
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#snapshot-management" class="md-nav__link">
<span class="md-ellipsis">
Snapshot management
</span>
</a>
<nav class="md-nav" aria-label="Snapshot management">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#rollback_to_snapshot" class="md-nav__link">
<span class="md-ellipsis">
rollback_to_snapshot
</span>
</a>
<nav class="md-nav" aria-label="rollback_to_snapshot">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_1" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#example" class="md-nav__link">
<span class="md-ellipsis">
Example
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#rollback_to_timestamp" class="md-nav__link">
<span class="md-ellipsis">
rollback_to_timestamp
</span>
</a>
<nav class="md-nav" aria-label="rollback_to_timestamp">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_2" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_1" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#example_1" class="md-nav__link">
<span class="md-ellipsis">
Example
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#set_current_snapshot" class="md-nav__link">
<span class="md-ellipsis">
set_current_snapshot
</span>
</a>
<nav class="md-nav" aria-label="set_current_snapshot">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_3" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_2" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#example_2" class="md-nav__link">
<span class="md-ellipsis">
Example
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#cherrypick_snapshot" class="md-nav__link">
<span class="md-ellipsis">
cherrypick_snapshot
</span>
</a>
<nav class="md-nav" aria-label="cherrypick_snapshot">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_4" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_3" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#publish_changes" class="md-nav__link">
<span class="md-ellipsis">
publish_changes
</span>
</a>
<nav class="md-nav" aria-label="publish_changes">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_5" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_4" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_1" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#fast_forward" class="md-nav__link">
<span class="md-ellipsis">
fast_forward
</span>
</a>
<nav class="md-nav" aria-label="fast_forward">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_6" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_5" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_2" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#metadata-management" class="md-nav__link">
<span class="md-ellipsis">
Metadata management
</span>
</a>
<nav class="md-nav" aria-label="Metadata management">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#expire_snapshots" class="md-nav__link">
<span class="md-ellipsis">
expire_snapshots
</span>
</a>
<nav class="md-nav" aria-label="expire_snapshots">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_7" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_6" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_3" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#remove_orphan_files" class="md-nav__link">
<span class="md-ellipsis">
remove_orphan_files
</span>
</a>
<nav class="md-nav" aria-label="remove_orphan_files">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_8" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_7" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_4" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#rewrite_data_files" class="md-nav__link">
<span class="md-ellipsis">
rewrite_data_files
</span>
</a>
<nav class="md-nav" aria-label="rewrite_data_files">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_9" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#options" class="md-nav__link">
<span class="md-ellipsis">
Options
</span>
</a>
<nav class="md-nav" aria-label="Options">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#general-options" class="md-nav__link">
<span class="md-ellipsis">
General Options
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#options-for-sort-strategy" class="md-nav__link">
<span class="md-ellipsis">
Options for sort strategy
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#options-for-sort-strategy-with-zorder-sort_order" class="md-nav__link">
<span class="md-ellipsis">
Options for sort strategy with zorder sort_order
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#output_8" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_5" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#rewrite_manifests" class="md-nav__link">
<span class="md-ellipsis">
rewrite_manifests
</span>
</a>
<nav class="md-nav" aria-label="rewrite_manifests">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_10" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_9" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_6" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#rewrite_position_delete_files" class="md-nav__link">
<span class="md-ellipsis">
rewrite_position_delete_files
</span>
</a>
<nav class="md-nav" aria-label="rewrite_position_delete_files">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_11" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#options_1" class="md-nav__link">
<span class="md-ellipsis">
Options
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_10" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_7" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#table-migration" class="md-nav__link">
<span class="md-ellipsis">
Table migration
</span>
</a>
<nav class="md-nav" aria-label="Table migration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#snapshot" class="md-nav__link">
<span class="md-ellipsis">
snapshot
</span>
</a>
<nav class="md-nav" aria-label="snapshot">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_12" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_11" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_8" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#migrate" class="md-nav__link">
<span class="md-ellipsis">
migrate
</span>
</a>
<nav class="md-nav" aria-label="migrate">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_13" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_12" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_9" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#add_files" class="md-nav__link">
<span class="md-ellipsis">
add_files
</span>
</a>
<nav class="md-nav" aria-label="add_files">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_14" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_13" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_10" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#register_table" class="md-nav__link">
<span class="md-ellipsis">
register_table
</span>
</a>
<nav class="md-nav" aria-label="register_table">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_15" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_14" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_11" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#metadata-information" class="md-nav__link">
<span class="md-ellipsis">
Metadata information
</span>
</a>
<nav class="md-nav" aria-label="Metadata information">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#ancestors_of" class="md-nav__link">
<span class="md-ellipsis">
ancestors_of
</span>
</a>
<nav class="md-nav" aria-label="ancestors_of">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_16" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_15" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_12" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#change-data-capture" class="md-nav__link">
<span class="md-ellipsis">
Change Data Capture
</span>
</a>
<nav class="md-nav" aria-label="Change Data Capture">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#create_changelog_view" class="md-nav__link">
<span class="md-ellipsis">
create_changelog_view
</span>
</a>
<nav class="md-nav" aria-label="create_changelog_view">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_17" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_16" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_13" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#carry-over-rows" class="md-nav__link">
<span class="md-ellipsis">
Carry-over Rows
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#prepost-update-images" class="md-nav__link">
<span class="md-ellipsis">
Pre/Post Update Images
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../spark-queries/" class="md-nav__link">
<span class="md-ellipsis">
Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../spark-structured-streaming/" class="md-nav__link">
<span class="md-ellipsis">
Structured Streaming
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../spark-writes/" class="md-nav__link">
<span class="md-ellipsis">
Writes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3_5" >
<label class="md-nav__link" for="__nav_3_3_5" id="__nav_3_3_5_label" tabindex="0">
<span class="md-ellipsis">
Flink
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_3_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_3_5">
<span class="md-nav__icon md-icon"></span>
Flink
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../flink/" class="md-nav__link">
<span class="md-ellipsis">
Flink Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../flink-connector/" class="md-nav__link">
<span class="md-ellipsis">
Flink Connector
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../flink-ddl/" class="md-nav__link">
<span class="md-ellipsis">
Flink DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../flink-queries/" class="md-nav__link">
<span class="md-ellipsis">
Flink Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../flink-writes/" class="md-nav__link">
<span class="md-ellipsis">
Flink Writes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../flink-actions/" class="md-nav__link">
<span class="md-ellipsis">
Flink Actions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../flink-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Flink Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../hive/" class="md-nav__link">
<span class="md-ellipsis">
Hive
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://trino.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Trino
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://clickhouse.com/docs/en/engines/table-engines/integrations/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Clickhouse
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://prestodb.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Presto
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.dremio.com/data-formats/apache-iceberg/" class="md-nav__link">
<span class="md-ellipsis">
Dremio
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.starrocks.io/en-us/latest/data_source/catalog/iceberg_catalog" class="md-nav__link">
<span class="md-ellipsis">
Starrocks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon Athena
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-cluster.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon EMR
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.snowflake.com/en/user-guide/tables-iceberg" class="md-nav__link">
<span class="md-ellipsis">
Snowflake
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://impala.apache.org/docs/build/html/topics/impala_iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Impala
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://doris.apache.org/docs/dev/lakehouse/datalake-analytics/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Doris
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3_17" >
<label class="md-nav__link" for="__nav_3_3_17" id="__nav_3_3_17_label" tabindex="0">
<span class="md-ellipsis">
Integrations
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_3_17_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_3_17">
<span class="md-nav__icon md-icon"></span>
Integrations
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../aws/" class="md-nav__link">
<span class="md-ellipsis">
AWS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../dell/" class="md-nav__link">
<span class="md-ellipsis">
Dell
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../jdbc/" class="md-nav__link">
<span class="md-ellipsis">
JDBC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../nessie/" class="md-nav__link">
<span class="md-ellipsis">
Nessie
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_3_18" >
<label class="md-nav__link" for="__nav_3_3_18" id="__nav_3_3_18_label" tabindex="0">
<span class="md-ellipsis">
API
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_3_18_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_3_18">
<span class="md-nav__icon md-icon"></span>
API
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../java-api-quickstart/" class="md-nav__link">
<span class="md-ellipsis">
Java Quickstart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../api/" class="md-nav__link">
<span class="md-ellipsis">
Java API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../custom-catalog/" class="md-nav__link">
<span class="md-ellipsis">
Java Custom Catalog
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../javadoc/1.5.2/" class="md-nav__link">
<span class="md-ellipsis">
Javadoc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://py.iceberg.apache.org/" class="md-nav__link">
<span class="md-ellipsis">
PyIceberg
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://rust.iceberg.apache.org/" class="md-nav__link">
<span class="md-ellipsis">
IcebergRust
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4" >
<label class="md-nav__link" for="__nav_3_4" id="__nav_3_4_label" tabindex="0">
<span class="md-ellipsis">
1.5.1
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_4">
<span class="md-nav__icon md-icon"></span>
1.5.1
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.5.1/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4_2" >
<label class="md-nav__link" for="__nav_3_4_2" id="__nav_3_4_2_label" tabindex="0">
<span class="md-ellipsis">
Tables
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_4_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_4_2">
<span class="md-nav__icon md-icon"></span>
Tables
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.5.1/branching/" class="md-nav__link">
<span class="md-ellipsis">
Branching and Tagging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/evolution/" class="md-nav__link">
<span class="md-ellipsis">
Evolution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/maintenance/" class="md-nav__link">
<span class="md-ellipsis">
Maintenance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/partitioning/" class="md-nav__link">
<span class="md-ellipsis">
Partitioning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/performance/" class="md-nav__link">
<span class="md-ellipsis">
Performance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/reliability/" class="md-nav__link">
<span class="md-ellipsis">
Reliability
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/schemas/" class="md-nav__link">
<span class="md-ellipsis">
Schemas
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4_3" >
<label class="md-nav__link" for="__nav_3_4_3" id="__nav_3_4_3_label" tabindex="0">
<span class="md-ellipsis">
Views
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_4_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_4_3">
<span class="md-nav__icon md-icon"></span>
Views
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.5.1/view-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4_4" >
<label class="md-nav__link" for="__nav_3_4_4" id="__nav_3_4_4_label" tabindex="0">
<span class="md-ellipsis">
Spark
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_4_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_4_4">
<span class="md-nav__icon md-icon"></span>
Spark
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.5.1/spark-getting-started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/spark-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/spark-ddl/" class="md-nav__link">
<span class="md-ellipsis">
DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/spark-procedures/" class="md-nav__link">
<span class="md-ellipsis">
Procedures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/spark-queries/" class="md-nav__link">
<span class="md-ellipsis">
Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/spark-structured-streaming/" class="md-nav__link">
<span class="md-ellipsis">
Structured Streaming
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/spark-writes/" class="md-nav__link">
<span class="md-ellipsis">
Writes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4_5" >
<label class="md-nav__link" for="__nav_3_4_5" id="__nav_3_4_5_label" tabindex="0">
<span class="md-ellipsis">
Flink
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_4_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_4_5">
<span class="md-nav__icon md-icon"></span>
Flink
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.5.1/flink/" class="md-nav__link">
<span class="md-ellipsis">
Flink Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/flink-connector/" class="md-nav__link">
<span class="md-ellipsis">
Flink Connector
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/flink-ddl/" class="md-nav__link">
<span class="md-ellipsis">
Flink DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/flink-queries/" class="md-nav__link">
<span class="md-ellipsis">
Flink Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/flink-writes/" class="md-nav__link">
<span class="md-ellipsis">
Flink Writes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/flink-actions/" class="md-nav__link">
<span class="md-ellipsis">
Flink Actions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/flink-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Flink Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/hive/" class="md-nav__link">
<span class="md-ellipsis">
Hive
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://trino.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Trino
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://clickhouse.com/docs/en/engines/table-engines/integrations/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Clickhouse
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://prestodb.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Presto
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.dremio.com/data-formats/apache-iceberg/" class="md-nav__link">
<span class="md-ellipsis">
Dremio
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.starrocks.io/en-us/latest/data_source/catalog/iceberg_catalog" class="md-nav__link">
<span class="md-ellipsis">
Starrocks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon Athena
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-cluster.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon EMR
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.snowflake.com/en/user-guide/tables-iceberg" class="md-nav__link">
<span class="md-ellipsis">
Snowflake
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://impala.apache.org/docs/build/html/topics/impala_iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Impala
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://doris.apache.org/docs/dev/lakehouse/datalake-analytics/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Doris
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4_17" >
<label class="md-nav__link" for="__nav_3_4_17" id="__nav_3_4_17_label" tabindex="0">
<span class="md-ellipsis">
Integrations
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_4_17_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_4_17">
<span class="md-nav__icon md-icon"></span>
Integrations
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.5.1/aws/" class="md-nav__link">
<span class="md-ellipsis">
AWS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/dell/" class="md-nav__link">
<span class="md-ellipsis">
Dell
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/jdbc/" class="md-nav__link">
<span class="md-ellipsis">
JDBC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/nessie/" class="md-nav__link">
<span class="md-ellipsis">
Nessie
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4_18" >
<label class="md-nav__link" for="__nav_3_4_18" id="__nav_3_4_18_label" tabindex="0">
<span class="md-ellipsis">
API
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_4_18_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_4_18">
<span class="md-nav__icon md-icon"></span>
API
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.5.1/java-api-quickstart/" class="md-nav__link">
<span class="md-ellipsis">
Java Quickstart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/api/" class="md-nav__link">
<span class="md-ellipsis">
Java API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.1/custom-catalog/" class="md-nav__link">
<span class="md-ellipsis">
Java Custom Catalog
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../javadoc/1.5.1/" class="md-nav__link">
<span class="md-ellipsis">
Javadoc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://py.iceberg.apache.org/" class="md-nav__link">
<span class="md-ellipsis">
PyIceberg
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://rust.iceberg.apache.org/" class="md-nav__link">
<span class="md-ellipsis">
IcebergRust
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5" >
<label class="md-nav__link" for="__nav_3_5" id="__nav_3_5_label" tabindex="0">
<span class="md-ellipsis">
1.5.0
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_5">
<span class="md-nav__icon md-icon"></span>
1.5.0
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.5.0/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5_2" >
<label class="md-nav__link" for="__nav_3_5_2" id="__nav_3_5_2_label" tabindex="0">
<span class="md-ellipsis">
Tables
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_5_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_5_2">
<span class="md-nav__icon md-icon"></span>
Tables
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.5.0/branching/" class="md-nav__link">
<span class="md-ellipsis">
Branching and Tagging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/evolution/" class="md-nav__link">
<span class="md-ellipsis">
Evolution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/maintenance/" class="md-nav__link">
<span class="md-ellipsis">
Maintenance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/partitioning/" class="md-nav__link">
<span class="md-ellipsis">
Partitioning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/performance/" class="md-nav__link">
<span class="md-ellipsis">
Performance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/reliability/" class="md-nav__link">
<span class="md-ellipsis">
Reliability
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/schemas/" class="md-nav__link">
<span class="md-ellipsis">
Schemas
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5_3" >
<label class="md-nav__link" for="__nav_3_5_3" id="__nav_3_5_3_label" tabindex="0">
<span class="md-ellipsis">
Views
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_5_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_5_3">
<span class="md-nav__icon md-icon"></span>
Views
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.5.0/view-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5_4" >
<label class="md-nav__link" for="__nav_3_5_4" id="__nav_3_5_4_label" tabindex="0">
<span class="md-ellipsis">
Spark
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_5_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_5_4">
<span class="md-nav__icon md-icon"></span>
Spark
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.5.0/spark-getting-started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/spark-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/spark-ddl/" class="md-nav__link">
<span class="md-ellipsis">
DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/spark-procedures/" class="md-nav__link">
<span class="md-ellipsis">
Procedures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/spark-queries/" class="md-nav__link">
<span class="md-ellipsis">
Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/spark-structured-streaming/" class="md-nav__link">
<span class="md-ellipsis">
Structured Streaming
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/spark-writes/" class="md-nav__link">
<span class="md-ellipsis">
Writes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5_5" >
<label class="md-nav__link" for="__nav_3_5_5" id="__nav_3_5_5_label" tabindex="0">
<span class="md-ellipsis">
Flink
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_5_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_5_5">
<span class="md-nav__icon md-icon"></span>
Flink
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.5.0/flink/" class="md-nav__link">
<span class="md-ellipsis">
Flink Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/flink-connector/" class="md-nav__link">
<span class="md-ellipsis">
Flink Connector
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/flink-ddl/" class="md-nav__link">
<span class="md-ellipsis">
Flink DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/flink-queries/" class="md-nav__link">
<span class="md-ellipsis">
Flink Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/flink-writes/" class="md-nav__link">
<span class="md-ellipsis">
Flink Writes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/flink-actions/" class="md-nav__link">
<span class="md-ellipsis">
Flink Actions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/flink-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Flink Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/hive/" class="md-nav__link">
<span class="md-ellipsis">
Hive
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://trino.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Trino
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://clickhouse.com/docs/en/engines/table-engines/integrations/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Clickhouse
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://prestodb.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Presto
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.dremio.com/data-formats/apache-iceberg/" class="md-nav__link">
<span class="md-ellipsis">
Dremio
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.starrocks.io/en-us/latest/data_source/catalog/iceberg_catalog" class="md-nav__link">
<span class="md-ellipsis">
Starrocks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon Athena
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-cluster.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon EMR
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.snowflake.com/en/user-guide/tables-iceberg" class="md-nav__link">
<span class="md-ellipsis">
Snowflake
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://impala.apache.org/docs/build/html/topics/impala_iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Impala
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://doris.apache.org/docs/dev/lakehouse/datalake-analytics/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Doris
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5_17" >
<label class="md-nav__link" for="__nav_3_5_17" id="__nav_3_5_17_label" tabindex="0">
<span class="md-ellipsis">
Integrations
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_5_17_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_5_17">
<span class="md-nav__icon md-icon"></span>
Integrations
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.5.0/aws/" class="md-nav__link">
<span class="md-ellipsis">
AWS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/dell/" class="md-nav__link">
<span class="md-ellipsis">
Dell
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/jdbc/" class="md-nav__link">
<span class="md-ellipsis">
JDBC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/nessie/" class="md-nav__link">
<span class="md-ellipsis">
Nessie
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_5_18" >
<label class="md-nav__link" for="__nav_3_5_18" id="__nav_3_5_18_label" tabindex="0">
<span class="md-ellipsis">
API
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_5_18_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_5_18">
<span class="md-nav__icon md-icon"></span>
API
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.5.0/java-api-quickstart/" class="md-nav__link">
<span class="md-ellipsis">
Java Quickstart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/api/" class="md-nav__link">
<span class="md-ellipsis">
Java API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.5.0/custom-catalog/" class="md-nav__link">
<span class="md-ellipsis">
Java Custom Catalog
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../javadoc/1.5.0/" class="md-nav__link">
<span class="md-ellipsis">
Javadoc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://py.iceberg.apache.org/" class="md-nav__link">
<span class="md-ellipsis">
PyIceberg
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://rust.iceberg.apache.org/" class="md-nav__link">
<span class="md-ellipsis">
IcebergRust
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6" >
<label class="md-nav__link" for="__nav_3_6" id="__nav_3_6_label" tabindex="0">
<span class="md-ellipsis">
1.4.3
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6">
<span class="md-nav__icon md-icon"></span>
1.4.3
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.3/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6_2" >
<label class="md-nav__link" for="__nav_3_6_2" id="__nav_3_6_2_label" tabindex="0">
<span class="md-ellipsis">
Tables
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_6_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6_2">
<span class="md-nav__icon md-icon"></span>
Tables
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.3/branching/" class="md-nav__link">
<span class="md-ellipsis">
Branching and Tagging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/evolution/" class="md-nav__link">
<span class="md-ellipsis">
Evolution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/maintenance/" class="md-nav__link">
<span class="md-ellipsis">
Maintenance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/metrics-reporting/" class="md-nav__link">
<span class="md-ellipsis">
Metrics Reporting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/partitioning/" class="md-nav__link">
<span class="md-ellipsis">
Partitioning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/performance/" class="md-nav__link">
<span class="md-ellipsis">
Performance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/reliability/" class="md-nav__link">
<span class="md-ellipsis">
Reliability
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/schemas/" class="md-nav__link">
<span class="md-ellipsis">
Schemas
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6_3" >
<label class="md-nav__link" for="__nav_3_6_3" id="__nav_3_6_3_label" tabindex="0">
<span class="md-ellipsis">
Spark
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_6_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6_3">
<span class="md-nav__icon md-icon"></span>
Spark
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.3/spark-getting-started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/spark-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/spark-ddl/" class="md-nav__link">
<span class="md-ellipsis">
DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/spark-procedures/" class="md-nav__link">
<span class="md-ellipsis">
Procedures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/spark-queries/" class="md-nav__link">
<span class="md-ellipsis">
Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/spark-structured-streaming/" class="md-nav__link">
<span class="md-ellipsis">
Structured Streaming
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/spark-writes/" class="md-nav__link">
<span class="md-ellipsis">
Writes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6_4" >
<label class="md-nav__link" for="__nav_3_6_4" id="__nav_3_6_4_label" tabindex="0">
<span class="md-ellipsis">
Flink
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_6_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6_4">
<span class="md-nav__icon md-icon"></span>
Flink
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.3/flink/" class="md-nav__link">
<span class="md-ellipsis">
Flink Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/flink-connector/" class="md-nav__link">
<span class="md-ellipsis">
Flink Connector
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/flink-ddl/" class="md-nav__link">
<span class="md-ellipsis">
Flink DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/flink-queries/" class="md-nav__link">
<span class="md-ellipsis">
Flink Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/flink-writes/" class="md-nav__link">
<span class="md-ellipsis">
Flink Writes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/flink-actions/" class="md-nav__link">
<span class="md-ellipsis">
Flink Actions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/flink-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Flink Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/hive/" class="md-nav__link">
<span class="md-ellipsis">
Hive
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://trino.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Trino
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://clickhouse.com/docs/en/engines/table-engines/integrations/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Clickhouse
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://prestodb.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Presto
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.dremio.com/data-formats/apache-iceberg/" class="md-nav__link">
<span class="md-ellipsis">
Dremio
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.starrocks.io/en-us/latest/data_source/catalog/iceberg_catalog" class="md-nav__link">
<span class="md-ellipsis">
Starrocks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon Athena
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-cluster.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon EMR
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://impala.apache.org/docs/build/html/topics/impala_iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Impala
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://doris.apache.org/docs/dev/lakehouse/datalake-analytics/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Doris
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6_15" >
<label class="md-nav__link" for="__nav_3_6_15" id="__nav_3_6_15_label" tabindex="0">
<span class="md-ellipsis">
Integrations
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_6_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6_15">
<span class="md-nav__icon md-icon"></span>
Integrations
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.3/aws/" class="md-nav__link">
<span class="md-ellipsis">
AWS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/dell/" class="md-nav__link">
<span class="md-ellipsis">
Dell
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/jdbc/" class="md-nav__link">
<span class="md-ellipsis">
JDBC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/nessie/" class="md-nav__link">
<span class="md-ellipsis">
Nessie
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6_16" >
<label class="md-nav__link" for="__nav_3_6_16" id="__nav_3_6_16_label" tabindex="0">
<span class="md-ellipsis">
API
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_6_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6_16">
<span class="md-nav__icon md-icon"></span>
API
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.3/java-api-quickstart/" class="md-nav__link">
<span class="md-ellipsis">
Java Quickstart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/api/" class="md-nav__link">
<span class="md-ellipsis">
Java API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/custom-catalog/" class="md-nav__link">
<span class="md-ellipsis">
Java Custom Catalog
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_6_17" >
<label class="md-nav__link" for="__nav_3_6_17" id="__nav_3_6_17_label" tabindex="0">
<span class="md-ellipsis">
Migration
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_6_17_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_6_17">
<span class="md-nav__icon md-icon"></span>
Migration
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.3/table-migration/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/hive-migration/" class="md-nav__link">
<span class="md-ellipsis">
Hive Migration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.3/delta-lake-migration/" class="md-nav__link">
<span class="md-ellipsis">
Delta Lake Migration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../javadoc/1.4.3" class="md-nav__link">
<span class="md-ellipsis">
Javadoc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://py.iceberg.apache.org/" class="md-nav__link">
<span class="md-ellipsis">
PyIceberg
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7" >
<label class="md-nav__link" for="__nav_3_7" id="__nav_3_7_label" tabindex="0">
<span class="md-ellipsis">
1.4.2
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7">
<span class="md-nav__icon md-icon"></span>
1.4.2
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.2/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7_2" >
<label class="md-nav__link" for="__nav_3_7_2" id="__nav_3_7_2_label" tabindex="0">
<span class="md-ellipsis">
Tables
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_7_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7_2">
<span class="md-nav__icon md-icon"></span>
Tables
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.2/branching/" class="md-nav__link">
<span class="md-ellipsis">
Branching and Tagging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/evolution/" class="md-nav__link">
<span class="md-ellipsis">
Evolution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/maintenance/" class="md-nav__link">
<span class="md-ellipsis">
Maintenance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/metrics-reporting/" class="md-nav__link">
<span class="md-ellipsis">
Metrics Reporting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/partitioning/" class="md-nav__link">
<span class="md-ellipsis">
Partitioning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/performance/" class="md-nav__link">
<span class="md-ellipsis">
Performance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/reliability/" class="md-nav__link">
<span class="md-ellipsis">
Reliability
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/schemas/" class="md-nav__link">
<span class="md-ellipsis">
Schemas
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7_3" >
<label class="md-nav__link" for="__nav_3_7_3" id="__nav_3_7_3_label" tabindex="0">
<span class="md-ellipsis">
Spark
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_7_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7_3">
<span class="md-nav__icon md-icon"></span>
Spark
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.2/spark-getting-started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/spark-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/spark-ddl/" class="md-nav__link">
<span class="md-ellipsis">
DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/spark-procedures/" class="md-nav__link">
<span class="md-ellipsis">
Procedures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/spark-queries/" class="md-nav__link">
<span class="md-ellipsis">
Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/spark-structured-streaming/" class="md-nav__link">
<span class="md-ellipsis">
Structured Streaming
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/spark-writes/" class="md-nav__link">
<span class="md-ellipsis">
Writes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7_4" >
<label class="md-nav__link" for="__nav_3_7_4" id="__nav_3_7_4_label" tabindex="0">
<span class="md-ellipsis">
Flink
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_7_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7_4">
<span class="md-nav__icon md-icon"></span>
Flink
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.2/flink/" class="md-nav__link">
<span class="md-ellipsis">
Flink Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/flink-connector/" class="md-nav__link">
<span class="md-ellipsis">
Flink Connector
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/flink-ddl/" class="md-nav__link">
<span class="md-ellipsis">
Flink DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/flink-queries/" class="md-nav__link">
<span class="md-ellipsis">
Flink Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/flink-writes/" class="md-nav__link">
<span class="md-ellipsis">
Flink Writes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/flink-actions/" class="md-nav__link">
<span class="md-ellipsis">
Flink Actions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/flink-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Flink Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/hive/" class="md-nav__link">
<span class="md-ellipsis">
Hive
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://trino.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Trino
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://clickhouse.com/docs/en/engines/table-engines/integrations/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Clickhouse
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://prestodb.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Presto
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.dremio.com/data-formats/apache-iceberg/" class="md-nav__link">
<span class="md-ellipsis">
Dremio
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.starrocks.io/en-us/latest/data_source/catalog/iceberg_catalog" class="md-nav__link">
<span class="md-ellipsis">
Starrocks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon Athena
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-cluster.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon EMR
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://impala.apache.org/docs/build/html/topics/impala_iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Impala
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://doris.apache.org/docs/dev/lakehouse/datalake-analytics/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Doris
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7_15" >
<label class="md-nav__link" for="__nav_3_7_15" id="__nav_3_7_15_label" tabindex="0">
<span class="md-ellipsis">
Integrations
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_7_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7_15">
<span class="md-nav__icon md-icon"></span>
Integrations
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.2/aws/" class="md-nav__link">
<span class="md-ellipsis">
AWS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/dell/" class="md-nav__link">
<span class="md-ellipsis">
Dell
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/jdbc/" class="md-nav__link">
<span class="md-ellipsis">
JDBC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/nessie/" class="md-nav__link">
<span class="md-ellipsis">
Nessie
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7_16" >
<label class="md-nav__link" for="__nav_3_7_16" id="__nav_3_7_16_label" tabindex="0">
<span class="md-ellipsis">
API
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_7_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7_16">
<span class="md-nav__icon md-icon"></span>
API
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.2/java-api-quickstart/" class="md-nav__link">
<span class="md-ellipsis">
Java Quickstart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/api/" class="md-nav__link">
<span class="md-ellipsis">
Java API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/custom-catalog/" class="md-nav__link">
<span class="md-ellipsis">
Java Custom Catalog
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_7_17" >
<label class="md-nav__link" for="__nav_3_7_17" id="__nav_3_7_17_label" tabindex="0">
<span class="md-ellipsis">
Migration
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_7_17_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_7_17">
<span class="md-nav__icon md-icon"></span>
Migration
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.2/table-migration/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/hive-migration/" class="md-nav__link">
<span class="md-ellipsis">
Hive Migration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.2/delta-lake-migration/" class="md-nav__link">
<span class="md-ellipsis">
Delta Lake Migration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../javadoc/1.4.2" class="md-nav__link">
<span class="md-ellipsis">
Javadoc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://py.iceberg.apache.org/" class="md-nav__link">
<span class="md-ellipsis">
PyIceberg
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_8" >
<label class="md-nav__link" for="__nav_3_8" id="__nav_3_8_label" tabindex="0">
<span class="md-ellipsis">
1.4.1
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_8">
<span class="md-nav__icon md-icon"></span>
1.4.1
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.1/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_8_2" >
<label class="md-nav__link" for="__nav_3_8_2" id="__nav_3_8_2_label" tabindex="0">
<span class="md-ellipsis">
Tables
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_8_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_8_2">
<span class="md-nav__icon md-icon"></span>
Tables
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.1/branching/" class="md-nav__link">
<span class="md-ellipsis">
Branching and Tagging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/evolution/" class="md-nav__link">
<span class="md-ellipsis">
Evolution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/maintenance/" class="md-nav__link">
<span class="md-ellipsis">
Maintenance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/metrics-reporting/" class="md-nav__link">
<span class="md-ellipsis">
Metrics Reporting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/partitioning/" class="md-nav__link">
<span class="md-ellipsis">
Partitioning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/performance/" class="md-nav__link">
<span class="md-ellipsis">
Performance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/reliability/" class="md-nav__link">
<span class="md-ellipsis">
Reliability
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/schemas/" class="md-nav__link">
<span class="md-ellipsis">
Schemas
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_8_3" >
<label class="md-nav__link" for="__nav_3_8_3" id="__nav_3_8_3_label" tabindex="0">
<span class="md-ellipsis">
Spark
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_8_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_8_3">
<span class="md-nav__icon md-icon"></span>
Spark
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.1/spark-getting-started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/spark-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/spark-ddl/" class="md-nav__link">
<span class="md-ellipsis">
DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/spark-procedures/" class="md-nav__link">
<span class="md-ellipsis">
Procedures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/spark-queries/" class="md-nav__link">
<span class="md-ellipsis">
Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/spark-structured-streaming/" class="md-nav__link">
<span class="md-ellipsis">
Structured Streaming
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/spark-writes/" class="md-nav__link">
<span class="md-ellipsis">
Writes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_8_4" >
<label class="md-nav__link" for="__nav_3_8_4" id="__nav_3_8_4_label" tabindex="0">
<span class="md-ellipsis">
Flink
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_8_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_8_4">
<span class="md-nav__icon md-icon"></span>
Flink
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.1/flink/" class="md-nav__link">
<span class="md-ellipsis">
Flink Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/flink-connector/" class="md-nav__link">
<span class="md-ellipsis">
Flink Connector
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/flink-ddl/" class="md-nav__link">
<span class="md-ellipsis">
Flink DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/flink-queries/" class="md-nav__link">
<span class="md-ellipsis">
Flink Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/flink-writes/" class="md-nav__link">
<span class="md-ellipsis">
Flink Writes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/flink-actions/" class="md-nav__link">
<span class="md-ellipsis">
Flink Actions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/flink-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Flink Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/hive/" class="md-nav__link">
<span class="md-ellipsis">
Hive
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://trino.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Trino
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://clickhouse.com/docs/en/engines/table-engines/integrations/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Clickhouse
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://prestodb.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Presto
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.dremio.com/data-formats/apache-iceberg/" class="md-nav__link">
<span class="md-ellipsis">
Dremio
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.starrocks.io/en-us/latest/data_source/catalog/iceberg_catalog" class="md-nav__link">
<span class="md-ellipsis">
Starrocks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon Athena
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-cluster.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon EMR
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://impala.apache.org/docs/build/html/topics/impala_iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Impala
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://doris.apache.org/docs/dev/lakehouse/datalake-analytics/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Doris
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_8_15" >
<label class="md-nav__link" for="__nav_3_8_15" id="__nav_3_8_15_label" tabindex="0">
<span class="md-ellipsis">
Integrations
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_8_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_8_15">
<span class="md-nav__icon md-icon"></span>
Integrations
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.1/aws/" class="md-nav__link">
<span class="md-ellipsis">
AWS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/dell/" class="md-nav__link">
<span class="md-ellipsis">
Dell
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/jdbc/" class="md-nav__link">
<span class="md-ellipsis">
JDBC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/nessie/" class="md-nav__link">
<span class="md-ellipsis">
Nessie
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_8_16" >
<label class="md-nav__link" for="__nav_3_8_16" id="__nav_3_8_16_label" tabindex="0">
<span class="md-ellipsis">
API
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_8_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_8_16">
<span class="md-nav__icon md-icon"></span>
API
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.1/java-api-quickstart/" class="md-nav__link">
<span class="md-ellipsis">
Java Quickstart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/api/" class="md-nav__link">
<span class="md-ellipsis">
Java API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/custom-catalog/" class="md-nav__link">
<span class="md-ellipsis">
Java Custom Catalog
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_8_17" >
<label class="md-nav__link" for="__nav_3_8_17" id="__nav_3_8_17_label" tabindex="0">
<span class="md-ellipsis">
Migration
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_8_17_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_8_17">
<span class="md-nav__icon md-icon"></span>
Migration
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.1/table-migration/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/hive-migration/" class="md-nav__link">
<span class="md-ellipsis">
Hive Migration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.1/delta-lake-migration/" class="md-nav__link">
<span class="md-ellipsis">
Delta Lake Migration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../javadoc/1.4.1/" class="md-nav__link">
<span class="md-ellipsis">
Javadoc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://py.iceberg.apache.org/" class="md-nav__link">
<span class="md-ellipsis">
PyIceberg
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_9" >
<label class="md-nav__link" for="__nav_3_9" id="__nav_3_9_label" tabindex="0">
<span class="md-ellipsis">
1.4.0
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_9">
<span class="md-nav__icon md-icon"></span>
1.4.0
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.0/" class="md-nav__link">
<span class="md-ellipsis">
Introduction
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_9_2" >
<label class="md-nav__link" for="__nav_3_9_2" id="__nav_3_9_2_label" tabindex="0">
<span class="md-ellipsis">
Tables
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_9_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_9_2">
<span class="md-nav__icon md-icon"></span>
Tables
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.0/branching/" class="md-nav__link">
<span class="md-ellipsis">
Branching and Tagging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/evolution/" class="md-nav__link">
<span class="md-ellipsis">
Evolution
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/maintenance/" class="md-nav__link">
<span class="md-ellipsis">
Maintenance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/metrics-reporting/" class="md-nav__link">
<span class="md-ellipsis">
Metrics Reporting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/partitioning/" class="md-nav__link">
<span class="md-ellipsis">
Partitioning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/performance/" class="md-nav__link">
<span class="md-ellipsis">
Performance
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/reliability/" class="md-nav__link">
<span class="md-ellipsis">
Reliability
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/schemas/" class="md-nav__link">
<span class="md-ellipsis">
Schemas
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_9_3" >
<label class="md-nav__link" for="__nav_3_9_3" id="__nav_3_9_3_label" tabindex="0">
<span class="md-ellipsis">
Spark
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_9_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_9_3">
<span class="md-nav__icon md-icon"></span>
Spark
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.0/spark-getting-started/" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/spark-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/spark-ddl/" class="md-nav__link">
<span class="md-ellipsis">
DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/spark-procedures/" class="md-nav__link">
<span class="md-ellipsis">
Procedures
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/spark-queries/" class="md-nav__link">
<span class="md-ellipsis">
Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/spark-structured-streaming/" class="md-nav__link">
<span class="md-ellipsis">
Structured Streaming
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/spark-writes/" class="md-nav__link">
<span class="md-ellipsis">
Writes
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_9_4" >
<label class="md-nav__link" for="__nav_3_9_4" id="__nav_3_9_4_label" tabindex="0">
<span class="md-ellipsis">
Flink
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_9_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_9_4">
<span class="md-nav__icon md-icon"></span>
Flink
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.0/flink/" class="md-nav__link">
<span class="md-ellipsis">
Flink Getting Started
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/flink-connector/" class="md-nav__link">
<span class="md-ellipsis">
Flink Connector
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/flink-ddl/" class="md-nav__link">
<span class="md-ellipsis">
Flink DDL
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/flink-queries/" class="md-nav__link">
<span class="md-ellipsis">
Flink Queries
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/flink-writes/" class="md-nav__link">
<span class="md-ellipsis">
Flink Writes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/flink-actions/" class="md-nav__link">
<span class="md-ellipsis">
Flink Actions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/flink-configuration/" class="md-nav__link">
<span class="md-ellipsis">
Flink Configuration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/hive/" class="md-nav__link">
<span class="md-ellipsis">
Hive
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://trino.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Trino
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://clickhouse.com/docs/en/engines/table-engines/integrations/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Clickhouse
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://prestodb.io/docs/current/connector/iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Presto
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.dremio.com/data-formats/apache-iceberg/" class="md-nav__link">
<span class="md-ellipsis">
Dremio
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.starrocks.io/en-us/latest/data_source/catalog/iceberg_catalog" class="md-nav__link">
<span class="md-ellipsis">
Starrocks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon Athena
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-iceberg-use-cluster.html" class="md-nav__link">
<span class="md-ellipsis">
Amazon EMR
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://impala.apache.org/docs/build/html/topics/impala_iceberg.html" class="md-nav__link">
<span class="md-ellipsis">
Impala
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://doris.apache.org/docs/dev/lakehouse/datalake-analytics/iceberg" class="md-nav__link">
<span class="md-ellipsis">
Doris
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_9_15" >
<label class="md-nav__link" for="__nav_3_9_15" id="__nav_3_9_15_label" tabindex="0">
<span class="md-ellipsis">
Integrations
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_9_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_9_15">
<span class="md-nav__icon md-icon"></span>
Integrations
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.0/aws/" class="md-nav__link">
<span class="md-ellipsis">
AWS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/dell/" class="md-nav__link">
<span class="md-ellipsis">
Dell
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/jdbc/" class="md-nav__link">
<span class="md-ellipsis">
JDBC
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/nessie/" class="md-nav__link">
<span class="md-ellipsis">
Nessie
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_9_16" >
<label class="md-nav__link" for="__nav_3_9_16" id="__nav_3_9_16_label" tabindex="0">
<span class="md-ellipsis">
API
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_9_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_9_16">
<span class="md-nav__icon md-icon"></span>
API
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.0/java-api-quickstart/" class="md-nav__link">
<span class="md-ellipsis">
Java Quickstart
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/api/" class="md-nav__link">
<span class="md-ellipsis">
Java API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/custom-catalog/" class="md-nav__link">
<span class="md-ellipsis">
Java Custom Catalog
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_9_17" >
<label class="md-nav__link" for="__nav_3_9_17" id="__nav_3_9_17_label" tabindex="0">
<span class="md-ellipsis">
Migration
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_3_9_17_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3_9_17">
<span class="md-nav__icon md-icon"></span>
Migration
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../1.4.0/table-migration/" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/hive-migration/" class="md-nav__link">
<span class="md-ellipsis">
Hive Migration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../1.4.0/delta-lake-migration/" class="md-nav__link">
<span class="md-ellipsis">
Delta Lake Migration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../javadoc/1.4.0/" class="md-nav__link">
<span class="md-ellipsis">
Javadoc
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://py.iceberg.apache.org/" class="md-nav__link">
<span class="md-ellipsis">
PyIceberg
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../../releases/" class="md-nav__link">
<span class="md-ellipsis">
Releases
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../blogs/" class="md-nav__link">
<span class="md-ellipsis">
Blogs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../talks/" class="md-nav__link">
<span class="md-ellipsis">
Talks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../vendors/" class="md-nav__link">
<span class="md-ellipsis">
Vendors
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
<span class="md-ellipsis">
Project
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
Project
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../community/" class="md-nav__link">
<span class="md-ellipsis">
Community
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../spec/" class="md-nav__link">
<span class="md-ellipsis">
Spec
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../view-spec/" class="md-nav__link">
<span class="md-ellipsis">
View spec
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../puffin-spec/" class="md-nav__link">
<span class="md-ellipsis">
Puffin spec
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../gcm-stream-spec/" class="md-nav__link">
<span class="md-ellipsis">
AES GCM Stream spec
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../multi-engine-support/" class="md-nav__link">
<span class="md-ellipsis">
Multi-engine support
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../how-to-release/" class="md-nav__link">
<span class="md-ellipsis">
How to release
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../terms/" class="md-nav__link">
<span class="md-ellipsis">
Terms
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8_9" >
<label class="md-nav__link" for="__nav_8_9" id="__nav_8_9_label" tabindex="0">
<span class="md-ellipsis">
ASF
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_8_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8_9">
<span class="md-nav__icon md-icon"></span>
ASF
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="https://www.apache.org/foundation/thanks.html" class="md-nav__link">
<span class="md-ellipsis">
Sponsorship
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://www.apache.org/events/current-event.html" class="md-nav__link">
<span class="md-ellipsis">
Events
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://privacy.apache.org/policies/privacy-policy-public.html" class="md-nav__link">
<span class="md-ellipsis">
Privacy
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://www.apache.org/licenses/" class="md-nav__link">
<span class="md-ellipsis">
License
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://www.apache.org/security/" class="md-nav__link">
<span class="md-ellipsis">
Security
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://www.apache.org/foundation/thanks.html" class="md-nav__link">
<span class="md-ellipsis">
Sponsors
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
<span class="md-ellipsis">
Concepts
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
Concepts
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../../concepts/catalog/" class="md-nav__link">
<span class="md-ellipsis">
Catalogs
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#usage" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
<nav class="md-nav" aria-label="Usage">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#named-arguments" class="md-nav__link">
<span class="md-ellipsis">
Named arguments
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#positional-arguments" class="md-nav__link">
<span class="md-ellipsis">
Positional arguments
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#snapshot-management" class="md-nav__link">
<span class="md-ellipsis">
Snapshot management
</span>
</a>
<nav class="md-nav" aria-label="Snapshot management">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#rollback_to_snapshot" class="md-nav__link">
<span class="md-ellipsis">
rollback_to_snapshot
</span>
</a>
<nav class="md-nav" aria-label="rollback_to_snapshot">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_1" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#example" class="md-nav__link">
<span class="md-ellipsis">
Example
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#rollback_to_timestamp" class="md-nav__link">
<span class="md-ellipsis">
rollback_to_timestamp
</span>
</a>
<nav class="md-nav" aria-label="rollback_to_timestamp">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_2" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_1" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#example_1" class="md-nav__link">
<span class="md-ellipsis">
Example
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#set_current_snapshot" class="md-nav__link">
<span class="md-ellipsis">
set_current_snapshot
</span>
</a>
<nav class="md-nav" aria-label="set_current_snapshot">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_3" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_2" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#example_2" class="md-nav__link">
<span class="md-ellipsis">
Example
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#cherrypick_snapshot" class="md-nav__link">
<span class="md-ellipsis">
cherrypick_snapshot
</span>
</a>
<nav class="md-nav" aria-label="cherrypick_snapshot">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_4" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_3" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#publish_changes" class="md-nav__link">
<span class="md-ellipsis">
publish_changes
</span>
</a>
<nav class="md-nav" aria-label="publish_changes">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_5" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_4" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_1" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#fast_forward" class="md-nav__link">
<span class="md-ellipsis">
fast_forward
</span>
</a>
<nav class="md-nav" aria-label="fast_forward">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_6" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_5" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_2" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#metadata-management" class="md-nav__link">
<span class="md-ellipsis">
Metadata management
</span>
</a>
<nav class="md-nav" aria-label="Metadata management">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#expire_snapshots" class="md-nav__link">
<span class="md-ellipsis">
expire_snapshots
</span>
</a>
<nav class="md-nav" aria-label="expire_snapshots">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_7" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_6" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_3" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#remove_orphan_files" class="md-nav__link">
<span class="md-ellipsis">
remove_orphan_files
</span>
</a>
<nav class="md-nav" aria-label="remove_orphan_files">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_8" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_7" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_4" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#rewrite_data_files" class="md-nav__link">
<span class="md-ellipsis">
rewrite_data_files
</span>
</a>
<nav class="md-nav" aria-label="rewrite_data_files">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_9" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#options" class="md-nav__link">
<span class="md-ellipsis">
Options
</span>
</a>
<nav class="md-nav" aria-label="Options">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#general-options" class="md-nav__link">
<span class="md-ellipsis">
General Options
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#options-for-sort-strategy" class="md-nav__link">
<span class="md-ellipsis">
Options for sort strategy
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#options-for-sort-strategy-with-zorder-sort_order" class="md-nav__link">
<span class="md-ellipsis">
Options for sort strategy with zorder sort_order
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#output_8" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_5" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#rewrite_manifests" class="md-nav__link">
<span class="md-ellipsis">
rewrite_manifests
</span>
</a>
<nav class="md-nav" aria-label="rewrite_manifests">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_10" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_9" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_6" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#rewrite_position_delete_files" class="md-nav__link">
<span class="md-ellipsis">
rewrite_position_delete_files
</span>
</a>
<nav class="md-nav" aria-label="rewrite_position_delete_files">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_11" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#options_1" class="md-nav__link">
<span class="md-ellipsis">
Options
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_10" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_7" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#table-migration" class="md-nav__link">
<span class="md-ellipsis">
Table migration
</span>
</a>
<nav class="md-nav" aria-label="Table migration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#snapshot" class="md-nav__link">
<span class="md-ellipsis">
snapshot
</span>
</a>
<nav class="md-nav" aria-label="snapshot">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_12" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_11" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_8" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#migrate" class="md-nav__link">
<span class="md-ellipsis">
migrate
</span>
</a>
<nav class="md-nav" aria-label="migrate">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_13" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_12" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_9" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#add_files" class="md-nav__link">
<span class="md-ellipsis">
add_files
</span>
</a>
<nav class="md-nav" aria-label="add_files">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_14" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_13" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_10" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#register_table" class="md-nav__link">
<span class="md-ellipsis">
register_table
</span>
</a>
<nav class="md-nav" aria-label="register_table">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_15" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_14" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_11" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#metadata-information" class="md-nav__link">
<span class="md-ellipsis">
Metadata information
</span>
</a>
<nav class="md-nav" aria-label="Metadata information">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#ancestors_of" class="md-nav__link">
<span class="md-ellipsis">
ancestors_of
</span>
</a>
<nav class="md-nav" aria-label="ancestors_of">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_16" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_15" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_12" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#change-data-capture" class="md-nav__link">
<span class="md-ellipsis">
Change Data Capture
</span>
</a>
<nav class="md-nav" aria-label="Change Data Capture">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#create_changelog_view" class="md-nav__link">
<span class="md-ellipsis">
create_changelog_view
</span>
</a>
<nav class="md-nav" aria-label="create_changelog_view">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#usage_17" class="md-nav__link">
<span class="md-ellipsis">
Usage
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#output_16" class="md-nav__link">
<span class="md-ellipsis">
Output
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#examples_13" class="md-nav__link">
<span class="md-ellipsis">
Examples
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#carry-over-rows" class="md-nav__link">
<span class="md-ellipsis">
Carry-over Rows
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#prepost-update-images" class="md-nav__link">
<span class="md-ellipsis">
Pre/Post Update Images
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-->
<h1 id="spark-procedures">Spark Procedures<a class="headerlink" href="#spark-procedures" title="Permanent link">🔗</a></h1>
<p>To use Iceberg in Spark, first configure <a href="../spark-configuration.md">Spark catalogs</a>. Stored procedures are only available when using <a href="../spark-configuration.md#sql-extensions">Iceberg SQL extensions</a> in Spark 3.</p>
<h2 id="usage">Usage<a class="headerlink" href="#usage" title="Permanent link">🔗</a></h2>
<p>Procedures can be used from any configured Iceberg catalog with <code>CALL</code>. All procedures are in the namespace <code>system</code>.</p>
<p><code>CALL</code> supports passing arguments by name (recommended) or by position. Mixing position and named arguments is not supported.</p>
<h3 id="named-arguments">Named arguments<a class="headerlink" href="#named-arguments" title="Permanent link">🔗</a></h3>
<p>All procedure arguments are named. When passing arguments by name, arguments can be in any order and any optional argument can be omitted.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">procedure_name</span><span class="p">(</span><span class="n">arg_name_2</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="n">arg_2</span><span class="p">,</span><span class="w"> </span><span class="n">arg_name_1</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="n">arg_1</span><span class="p">);</span>
</code></pre></div>
<h3 id="positional-arguments">Positional arguments<a class="headerlink" href="#positional-arguments" title="Permanent link">🔗</a></h3>
<p>When passing arguments by position, only the ending arguments may be omitted if they are optional.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">procedure_name</span><span class="p">(</span><span class="n">arg_1</span><span class="p">,</span><span class="w"> </span><span class="n">arg_2</span><span class="p">,</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="n">arg_n</span><span class="p">);</span>
</code></pre></div>
<h2 id="snapshot-management">Snapshot management<a class="headerlink" href="#snapshot-management" title="Permanent link">🔗</a></h2>
<h3 id="rollback_to_snapshot"><code>rollback_to_snapshot</code><a class="headerlink" href="#rollback_to_snapshot" title="Permanent link">🔗</a></h3>
<p>Roll back a table to a specific snapshot ID.</p>
<p>To roll back to a specific time, use <a href="#rollback_to_timestamp"><code>rollback_to_timestamp</code></a>.</p>
<div class="admonition info">
<p class="admonition-title">Info</p>
<p>This procedure invalidates all cached Spark plans that reference the affected table.</p>
</div>
<h4 id="usage_1">Usage<a class="headerlink" href="#usage_1" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the table to update</td>
</tr>
<tr>
<td><code>snapshot_id</code></td>
<td>✔️</td>
<td>long</td>
<td>Snapshot ID to rollback to</td>
</tr>
</tbody>
</table>
<h4 id="output">Output<a class="headerlink" href="#output" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>previous_snapshot_id</code></td>
<td>long</td>
<td>The current snapshot ID before the rollback</td>
</tr>
<tr>
<td><code>current_snapshot_id</code></td>
<td>long</td>
<td>The new current snapshot ID</td>
</tr>
</tbody>
</table>
<h4 id="example">Example<a class="headerlink" href="#example" title="Permanent link">🔗</a></h4>
<p>Roll back table <code>db.sample</code> to snapshot ID <code>1</code>:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">rollback_to_snapshot</span><span class="p">(</span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
</code></pre></div>
<h3 id="rollback_to_timestamp"><code>rollback_to_timestamp</code><a class="headerlink" href="#rollback_to_timestamp" title="Permanent link">🔗</a></h3>
<p>Roll back a table to the snapshot that was current at some time.</p>
<div class="admonition info">
<p class="admonition-title">Info</p>
<p>This procedure invalidates all cached Spark plans that reference the affected table.</p>
</div>
<h4 id="usage_2">Usage<a class="headerlink" href="#usage_2" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the table to update</td>
</tr>
<tr>
<td><code>timestamp</code></td>
<td>✔️</td>
<td>timestamp</td>
<td>A timestamp to rollback to</td>
</tr>
</tbody>
</table>
<h4 id="output_1">Output<a class="headerlink" href="#output_1" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>previous_snapshot_id</code></td>
<td>long</td>
<td>The current snapshot ID before the rollback</td>
</tr>
<tr>
<td><code>current_snapshot_id</code></td>
<td>long</td>
<td>The new current snapshot ID</td>
</tr>
</tbody>
</table>
<h4 id="example_1">Example<a class="headerlink" href="#example_1" title="Permanent link">🔗</a></h4>
<p>Roll back <code>db.sample</code> to a specific day and time.
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">rollback_to_timestamp</span><span class="p">(</span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">&#39;2021-06-30 00:00:00.000&#39;</span><span class="p">);</span>
</code></pre></div></p>
<h3 id="set_current_snapshot"><code>set_current_snapshot</code><a class="headerlink" href="#set_current_snapshot" title="Permanent link">🔗</a></h3>
<p>Sets the current snapshot ID for a table.</p>
<p>Unlike rollback, the snapshot is not required to be an ancestor of the current table state.</p>
<div class="admonition info">
<p class="admonition-title">Info</p>
<p>This procedure invalidates all cached Spark plans that reference the affected table.</p>
</div>
<h4 id="usage_3">Usage<a class="headerlink" href="#usage_3" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the table to update</td>
</tr>
<tr>
<td><code>snapshot_id</code></td>
<td></td>
<td>long</td>
<td>Snapshot ID to set as current</td>
</tr>
<tr>
<td><code>ref</code></td>
<td></td>
<td>string</td>
<td>Snapshot Reference (branch or tag) to set as current</td>
</tr>
</tbody>
</table>
<p>Either <code>snapshot_id</code> or <code>ref</code> must be provided but not both.</p>
<h4 id="output_2">Output<a class="headerlink" href="#output_2" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>previous_snapshot_id</code></td>
<td>long</td>
<td>The current snapshot ID before the rollback</td>
</tr>
<tr>
<td><code>current_snapshot_id</code></td>
<td>long</td>
<td>The new current snapshot ID</td>
</tr>
</tbody>
</table>
<h4 id="example_2">Example<a class="headerlink" href="#example_2" title="Permanent link">🔗</a></h4>
<p>Set the current snapshot for <code>db.sample</code> to 1:
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">set_current_snapshot</span><span class="p">(</span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
</code></pre></div></p>
<p>Set the current snapshot for <code>db.sample</code> to tag <code>s1</code>:
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">set_current_snapshot</span><span class="p">(</span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="k">ref</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;s1&#39;</span><span class="p">);</span>
</code></pre></div></p>
<h3 id="cherrypick_snapshot"><code>cherrypick_snapshot</code><a class="headerlink" href="#cherrypick_snapshot" title="Permanent link">🔗</a></h3>
<p>Cherry-picks changes from a snapshot into the current table state.</p>
<p>Cherry-picking creates a new snapshot from an existing snapshot without altering or removing the original.</p>
<p>Only append and dynamic overwrite snapshots can be cherry-picked.</p>
<div class="admonition info">
<p class="admonition-title">Info</p>
<p>This procedure invalidates all cached Spark plans that reference the affected table.</p>
</div>
<h4 id="usage_4">Usage<a class="headerlink" href="#usage_4" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the table to update</td>
</tr>
<tr>
<td><code>snapshot_id</code></td>
<td>✔️</td>
<td>long</td>
<td>The snapshot ID to cherry-pick</td>
</tr>
</tbody>
</table>
<h4 id="output_3">Output<a class="headerlink" href="#output_3" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>source_snapshot_id</code></td>
<td>long</td>
<td>The table's current snapshot before the cherry-pick</td>
</tr>
<tr>
<td><code>current_snapshot_id</code></td>
<td>long</td>
<td>The snapshot ID created by applying the cherry-pick</td>
</tr>
</tbody>
</table>
<h4 id="examples">Examples<a class="headerlink" href="#examples" title="Permanent link">🔗</a></h4>
<p>Cherry-pick snapshot 1
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">cherrypick_snapshot</span><span class="p">(</span><span class="s1">&#39;my_table&#39;</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
</code></pre></div></p>
<p>Cherry-pick snapshot 1 with named args
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">cherrypick_snapshot</span><span class="p">(</span><span class="n">snapshot_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;my_table&#39;</span><span class="w"> </span><span class="p">);</span>
</code></pre></div></p>
<h3 id="publish_changes"><code>publish_changes</code><a class="headerlink" href="#publish_changes" title="Permanent link">🔗</a></h3>
<p>Publish changes from a staged WAP ID into the current table state.</p>
<p>publish_changes creates a new snapshot from an existing snapshot without altering or removing the original.</p>
<p>Only append and dynamic overwrite snapshots can be successfully published.</p>
<div class="admonition info">
<p class="admonition-title">Info</p>
<p>This procedure invalidates all cached Spark plans that reference the affected table.</p>
</div>
<h4 id="usage_5">Usage<a class="headerlink" href="#usage_5" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the table to update</td>
</tr>
<tr>
<td><code>wap_id</code></td>
<td>✔️</td>
<td>long</td>
<td>The wap_id to be pusblished from stage to prod</td>
</tr>
</tbody>
</table>
<h4 id="output_4">Output<a class="headerlink" href="#output_4" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>source_snapshot_id</code></td>
<td>long</td>
<td>The table's current snapshot before publishing the change</td>
</tr>
<tr>
<td><code>current_snapshot_id</code></td>
<td>long</td>
<td>The snapshot ID created by applying the change</td>
</tr>
</tbody>
</table>
<h4 id="examples_1">Examples<a class="headerlink" href="#examples_1" title="Permanent link">🔗</a></h4>
<p>publish_changes with WAP ID 'wap_id_1'
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">publish_changes</span><span class="p">(</span><span class="s1">&#39;my_table&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;wap_id_1&#39;</span><span class="p">);</span>
</code></pre></div></p>
<p>publish_changes with named args
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">publish_changes</span><span class="p">(</span><span class="n">wap_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;wap_id_2&#39;</span><span class="p">,</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;my_table&#39;</span><span class="p">);</span>
</code></pre></div></p>
<h3 id="fast_forward"><code>fast_forward</code><a class="headerlink" href="#fast_forward" title="Permanent link">🔗</a></h3>
<p>Fast-forward the current snapshot of one branch to the latest snapshot of another.</p>
<h4 id="usage_6">Usage<a class="headerlink" href="#usage_6" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the table to update</td>
</tr>
<tr>
<td><code>branch</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the branch to fast-forward</td>
</tr>
<tr>
<td><code>to</code></td>
<td>✔️</td>
<td>string</td>
<td></td>
</tr>
</tbody>
</table>
<h4 id="output_5">Output<a class="headerlink" href="#output_5" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>branch_updated</code></td>
<td>string</td>
<td>Name of the branch that has been fast-forwarded</td>
</tr>
<tr>
<td><code>previous_ref</code></td>
<td>long</td>
<td>The snapshot ID before applying fast-forward</td>
</tr>
<tr>
<td><code>updated_ref</code></td>
<td>long</td>
<td>The current snapshot ID after applying fast-forward</td>
</tr>
</tbody>
</table>
<h4 id="examples_2">Examples<a class="headerlink" href="#examples_2" title="Permanent link">🔗</a></h4>
<p>Fast-forward the main branch to the head of <code>audit-branch</code>
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">fast_forward</span><span class="p">(</span><span class="s1">&#39;my_table&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;main&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;audit-branch&#39;</span><span class="p">);</span>
</code></pre></div></p>
<h2 id="metadata-management">Metadata management<a class="headerlink" href="#metadata-management" title="Permanent link">🔗</a></h2>
<p>Many <a href="../maintenance/">maintenance actions</a> can be performed using Iceberg stored procedures.</p>
<h3 id="expire_snapshots"><code>expire_snapshots</code><a class="headerlink" href="#expire_snapshots" title="Permanent link">🔗</a></h3>
<p>Each write/update/delete/upsert/compaction in Iceberg produces a new snapshot while keeping the old data and metadata
around for snapshot isolation and time travel. The <code>expire_snapshots</code> procedure can be used to remove older snapshots
and their files which are no longer needed.</p>
<p>This procedure will remove old snapshots and data files which are uniquely required by those old snapshots. This means
the <code>expire_snapshots</code> procedure will never remove files which are still required by a non-expired snapshot.</p>
<h4 id="usage_7">Usage<a class="headerlink" href="#usage_7" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the table to update</td>
</tr>
<tr>
<td><code>older_than</code></td>
<td></td>
<td>timestamp</td>
<td>Timestamp before which snapshots will be removed (Default: 5 days ago)</td>
</tr>
<tr>
<td><code>retain_last</code></td>
<td></td>
<td>int</td>
<td>Number of ancestor snapshots to preserve regardless of <code>older_than</code> (defaults to 1)</td>
</tr>
<tr>
<td><code>max_concurrent_deletes</code></td>
<td></td>
<td>int</td>
<td>Size of the thread pool used for delete file actions (by default, no thread pool is used)</td>
</tr>
<tr>
<td><code>stream_results</code></td>
<td></td>
<td>boolean</td>
<td>When true, deletion files will be sent to Spark driver by RDD partition (by default, all the files will be sent to Spark driver). This option is recommended to set to <code>true</code> to prevent Spark driver OOM from large file size</td>
</tr>
<tr>
<td><code>snapshot_ids</code></td>
<td></td>
<td>array of long</td>
<td>Array of snapshot IDs to expire.</td>
</tr>
</tbody>
</table>
<p>If <code>older_than</code> and <code>retain_last</code> are omitted, the table's <a href="../configuration.md#table-behavior-properties">expiration properties</a> will be used.
Snapshots that are still referenced by branches or tags won't be removed. By default, branches and tags never expire, but their retention policy can be changed with the table property <code>history.expire.max-ref-age-ms</code>. The <code>main</code> branch never expires.</p>
<h4 id="output_6">Output<a class="headerlink" href="#output_6" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>deleted_data_files_count</code></td>
<td>long</td>
<td>Number of data files deleted by this operation</td>
</tr>
<tr>
<td><code>deleted_position_delete_files_count</code></td>
<td>long</td>
<td>Number of position delete files deleted by this operation</td>
</tr>
<tr>
<td><code>deleted_equality_delete_files_count</code></td>
<td>long</td>
<td>Number of equality delete files deleted by this operation</td>
</tr>
<tr>
<td><code>deleted_manifest_files_count</code></td>
<td>long</td>
<td>Number of manifest files deleted by this operation</td>
</tr>
<tr>
<td><code>deleted_manifest_lists_count</code></td>
<td>long</td>
<td>Number of manifest List files deleted by this operation</td>
</tr>
</tbody>
</table>
<h4 id="examples_3">Examples<a class="headerlink" href="#examples_3" title="Permanent link">🔗</a></h4>
<p>Remove snapshots older than specific day and time, but retain the last 100 snapshots:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="k">CALL</span><span class="w"> </span><span class="n">hive_prod</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">expire_snapshots</span><span class="p">(</span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="k">TIMESTAMP</span><span class="w"> </span><span class="s1">&#39;2021-06-30 00:00:00.000&#39;</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">);</span>
</code></pre></div>
<p>Remove snapshots with snapshot ID <code>123</code> (note that this snapshot ID should not be the current snapshot):</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="k">CALL</span><span class="w"> </span><span class="n">hive_prod</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">expire_snapshots</span><span class="p">(</span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">snapshot_ids</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="nb">ARRAY</span><span class="p">(</span><span class="mi">123</span><span class="p">));</span>
</code></pre></div>
<h3 id="remove_orphan_files"><code>remove_orphan_files</code><a class="headerlink" href="#remove_orphan_files" title="Permanent link">🔗</a></h3>
<p>Used to remove files which are not referenced in any metadata files of an Iceberg table and can thus be considered "orphaned".</p>
<h4 id="usage_8">Usage<a class="headerlink" href="#usage_8" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the table to clean</td>
</tr>
<tr>
<td><code>older_than</code></td>
<td></td>
<td>timestamp</td>
<td>Remove orphan files created before this timestamp (Defaults to 3 days ago)</td>
</tr>
<tr>
<td><code>location</code></td>
<td></td>
<td>string</td>
<td>Directory to look for files in (defaults to the table's location)</td>
</tr>
<tr>
<td><code>dry_run</code></td>
<td></td>
<td>boolean</td>
<td>When true, don't actually remove files (defaults to false)</td>
</tr>
<tr>
<td><code>max_concurrent_deletes</code></td>
<td></td>
<td>int</td>
<td>Size of the thread pool used for delete file actions (by default, no thread pool is used)</td>
</tr>
</tbody>
</table>
<h4 id="output_7">Output<a class="headerlink" href="#output_7" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>orphan_file_location</code></td>
<td>String</td>
<td>The path to each file determined to be an orphan by this command</td>
</tr>
</tbody>
</table>
<h4 id="examples_4">Examples<a class="headerlink" href="#examples_4" title="Permanent link">🔗</a></h4>
<p>List all the files that are candidates for removal by performing a dry run of the <code>remove_orphan_files</code> command on this table without actually removing them:
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">remove_orphan_files</span><span class="p">(</span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">dry_run</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">true</span><span class="p">);</span>
</code></pre></div></p>
<p>Remove any files in the <code>tablelocation/data</code> folder which are not known to the table <code>db.sample</code>.
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">remove_orphan_files</span><span class="p">(</span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="k">location</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;tablelocation/data&#39;</span><span class="p">);</span>
</code></pre></div></p>
<h3 id="rewrite_data_files"><code>rewrite_data_files</code><a class="headerlink" href="#rewrite_data_files" title="Permanent link">🔗</a></h3>
<p>Iceberg tracks each data file in a table. More data files leads to more metadata stored in manifest files, and small data files causes an unnecessary amount of metadata and less efficient queries from file open costs.</p>
<p>Iceberg can compact data files in parallel using Spark with the <code>rewriteDataFiles</code> action. This will combine small files into larger files to reduce metadata overhead and runtime file open cost.</p>
<h4 id="usage_9">Usage<a class="headerlink" href="#usage_9" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the table to update</td>
</tr>
<tr>
<td><code>strategy</code></td>
<td></td>
<td>string</td>
<td>Name of the strategy - binpack or sort. Defaults to binpack strategy</td>
</tr>
<tr>
<td><code>sort_order</code></td>
<td></td>
<td>string</td>
<td>For Zorder use a comma separated list of columns within zorder(). Example: zorder(c1,c2,c3). <br/>Else, Comma separated sort orders in the format (ColumnName SortDirection NullOrder). <br/>Where SortDirection can be ASC or DESC. NullOrder can be NULLS FIRST or NULLS LAST. <br/>Defaults to the table's sort order</td>
</tr>
<tr>
<td><code>options</code></td>
<td></td>
<td>map<string, string></td>
<td>Options to be used for actions</td>
</tr>
<tr>
<td><code>where</code></td>
<td></td>
<td>string</td>
<td>predicate as a string used for filtering the files. Note that all files that may contain data matching the filter will be selected for rewriting</td>
</tr>
</tbody>
</table>
<h4 id="options">Options<a class="headerlink" href="#options" title="Permanent link">🔗</a></h4>
<h5 id="general-options">General Options<a class="headerlink" href="#general-options" title="Permanent link">🔗</a></h5>
<table>
<thead>
<tr>
<th>Name</th>
<th>Default Value</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>max-concurrent-file-group-rewrites</code></td>
<td>5</td>
<td>Maximum number of file groups to be simultaneously rewritten</td>
</tr>
<tr>
<td><code>partial-progress.enabled</code></td>
<td>false</td>
<td>Enable committing groups of files prior to the entire rewrite completing</td>
</tr>
<tr>
<td><code>partial-progress.max-commits</code></td>
<td>10</td>
<td>Maximum amount of commits that this rewrite is allowed to produce if partial progress is enabled</td>
</tr>
<tr>
<td><code>use-starting-sequence-number</code></td>
<td>true</td>
<td>Use the sequence number of the snapshot at compaction start time instead of that of the newly produced snapshot</td>
</tr>
<tr>
<td><code>rewrite-job-order</code></td>
<td>none</td>
<td>Force the rewrite job order based on the value. <ul><li>If rewrite-job-order=bytes-asc, then rewrite the smallest job groups first.</li><li>If rewrite-job-order=bytes-desc, then rewrite the largest job groups first.</li><li>If rewrite-job-order=files-asc, then rewrite the job groups with the least files first.</li><li>If rewrite-job-order=files-desc, then rewrite the job groups with the most files first.</li><li>If rewrite-job-order=none, then rewrite job groups in the order they were planned (no specific ordering).</li></ul></td>
</tr>
<tr>
<td><code>target-file-size-bytes</code></td>
<td>536870912 (512 MB, default value of <code>write.target-file-size-bytes</code> from <a href="../configuration.md#write-properties">table properties</a>)</td>
<td>Target output file size</td>
</tr>
<tr>
<td><code>min-file-size-bytes</code></td>
<td>75% of target file size</td>
<td>Files under this threshold will be considered for rewriting regardless of any other criteria</td>
</tr>
<tr>
<td><code>max-file-size-bytes</code></td>
<td>180% of target file size</td>
<td>Files with sizes above this threshold will be considered for rewriting regardless of any other criteria</td>
</tr>
<tr>
<td><code>min-input-files</code></td>
<td>5</td>
<td>Any file group exceeding this number of files will be rewritten regardless of other criteria</td>
</tr>
<tr>
<td><code>rewrite-all</code></td>
<td>false</td>
<td>Force rewriting of all provided files overriding other options</td>
</tr>
<tr>
<td><code>max-file-group-size-bytes</code></td>
<td>107374182400 (100GB)</td>
<td>Largest amount of data that should be rewritten in a single file group. The entire rewrite operation is broken down into pieces based on partitioning and within partitions based on size into file-groups. This helps with breaking down the rewriting of very large partitions which may not be rewritable otherwise due to the resource constraints of the cluster.</td>
</tr>
<tr>
<td><code>delete-file-threshold</code></td>
<td>2147483647</td>
<td>Minimum number of deletes that needs to be associated with a data file for it to be considered for rewriting</td>
</tr>
</tbody>
</table>
<h5 id="options-for-sort-strategy">Options for sort strategy<a class="headerlink" href="#options-for-sort-strategy" title="Permanent link">🔗</a></h5>
<table>
<thead>
<tr>
<th>Name</th>
<th>Default Value</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>compression-factor</code></td>
<td>1.0</td>
<td>The number of shuffle partitions and consequently the number of output files created by the Spark sort is based on the size of the input data files used in this file rewriter. Due to compression, the disk file sizes may not accurately represent the size of files in the output. This parameter lets the user adjust the file size used for estimating actual output data size. A factor greater than 1.0 would generate more files than we would expect based on the on-disk file size. A value less than 1.0 would create fewer files than we would expect based on the on-disk size.</td>
</tr>
<tr>
<td><code>shuffle-partitions-per-file</code></td>
<td>1</td>
<td>Number of shuffle partitions to use for each output file. Iceberg will use a custom coalesce operation to stitch these sorted partitions back together into a single sorted file.</td>
</tr>
</tbody>
</table>
<h5 id="options-for-sort-strategy-with-zorder-sort_order">Options for sort strategy with zorder sort_order<a class="headerlink" href="#options-for-sort-strategy-with-zorder-sort_order" title="Permanent link">🔗</a></h5>
<table>
<thead>
<tr>
<th>Name</th>
<th>Default Value</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>var-length-contribution</code></td>
<td>8</td>
<td>Number of bytes considered from an input column of a type with variable length (String, Binary)</td>
</tr>
<tr>
<td><code>max-output-size</code></td>
<td>2147483647</td>
<td>Amount of bytes interleaved in the ZOrder algorithm</td>
</tr>
</tbody>
</table>
<h4 id="output_8">Output<a class="headerlink" href="#output_8" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rewritten_data_files_count</code></td>
<td>int</td>
<td>Number of data which were re-written by this command</td>
</tr>
<tr>
<td><code>added_data_files_count</code></td>
<td>int</td>
<td>Number of new data files which were written by this command</td>
</tr>
<tr>
<td><code>rewritten_bytes_count</code></td>
<td>long</td>
<td>Number of bytes which were written by this command</td>
</tr>
<tr>
<td><code>failed_data_files_count</code></td>
<td>int</td>
<td>Number of data files that failed to be rewritten when <code>partial-progress.enabled</code> is true</td>
</tr>
</tbody>
</table>
<h4 id="examples_5">Examples<a class="headerlink" href="#examples_5" title="Permanent link">🔗</a></h4>
<p>Rewrite the data files in table <code>db.sample</code> using the default rewrite algorithm of bin-packing to combine small files
and also split large files according to the default write size of the table.
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">rewrite_data_files</span><span class="p">(</span><span class="s1">&#39;db.sample&#39;</span><span class="p">);</span>
</code></pre></div></p>
<p>Rewrite the data files in table <code>db.sample</code> by sorting all the data on id and name
using the same defaults as bin-pack to determine which files to rewrite.
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">rewrite_data_files</span><span class="p">(</span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">strategy</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;sort&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">sort_order</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;id DESC NULLS LAST,name ASC NULLS FIRST&#39;</span><span class="p">);</span>
</code></pre></div></p>
<p>Rewrite the data files in table <code>db.sample</code> by zOrdering on column c1 and c2.
Using the same defaults as bin-pack to determine which files to rewrite.
<div class="highlight"><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">rewrite_data_files</span><span class="p">(</span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">strategy</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;sort&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">sort_order</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;zorder(c1,c2)&#39;</span><span class="p">);</span>
</code></pre></div></p>
<p>Rewrite the data files in table <code>db.sample</code> using bin-pack strategy in any partition where more than 2 or more files need to be rewritten.
<div class="highlight"><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">rewrite_data_files</span><span class="p">(</span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="k">options</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="s1">&#39;min-input-files&#39;</span><span class="p">,</span><span class="s1">&#39;2&#39;</span><span class="p">));</span>
</code></pre></div></p>
<p>Rewrite the data files in table <code>db.sample</code> and select the files that may contain data matching the filter (id = 3 and name = "foo") to be rewritten.
<div class="highlight"><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">rewrite_data_files</span><span class="p">(</span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;id = 3 and name = &quot;foo&quot;&#39;</span><span class="p">);</span>
</code></pre></div></p>
<h3 id="rewrite_manifests"><code>rewrite_manifests</code><a class="headerlink" href="#rewrite_manifests" title="Permanent link">🔗</a></h3>
<p>Rewrite manifests for a table to optimize scan planning.</p>
<p>Data files in manifests are sorted by fields in the partition spec. This procedure runs in parallel using a Spark job.</p>
<div class="admonition info">
<p class="admonition-title">Info</p>
<p>This procedure invalidates all cached Spark plans that reference the affected table.</p>
</div>
<h4 id="usage_10">Usage<a class="headerlink" href="#usage_10" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the table to update</td>
</tr>
<tr>
<td><code>use_caching</code></td>
<td></td>
<td>boolean</td>
<td>Use Spark caching during operation (defaults to true)</td>
</tr>
<tr>
<td><code>spec_id</code></td>
<td></td>
<td>int</td>
<td>Spec id of the manifests to rewrite (defaults to current spec id)</td>
</tr>
</tbody>
</table>
<h4 id="output_9">Output<a class="headerlink" href="#output_9" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rewritten_manifests_count</code></td>
<td>int</td>
<td>Number of manifests which were re-written by this command</td>
</tr>
<tr>
<td><code>added_mainfests_count</code></td>
<td>int</td>
<td>Number of new manifest files which were written by this command</td>
</tr>
</tbody>
</table>
<h4 id="examples_6">Examples<a class="headerlink" href="#examples_6" title="Permanent link">🔗</a></h4>
<p>Rewrite the manifests in table <code>db.sample</code> and align manifest files with table partitioning.
<div class="highlight"><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">rewrite_manifests</span><span class="p">(</span><span class="s1">&#39;db.sample&#39;</span><span class="p">);</span>
</code></pre></div></p>
<p>Rewrite the manifests in table <code>db.sample</code> and disable the use of Spark caching. This could be done to avoid memory issues on executors.
<div class="highlight"><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">rewrite_manifests</span><span class="p">(</span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="k">false</span><span class="p">);</span>
</code></pre></div></p>
<h3 id="rewrite_position_delete_files"><code>rewrite_position_delete_files</code><a class="headerlink" href="#rewrite_position_delete_files" title="Permanent link">🔗</a></h3>
<p>Iceberg can rewrite position delete files, which serves two purposes:</p>
<ul>
<li>Minor Compaction: Compact small position delete files into larger ones. This reduces the size of metadata stored in manifest files and overhead of opening small delete files.</li>
<li>Remove Dangling Deletes: Filter out position delete records that refer to data files that are no longer live. After rewrite_data_files, position delete records pointing to the rewritten data files are not always marked for removal, and can remain tracked by the table's live snapshot metadata. This is known as the 'dangling delete' problem.</li>
</ul>
<h4 id="usage_11">Usage<a class="headerlink" href="#usage_11" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the table to update</td>
</tr>
<tr>
<td><code>options</code></td>
<td></td>
<td>map<string, string></td>
<td>Options to be used for procedure</td>
</tr>
</tbody>
</table>
<p>Dangling deletes are always filtered out during rewriting.</p>
<h4 id="options_1">Options<a class="headerlink" href="#options_1" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Name</th>
<th>Default Value</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>max-concurrent-file-group-rewrites</code></td>
<td>5</td>
<td>Maximum number of file groups to be simultaneously rewritten</td>
</tr>
<tr>
<td><code>partial-progress.enabled</code></td>
<td>false</td>
<td>Enable committing groups of files prior to the entire rewrite completing</td>
</tr>
<tr>
<td><code>partial-progress.max-commits</code></td>
<td>10</td>
<td>Maximum amount of commits that this rewrite is allowed to produce if partial progress is enabled</td>
</tr>
<tr>
<td><code>rewrite-job-order</code></td>
<td>none</td>
<td>Force the rewrite job order based on the value. <ul><li>If rewrite-job-order=bytes-asc, then rewrite the smallest job groups first.</li><li>If rewrite-job-order=bytes-desc, then rewrite the largest job groups first.</li><li>If rewrite-job-order=files-asc, then rewrite the job groups with the least files first.</li><li>If rewrite-job-order=files-desc, then rewrite the job groups with the most files first.</li><li>If rewrite-job-order=none, then rewrite job groups in the order they were planned (no specific ordering).</li></ul></td>
</tr>
<tr>
<td><code>target-file-size-bytes</code></td>
<td>67108864 (64MB, default value of <code>write.delete.target-file-size-bytes</code> from <a href="../configuration.md#write-properties">table properties</a>)</td>
<td>Target output file size</td>
</tr>
<tr>
<td><code>min-file-size-bytes</code></td>
<td>75% of target file size</td>
<td>Files under this threshold will be considered for rewriting regardless of any other criteria</td>
</tr>
<tr>
<td><code>max-file-size-bytes</code></td>
<td>180% of target file size</td>
<td>Files with sizes above this threshold will be considered for rewriting regardless of any other criteria</td>
</tr>
<tr>
<td><code>min-input-files</code></td>
<td>5</td>
<td>Any file group exceeding this number of files will be rewritten regardless of other criteria</td>
</tr>
<tr>
<td><code>rewrite-all</code></td>
<td>false</td>
<td>Force rewriting of all provided files overriding other options</td>
</tr>
<tr>
<td><code>max-file-group-size-bytes</code></td>
<td>107374182400 (100GB)</td>
<td>Largest amount of data that should be rewritten in a single file group. The entire rewrite operation is broken down into pieces based on partitioning and within partitions based on size into file-groups. This helps with breaking down the rewriting of very large partitions which may not be rewritable otherwise due to the resource constraints of the cluster.</td>
</tr>
</tbody>
</table>
<h4 id="output_10">Output<a class="headerlink" href="#output_10" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>rewritten_delete_files_count</code></td>
<td>int</td>
<td>Number of delete files which were removed by this command</td>
</tr>
<tr>
<td><code>added_delete_files_count</code></td>
<td>int</td>
<td>Number of delete files which were added by this command</td>
</tr>
<tr>
<td><code>rewritten_bytes_count</code></td>
<td>long</td>
<td>Count of bytes across delete files which were removed by this command</td>
</tr>
<tr>
<td><code>added_bytes_count</code></td>
<td>long</td>
<td>Count of bytes across all new delete files which were added by this command</td>
</tr>
</tbody>
</table>
<h4 id="examples_7">Examples<a class="headerlink" href="#examples_7" title="Permanent link">🔗</a></h4>
<p>Rewrite position delete files in table <code>db.sample</code>. This selects position delete files that fit default rewrite criteria, and writes new files of target size <code>target-file-size-bytes</code>. Dangling deletes are removed from rewritten delete files.
<div class="highlight"><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">rewrite_position_delete_files</span><span class="p">(</span><span class="s1">&#39;db.sample&#39;</span><span class="p">);</span>
</code></pre></div></p>
<p>Rewrite all position delete files in table <code>db.sample</code>, writing new files <code>target-file-size-bytes</code>. Dangling deletes are removed from rewritten delete files.
<div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">rewrite_position_delete_files</span><span class="p">(</span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="k">options</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="s1">&#39;rewrite-all&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;true&#39;</span><span class="p">));</span>
</code></pre></div></p>
<p>Rewrite position delete files in table <code>db.sample</code>. This selects position delete files in partitions where 2 or more position delete files need to be rewritten based on size criteria. Dangling deletes are removed from rewritten delete files.
<div class="highlight"><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">rewrite_position_delete_files</span><span class="p">(</span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="k">options</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="s1">&#39;min-input-files&#39;</span><span class="p">,</span><span class="s1">&#39;2&#39;</span><span class="p">));</span>
</code></pre></div></p>
<h2 id="table-migration">Table migration<a class="headerlink" href="#table-migration" title="Permanent link">🔗</a></h2>
<p>The <code>snapshot</code> and <code>migrate</code> procedures help test and migrate existing Hive or Spark tables to Iceberg.</p>
<h3 id="snapshot"><code>snapshot</code><a class="headerlink" href="#snapshot" title="Permanent link">🔗</a></h3>
<p>Create a light-weight temporary copy of a table for testing, without changing the source table.</p>
<p>The newly created table can be changed or written to without affecting the source table, but the snapshot uses the original table's data files.</p>
<p>When inserts or overwrites run on the snapshot, new files are placed in the snapshot table's location rather than the original table location.</p>
<p>When finished testing a snapshot table, clean it up by running <code>DROP TABLE</code>.</p>
<div class="admonition info">
<p class="admonition-title">Info</p>
<p>Because tables created by <code>snapshot</code> are not the sole owners of their data files, they are prohibited from
actions like <code>expire_snapshots</code> which would physically delete data files. Iceberg deletes, which only effect metadata,
are still allowed. In addition, any operations which affect the original data files will disrupt the Snapshot's
integrity. DELETE statements executed against the original Hive table will remove original data files and the
<code>snapshot</code> table will no longer be able to access them.</p>
</div>
<p>See <a href="#migrate"><code>migrate</code></a> to replace an existing table with an Iceberg table.</p>
<h4 id="usage_12">Usage<a class="headerlink" href="#usage_12" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>source_table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the table to snapshot</td>
</tr>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the new Iceberg table to create</td>
</tr>
<tr>
<td><code>location</code></td>
<td></td>
<td>string</td>
<td>Table location for the new table (delegated to the catalog by default)</td>
</tr>
<tr>
<td><code>properties</code></td>
<td></td>
<td>map<string, string></td>
<td>Properties to add to the newly created table</td>
</tr>
</tbody>
</table>
<h4 id="output_11">Output<a class="headerlink" href="#output_11" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>imported_files_count</code></td>
<td>long</td>
<td>Number of files added to the new table</td>
</tr>
</tbody>
</table>
<h4 id="examples_8">Examples<a class="headerlink" href="#examples_8" title="Permanent link">🔗</a></h4>
<p>Make an isolated Iceberg table which references table <code>db.sample</code> named <code>db.snap</code> at the
catalog's default location for <code>db.snap</code>.
<div class="highlight"><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">snapshot</span><span class="p">(</span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;db.snap&#39;</span><span class="p">);</span>
</code></pre></div></p>
<p>Migrate an isolated Iceberg table which references table <code>db.sample</code> named <code>db.snap</code> at
a manually specified location <code>/tmp/temptable/</code>.
<div class="highlight"><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">snapshot</span><span class="p">(</span><span class="s1">&#39;db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;db.snap&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;/tmp/temptable/&#39;</span><span class="p">);</span>
</code></pre></div></p>
<h3 id="migrate"><code>migrate</code><a class="headerlink" href="#migrate" title="Permanent link">🔗</a></h3>
<p>Replace a table with an Iceberg table, loaded with the source's data files.</p>
<p>Table schema, partitioning, properties, and location will be copied from the source table.</p>
<p>Migrate will fail if any table partition uses an unsupported format. Supported formats are Avro, Parquet, and ORC.
Existing data files are added to the Iceberg table's metadata and can be read using a name-to-id mapping created from the original table schema.</p>
<p>To leave the original table intact while testing, use <a href="#snapshot"><code>snapshot</code></a> to create new temporary table that shares source data files and schema.</p>
<p>By default, the original table is retained with the name <code>table_BACKUP_</code>.</p>
<h4 id="usage_13">Usage<a class="headerlink" href="#usage_13" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the table to migrate</td>
</tr>
<tr>
<td><code>properties</code></td>
<td></td>
<td>map<string, string></td>
<td>Properties for the new Iceberg table</td>
</tr>
<tr>
<td><code>drop_backup</code></td>
<td></td>
<td>boolean</td>
<td>When true, the original table will not be retained as backup (defaults to false)</td>
</tr>
<tr>
<td><code>backup_table_name</code></td>
<td></td>
<td>string</td>
<td>Name of the table that will be retained as backup (defaults to <code>table_BACKUP_</code>)</td>
</tr>
</tbody>
</table>
<h4 id="output_12">Output<a class="headerlink" href="#output_12" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>migrated_files_count</code></td>
<td>long</td>
<td>Number of files appended to the Iceberg table</td>
</tr>
</tbody>
</table>
<h4 id="examples_9">Examples<a class="headerlink" href="#examples_9" title="Permanent link">🔗</a></h4>
<p>Migrate the table <code>db.sample</code> in Spark's default catalog to an Iceberg table and add a property 'foo' set to 'bar':</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">migrate</span><span class="p">(</span><span class="s1">&#39;spark_catalog.db.sample&#39;</span><span class="p">,</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="s1">&#39;foo&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;bar&#39;</span><span class="p">));</span>
</code></pre></div>
<p>Migrate <code>db.sample</code> in the current catalog to an Iceberg table without adding any additional properties:
<div class="highlight"><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a><span class="k">CALL</span><span class="w"> </span><span class="k">catalog_name</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">migrate</span><span class="p">(</span><span class="s1">&#39;db.sample&#39;</span><span class="p">);</span>
</code></pre></div></p>
<h3 id="add_files"><code>add_files</code><a class="headerlink" href="#add_files" title="Permanent link">🔗</a></h3>
<p>Attempts to directly add files from a Hive or file based table into a given Iceberg table. Unlike migrate or
snapshot, <code>add_files</code> can import files from a specific partition or partitions and does not create a new Iceberg table.
This command will create metadata for the new files and will not move them. This procedure will not analyze the schema
of the files to determine if they actually match the schema of the Iceberg table. Upon completion, the Iceberg table
will then treat these files as if they are part of the set of files owned by Iceberg. This means any subsequent
<code>expire_snapshot</code> calls will be able to physically delete the added files. This method should not be used if
<code>migrate</code> or <code>snapshot</code> are possible.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Keep in mind the <code>add_files</code> procedure will fetch the Parquet metadata from each file being added just once. If you're using tiered storage, (such as <a href="https://aws.amazon.com/s3/storage-classes/intelligent-tiering/">Amazon S3 Intelligent-Tiering storage class</a>), the underlying, file will be retrieved from the archive, and will remain on a higher tier for a set period of time.</p>
</div>
<h4 id="usage_14">Usage<a class="headerlink" href="#usage_14" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Table which will have files added to</td>
</tr>
<tr>
<td><code>source_table</code></td>
<td>✔️</td>
<td>string</td>
<td>Table where files should come from, paths are also possible in the form of `file_format`.`path`</td>
</tr>
<tr>
<td><code>partition_filter</code></td>
<td></td>
<td>map<string, string></td>
<td>A map of partitions in the source table to import from</td>
</tr>
<tr>
<td><code>check_duplicate_files</code></td>
<td></td>
<td>boolean</td>
<td>Whether to prevent files existing in the table from being added (defaults to true)</td>
</tr>
<tr>
<td><code>parallelism</code></td>
<td></td>
<td>int</td>
<td>number of threads to use for file reading (defaults to 1)</td>
</tr>
</tbody>
</table>
<p>Warning : Schema is not validated, adding files with different schema to the Iceberg table will cause issues.</p>
<p>Warning : Files added by this method can be physically deleted by Iceberg operations</p>
<h4 id="output_13">Output<a class="headerlink" href="#output_13" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>added_files_count</code></td>
<td>long</td>
<td>The number of files added by this command</td>
</tr>
<tr>
<td><code>changed_partition_count</code></td>
<td>long</td>
<td>The number of partitioned changed by this command (if known)</td>
</tr>
</tbody>
</table>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>changed_partition_count will be NULL when table property <code>compatibility.snapshot-id-inheritance.enabled</code> is set to true or if the table format version is &gt; 1.</p>
</div>
<h4 id="examples_10">Examples<a class="headerlink" href="#examples_10" title="Permanent link">🔗</a></h4>
<p>Add the files from table <code>db.src_table</code>, a Hive or Spark table registered in the session Catalog, to Iceberg table
<code>db.tbl</code>. Only add files that exist within partitions where <code>part_col_1</code> is equal to <code>A</code>.
<div class="highlight"><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a><span class="k">CALL</span><span class="w"> </span><span class="n">spark_catalog</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">add_files</span><span class="p">(</span>
<a id="__codelineno-29-2" name="__codelineno-29-2" href="#__codelineno-29-2"></a><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.tbl&#39;</span><span class="p">,</span>
<a id="__codelineno-29-3" name="__codelineno-29-3" href="#__codelineno-29-3"></a><span class="n">source_table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.src_tbl&#39;</span><span class="p">,</span>
<a id="__codelineno-29-4" name="__codelineno-29-4" href="#__codelineno-29-4"></a><span class="n">partition_filter</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="s1">&#39;part_col_1&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;A&#39;</span><span class="p">)</span>
<a id="__codelineno-29-5" name="__codelineno-29-5" href="#__codelineno-29-5"></a><span class="p">);</span>
</code></pre></div></p>
<p>Add files from a <code>parquet</code> file based table at location <code>path/to/table</code> to the Iceberg table <code>db.tbl</code>. Add all
files regardless of what partition they belong to.
<div class="highlight"><pre><span></span><code><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a><span class="k">CALL</span><span class="w"> </span><span class="n">spark_catalog</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">add_files</span><span class="p">(</span>
<a id="__codelineno-30-2" name="__codelineno-30-2" href="#__codelineno-30-2"></a><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.tbl&#39;</span><span class="p">,</span>
<a id="__codelineno-30-3" name="__codelineno-30-3" href="#__codelineno-30-3"></a><span class="w"> </span><span class="n">source_table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;`parquet`.`path/to/table`&#39;</span>
<a id="__codelineno-30-4" name="__codelineno-30-4" href="#__codelineno-30-4"></a><span class="p">);</span>
</code></pre></div></p>
<h3 id="register_table"><code>register_table</code><a class="headerlink" href="#register_table" title="Permanent link">🔗</a></h3>
<p>Creates a catalog entry for a metadata.json file which already exists but does not have a corresponding catalog identifier.</p>
<h4 id="usage_15">Usage<a class="headerlink" href="#usage_15" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Table which is to be registered</td>
</tr>
<tr>
<td><code>metadata_file</code></td>
<td>✔️</td>
<td>string</td>
<td>Metadata file which is to be registered as a new catalog identifier</td>
</tr>
</tbody>
</table>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Having the same metadata.json registered in more than one catalog can lead to missing updates, loss of data, and table corruption.
Only use this procedure when the table is no longer registered in an existing catalog, or you are moving a table between catalogs.</p>
</div>
<h4 id="output_14">Output<a class="headerlink" href="#output_14" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>current_snapshot_id</code></td>
<td>long</td>
<td>The current snapshot ID of the newly registered Iceberg table</td>
</tr>
<tr>
<td><code>total_records_count</code></td>
<td>long</td>
<td>Total records count of the newly registered Iceberg table</td>
</tr>
<tr>
<td><code>total_data_files_count</code></td>
<td>long</td>
<td>Total data files count of the newly registered Iceberg table</td>
</tr>
</tbody>
</table>
<h4 id="examples_11">Examples<a class="headerlink" href="#examples_11" title="Permanent link">🔗</a></h4>
<p>Register a new table as <code>db.tbl</code> to <code>spark_catalog</code> pointing to metadata.json file <code>path/to/metadata/file.json</code>.
<div class="highlight"><pre><span></span><code><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a><span class="k">CALL</span><span class="w"> </span><span class="n">spark_catalog</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">register_table</span><span class="p">(</span>
<a id="__codelineno-31-2" name="__codelineno-31-2" href="#__codelineno-31-2"></a><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.tbl&#39;</span><span class="p">,</span>
<a id="__codelineno-31-3" name="__codelineno-31-3" href="#__codelineno-31-3"></a><span class="w"> </span><span class="n">metadata_file</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;path/to/metadata/file.json&#39;</span>
<a id="__codelineno-31-4" name="__codelineno-31-4" href="#__codelineno-31-4"></a><span class="p">);</span>
</code></pre></div></p>
<h2 id="metadata-information">Metadata information<a class="headerlink" href="#metadata-information" title="Permanent link">🔗</a></h2>
<h3 id="ancestors_of"><code>ancestors_of</code><a class="headerlink" href="#ancestors_of" title="Permanent link">🔗</a></h3>
<p>Report the live snapshot IDs of parents of a specified snapshot</p>
<h4 id="usage_16">Usage<a class="headerlink" href="#usage_16" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the table to report live snapshot IDs</td>
</tr>
<tr>
<td><code>snapshot_id</code></td>
<td></td>
<td>long</td>
<td>Use a specified snapshot to get the live snapshot IDs of parents</td>
</tr>
</tbody>
</table>
<blockquote>
<p>tip : Using snapshot_id</p>
<p>Given snapshots history with roll back to B and addition of C' -&gt; D'
<div class="highlight"><pre><span></span><code><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a>A<span class="w"> </span>-&gt;<span class="w"> </span>B<span class="w"> </span>-<span class="w"> </span>&gt;<span class="w"> </span>C<span class="w"> </span>-&gt;<span class="w"> </span>D
<a id="__codelineno-32-2" name="__codelineno-32-2" href="#__codelineno-32-2"></a><span class="w"> </span><span class="se">\ </span>-&gt;<span class="w"> </span>C<span class="s1">&#39; -&gt; (D&#39;</span><span class="o">)</span>
</code></pre></div>
Not specifying the snapshot ID would return A -&gt; B -&gt; C' -&gt; D', while providing the snapshot ID of
D as an argument would return A-&gt; B -&gt; C -&gt; D</p>
</blockquote>
<h4 id="output_15">Output<a class="headerlink" href="#output_15" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>snapshot_id</code></td>
<td>long</td>
<td>the ancestor snapshot id</td>
</tr>
<tr>
<td><code>timestamp</code></td>
<td>long</td>
<td>snapshot creation time</td>
</tr>
</tbody>
</table>
<h4 id="examples_12">Examples<a class="headerlink" href="#examples_12" title="Permanent link">🔗</a></h4>
<p>Get all the snapshot ancestors of current snapshots(default)
<div class="highlight"><pre><span></span><code><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a><span class="k">CALL</span><span class="w"> </span><span class="n">spark_catalog</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">ancestors_of</span><span class="p">(</span><span class="s1">&#39;db.tbl&#39;</span><span class="p">);</span>
</code></pre></div></p>
<p>Get all the snapshot ancestors by a particular snapshot
<div class="highlight"><pre><span></span><code><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a><span class="k">CALL</span><span class="w"> </span><span class="n">spark_catalog</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">ancestors_of</span><span class="p">(</span><span class="s1">&#39;db.tbl&#39;</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
<a id="__codelineno-34-2" name="__codelineno-34-2" href="#__codelineno-34-2"></a><span class="k">CALL</span><span class="w"> </span><span class="n">spark_catalog</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">ancestors_of</span><span class="p">(</span><span class="n">snapshot_id</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.tbl&#39;</span><span class="p">);</span>
</code></pre></div></p>
<h2 id="change-data-capture">Change Data Capture<a class="headerlink" href="#change-data-capture" title="Permanent link">🔗</a></h2>
<h3 id="create_changelog_view"><code>create_changelog_view</code><a class="headerlink" href="#create_changelog_view" title="Permanent link">🔗</a></h3>
<p>Creates a view that contains the changes from a given table. </p>
<h4 id="usage_17">Usage<a class="headerlink" href="#usage_17" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Argument Name</th>
<th>Required?</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>table</code></td>
<td>✔️</td>
<td>string</td>
<td>Name of the source table for the changelog</td>
</tr>
<tr>
<td><code>changelog_view</code></td>
<td></td>
<td>string</td>
<td>Name of the view to create</td>
</tr>
<tr>
<td><code>options</code></td>
<td></td>
<td>map<string, string></td>
<td>A map of Spark read options to use</td>
</tr>
<tr>
<td><code>net_changes</code></td>
<td></td>
<td>boolean</td>
<td>Whether to output net changes (see below for more information). Defaults to false.</td>
</tr>
<tr>
<td><code>compute_updates</code></td>
<td></td>
<td>boolean</td>
<td>Whether to compute pre/post update images (see below for more information). Defaults to false.</td>
</tr>
<tr>
<td><code>identifier_columns</code></td>
<td></td>
<td>array<string></td>
<td>The list of identifier columns to compute updates. If the argument <code>compute_updates</code> is set to true and <code>identifier_columns</code> are not provided, the table’s current identifier fields will be used.</td>
</tr>
</tbody>
</table>
<p>Here is a list of commonly used Spark read options:</p>
<ul>
<li><code>start-snapshot-id</code>: the exclusive start snapshot ID. If not provided, it reads from the table’s first snapshot inclusively. </li>
<li><code>end-snapshot-id</code>: the inclusive end snapshot id, default to table's current snapshot. </li>
<li><code>start-timestamp</code>: the exclusive start timestamp. If not provided, it reads from the table’s first snapshot inclusively.</li>
<li><code>end-timestamp</code>: the inclusive end timestamp, default to table's current snapshot. </li>
</ul>
<h4 id="output_16">Output<a class="headerlink" href="#output_16" title="Permanent link">🔗</a></h4>
<table>
<thead>
<tr>
<th>Output Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>changelog_view</code></td>
<td>string</td>
<td>The name of the created changelog view</td>
</tr>
</tbody>
</table>
<h4 id="examples_13">Examples<a class="headerlink" href="#examples_13" title="Permanent link">🔗</a></h4>
<p>Create a changelog view <code>tbl_changes</code> based on the changes that happened between snapshot <code>1</code> (exclusive) and <code>2</code> (inclusive).
<div class="highlight"><pre><span></span><code><a id="__codelineno-35-1" name="__codelineno-35-1" href="#__codelineno-35-1"></a><span class="k">CALL</span><span class="w"> </span><span class="n">spark_catalog</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">create_changelog_view</span><span class="p">(</span>
<a id="__codelineno-35-2" name="__codelineno-35-2" href="#__codelineno-35-2"></a><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.tbl&#39;</span><span class="p">,</span>
<a id="__codelineno-35-3" name="__codelineno-35-3" href="#__codelineno-35-3"></a><span class="w"> </span><span class="k">options</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="s1">&#39;start-snapshot-id&#39;</span><span class="p">,</span><span class="s1">&#39;1&#39;</span><span class="p">,</span><span class="s1">&#39;end-snapshot-id&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;2&#39;</span><span class="p">)</span>
<a id="__codelineno-35-4" name="__codelineno-35-4" href="#__codelineno-35-4"></a><span class="p">);</span>
</code></pre></div></p>
<p>Create a changelog view <code>my_changelog_view</code> based on the changes that happened between timestamp <code>1678335750489</code> (exclusive) and <code>1678992105265</code> (inclusive).
<div class="highlight"><pre><span></span><code><a id="__codelineno-36-1" name="__codelineno-36-1" href="#__codelineno-36-1"></a><span class="k">CALL</span><span class="w"> </span><span class="n">spark_catalog</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">create_changelog_view</span><span class="p">(</span>
<a id="__codelineno-36-2" name="__codelineno-36-2" href="#__codelineno-36-2"></a><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.tbl&#39;</span><span class="p">,</span>
<a id="__codelineno-36-3" name="__codelineno-36-3" href="#__codelineno-36-3"></a><span class="w"> </span><span class="k">options</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="s1">&#39;start-timestamp&#39;</span><span class="p">,</span><span class="s1">&#39;1678335750489&#39;</span><span class="p">,</span><span class="s1">&#39;end-timestamp&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;1678992105265&#39;</span><span class="p">),</span>
<a id="__codelineno-36-4" name="__codelineno-36-4" href="#__codelineno-36-4"></a><span class="w"> </span><span class="n">changelog_view</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;my_changelog_view&#39;</span>
<a id="__codelineno-36-5" name="__codelineno-36-5" href="#__codelineno-36-5"></a><span class="p">);</span>
</code></pre></div></p>
<p>Create a changelog view that computes updates based on the identifier columns <code>id</code> and <code>name</code>.
<div class="highlight"><pre><span></span><code><a id="__codelineno-37-1" name="__codelineno-37-1" href="#__codelineno-37-1"></a><span class="k">CALL</span><span class="w"> </span><span class="n">spark_catalog</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">create_changelog_view</span><span class="p">(</span>
<a id="__codelineno-37-2" name="__codelineno-37-2" href="#__codelineno-37-2"></a><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.tbl&#39;</span><span class="p">,</span>
<a id="__codelineno-37-3" name="__codelineno-37-3" href="#__codelineno-37-3"></a><span class="w"> </span><span class="k">options</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="s1">&#39;start-snapshot-id&#39;</span><span class="p">,</span><span class="s1">&#39;1&#39;</span><span class="p">,</span><span class="s1">&#39;end-snapshot-id&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;2&#39;</span><span class="p">),</span>
<a id="__codelineno-37-4" name="__codelineno-37-4" href="#__codelineno-37-4"></a><span class="w"> </span><span class="n">identifier_columns</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="nb">array</span><span class="p">(</span><span class="s1">&#39;id&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;name&#39;</span><span class="p">)</span>
<a id="__codelineno-37-5" name="__codelineno-37-5" href="#__codelineno-37-5"></a><span class="p">)</span>
</code></pre></div></p>
<p>Once the changelog view is created, you can query the view to see the changes that happened between the snapshots.
<div class="highlight"><pre><span></span><code><a id="__codelineno-38-1" name="__codelineno-38-1" href="#__codelineno-38-1"></a><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tbl_changes</span><span class="p">;</span>
</code></pre></div>
<div class="highlight"><pre><span></span><code><a id="__codelineno-39-1" name="__codelineno-39-1" href="#__codelineno-39-1"></a><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">tbl_changes</span><span class="w"> </span><span class="k">where</span><span class="w"> </span><span class="n">_change_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;INSERT&#39;</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">_change_ordinal</span><span class="p">;</span>
</code></pre></div>
Please note that the changelog view includes Change Data Capture(CDC) metadata columns
that provide additional information about the changes being tracked. These columns are:</p>
<ul>
<li><code>_change_type</code>: the type of change. It has one of the following values: <code>INSERT</code>, <code>DELETE</code>, <code>UPDATE_BEFORE</code>, or <code>UPDATE_AFTER</code>.</li>
<li><code>_change_ordinal</code>: the order of changes</li>
<li><code>_commit_snapshot_id</code>: the snapshot ID where the change occurred</li>
</ul>
<p>Here is an example of corresponding results. It shows that the first snapshot inserted 2 records, and the
second snapshot deleted 1 record. </p>
<table>
<thead>
<tr>
<th>id</th>
<th>name</th>
<th>_change_type</th>
<th>_change_ordinal</th>
<th>_change_snapshot_id</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Alice</td>
<td>INSERT</td>
<td>0</td>
<td>5390529835796506035</td>
</tr>
<tr>
<td>2</td>
<td>Bob</td>
<td>INSERT</td>
<td>0</td>
<td>5390529835796506035</td>
</tr>
<tr>
<td>1</td>
<td>Alice</td>
<td>DELETE</td>
<td>1</td>
<td>8764748981452218370</td>
</tr>
</tbody>
</table>
<p>Create a changelog view that computes net changes. It removes intermediate changes and only outputs the net changes.
<div class="highlight"><pre><span></span><code><a id="__codelineno-40-1" name="__codelineno-40-1" href="#__codelineno-40-1"></a><span class="k">CALL</span><span class="w"> </span><span class="n">spark_catalog</span><span class="p">.</span><span class="k">system</span><span class="p">.</span><span class="n">create_changelog_view</span><span class="p">(</span>
<a id="__codelineno-40-2" name="__codelineno-40-2" href="#__codelineno-40-2"></a><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;db.tbl&#39;</span><span class="p">,</span>
<a id="__codelineno-40-3" name="__codelineno-40-3" href="#__codelineno-40-3"></a><span class="w"> </span><span class="k">options</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">map</span><span class="p">(</span><span class="s1">&#39;end-snapshot-id&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;87647489814522183702&#39;</span><span class="p">),</span>
<a id="__codelineno-40-4" name="__codelineno-40-4" href="#__codelineno-40-4"></a><span class="w"> </span><span class="n">net_changes</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">true</span>
<a id="__codelineno-40-5" name="__codelineno-40-5" href="#__codelineno-40-5"></a><span class="p">);</span>
</code></pre></div></p>
<p>With the net changes, the above changelog view only contains the following row since Alice was inserted in the first snapshot and deleted in the second snapshot.</p>
<table>
<thead>
<tr>
<th>id</th>
<th>name</th>
<th>_change_type</th>
<th>_change_ordinal</th>
<th>_change_snapshot_id</th>
</tr>
</thead>
<tbody>
<tr>
<td>2</td>
<td>Bob</td>
<td>INSERT</td>
<td>0</td>
<td>5390529835796506035</td>
</tr>
</tbody>
</table>
<h4 id="carry-over-rows">Carry-over Rows<a class="headerlink" href="#carry-over-rows" title="Permanent link">🔗</a></h4>
<p>The procedure removes the carry-over rows by default. Carry-over rows are the result of row-level operations(<code>MERGE</code>, <code>UPDATE</code> and <code>DELETE</code>)
when using copy-on-write. For example, given a file which contains row1 <code>(id=1, name='Alice')</code> and row2 <code>(id=2, name='Bob')</code>.
A copy-on-write delete of row2 would require erasing this file and preserving row1 in a new file. The changelog table
reports this as the following pair of rows, despite it not being an actual change to the table.</p>
<table>
<thead>
<tr>
<th>id</th>
<th>name</th>
<th>_change_type</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Alice</td>
<td>DELETE</td>
</tr>
<tr>
<td>1</td>
<td>Alice</td>
<td>INSERT</td>
</tr>
</tbody>
</table>
<p>To see carry-over rows, query <code>SparkChangelogTable</code> as follows:
<div class="highlight"><pre><span></span><code><a id="__codelineno-41-1" name="__codelineno-41-1" href="#__codelineno-41-1"></a><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">spark_catalog</span><span class="p">.</span><span class="n">db</span><span class="p">.</span><span class="n">tbl</span><span class="p">.</span><span class="n">changes</span><span class="p">;</span>
</code></pre></div></p>
<h4 id="prepost-update-images">Pre/Post Update Images<a class="headerlink" href="#prepost-update-images" title="Permanent link">🔗</a></h4>
<p>The procedure computes the pre/post update images if configured. Pre/post update images are converted from a
pair of a delete row and an insert row. Identifier columns are used for determining whether an insert and a delete record
refer to the same row. If the two records share the same values for the identity columns they are considered to be before
and after states of the same row. You can either set identifier fields in the table schema or input them as the procedure parameters.</p>
<p>The following example shows pre/post update images computation with an identifier column(<code>id</code>), where a row deletion
and an insertion with the same <code>id</code> are treated as a single update operation. Specifically, suppose we have the following pair of rows:</p>
<table>
<thead>
<tr>
<th>id</th>
<th>name</th>
<th>_change_type</th>
</tr>
</thead>
<tbody>
<tr>
<td>3</td>
<td>Robert</td>
<td>DELETE</td>
</tr>
<tr>
<td>3</td>
<td>Dan</td>
<td>INSERT</td>
</tr>
</tbody>
</table>
<p>In this case, the procedure marks the row before the update as an <code>UPDATE_BEFORE</code> image and the row after the update
as an <code>UPDATE_AFTER</code> image, resulting in the following pre/post update images:</p>
<table>
<thead>
<tr>
<th>id</th>
<th>name</th>
<th>_change_type</th>
</tr>
</thead>
<tbody>
<tr>
<td>3</td>
<td>Robert</td>
<td>UPDATE_BEFORE</td>
</tr>
<tr>
<td>3</td>
<td>Dan</td>
<td>UPDATE_AFTER</td>
</tr>
</tbody>
</table>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
Back to top
</button>
</main>
<footer id="footer" class="footer">
<div class="container-fluid footer-top">
<div class="d-flex justify-content-center pt-3 pb-3" >
<div class="col-lg-2 col-md-2 footer-links">
<h4>Features</h4>
<ul>
<li>
<a href="/docs/latest/evolution/#schema-evolution"
>Schema Evolution</a
>
</li>
<li>
<a href="/docs/latest/partitioning/">Hidden Partitioning</a>
</li>
<li>
<a href="/docs/latest/evolution/#partition-evolution"
>Partition Evolution</a
>
</li>
<li>
<a href="/docs/latest/reliability/">Serializable Isolation</a>
</li>
<li>
<a href="/docs/latest/branching/">Branching and Tagging</a>
</li>
<li>
<a href="/docs/latest/reliability/#concurrent-write-operations"
>Optimistic Concurrency</a
>
</li>
<li>
<a href="/docs/latest/performance/#data-filtering"
>Advanced Filtering</a
>
</li>
<li><a href="/docs/latest/">Compute Engine Integrations</a></li>
<li>
<a href="/concepts/catalog/#decoupling-using-the-rest-catalog"
>REST Catalog</a
>
</li>
<li><a href="/docs/latest/api/">Multiple language APIs</a></li>
</ul>
</div>
<div class="col-lg-2 col-md-2 footer-links">
<h4>Get Started</h4>
<ul>
<li><a href="/spark-quickstart">Spark Quickstart</a></li>
<li><a href="/hive-quickstart">Hive Quickstart</a></li>
<li><a href="/spec/">Open Table Spec</a></li>
<li><a href="/docs/latest">Docs</a></li>
<li><a href="/blogs/">Blogs</a></li>
<li><a href="/talks/">Talks</a></li>
</ul>
<br />
</div>
<div class="col-lg-2 col-md-2 footer-links">
<h4>Community</h4>
<ul>
<li><a href="/community/#slack">Support</a></li>
<li><a href="/community/#mailing-lists">Mailing Lists</a></li>
<li>
<a href="/community/#iceberg-community-events">Iceberg Events</a>
</li>
<li><a href="/community/#issues">Issues</a></li>
<li><a href="/community/#contribute">Contribute</a></li>
<li><a href="/community/#community-guidelines">Guidelines</a></li>
<!-- li><a href="/logos-and-assets.html">Solr Logos and Assets</a></li -->
</ul>
</div>
<div class="col-lg-2 col-md-2 footer-links">
<h4>ASF</h4>
<ul>
<li>
<a href="https://www.apache.org/">Apache Software Foundation</a>
</li>
<li>
<a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
<li>
<a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a
>
</li>
<li><a href="https://www.apache.org/security/">Security</a></li>
<li><a href="https://www.apache.org/licenses/">License</a></li>
</ul>
</div>
<div class="col-lg-2 col-md-2 mt-3 footer-icons">
<a href="https://iceberg.apache.org"><img
src="/assets/images/asf-estd-1999-logo.png"
alt="apache software foundation logo"
/></a>
<div class="d-flex justify-content-center">
<div class="social-links d-flex ">
<div class="md-social">
<a href="https://iceberg.apache.org/community/" target="_blank" rel="noopener" title="iceberg.apache.org" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M88.2 309.1c9.8-18.3 6.8-40.8-7.5-55.8C59.4 230.9 48 204 48 176c0-63.5 63.8-128 160-128s160 64.5 160 128-63.8 128-160 128c-13.1 0-25.8-1.3-37.8-3.6-10.4-2-21.2-.6-30.7 4.2-4.1 2.1-8.3 4.1-12.6 6-16 7.2-32.9 13.5-49.9 18 2.8-4.6 5.4-9.1 7.9-13.6 1.1-1.9 2.2-3.9 3.2-5.9zM0 176c0 41.8 17.2 80.1 45.9 110.3-.9 1.7-1.9 3.5-2.8 5.1-10.3 18.4-22.3 36.5-36.6 52.1-6.6 7-8.3 17.2-4.6 25.9C5.8 378.3 14.4 384 24 384c43 0 86.5-13.3 122.7-29.7 4.8-2.2 9.6-4.5 14.2-6.8 15.1 3 30.9 4.5 47.1 4.5 114.9 0 208-78.8 208-176S322.9 0 208 0 0 78.8 0 176zm432 304c16.2 0 31.9-1.6 47.1-4.5 4.6 2.3 9.4 4.6 14.2 6.8C529.5 498.7 573 512 616 512c9.6 0 18.2-5.7 22-14.5 3.8-8.8 2-19-4.6-25.9-14.2-15.6-26.2-33.7-36.6-52.1-.9-1.7-1.9-3.4-2.8-5.1 28.8-30.3 46-68.6 46-110.4 0-94.4-87.9-171.5-198.2-175.8 4.1 15.2 6.2 31.2 6.2 47.8v.6c87.2 6.7 144 67.5 144 127.4 0 28-11.4 54.9-32.7 77.2-14.3 15-17.3 37.6-7.5 55.8 1.1 2 2.2 4 3.2 5.9 2.5 4.5 5.2 9 7.9 13.6-17-4.5-33.9-10.7-49.9-18-4.3-1.9-8.5-3.9-12.6-6-9.5-4.8-20.3-6.2-30.7-4.2-12.1 2.4-24.7 3.6-37.8 3.6-61.7 0-110-26.5-136.8-62.3-16 5.4-32.8 9.4-50 11.8C279 439.8 350 480 432 480z"/></svg>
</a>
<a href="https://github.com/apache/iceberg" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</a>
<a href="https://www.youtube.com/@ApacheIceberg" target="_blank" rel="noopener" title="www.youtube.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"/></svg>
</a>
<a href="https://join.slack.com/t/apache-iceberg/shared_invite/zt-287g3akar-K9Oe_En5j1UL7Y_Ikpai3A" target="_blank" rel="noopener" title="join.slack.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z"/></svg>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container-fluid ">
<div class="d-flex justify-content-center ">
<div class="col-md-8">
<p class="copyright-text m-4">
Apache Iceberg, Iceberg, Apache, the Apache feather logo, and the
Apache Iceberg project logo are either registered trademarks or
trademarks of The Apache Software Foundation. Copyright © 2024 The
Apache Software Foundation, Licensed under the
<span
><a href="https://www.apache.org/licenses/">Apache License, Version 2.0</a
>.</span
>
</p>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["navigation.tabs", "navigation.tabs.sticky", "navigation.path", "navigation.top", "navigation.tracking", "toc.follow", "offline", "search.suggest", "search.highlight", "content.tabs.link", "content.code.copy", "content.code.annotate"], "search": "../../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../../assets/javascripts/bundle.ebd0bdb7.min.js"></script>
<script src="../../../assets/javascript/extra.js"></script>
<script src="../../../assets/external/unpkg.com/mermaid@10/dist/mermaid.min.js"></script>
</body>
</html>