Skip to content

Commit 6dd28e4

Browse files
authored
fix: prevent athena.to_iceberg overwrite to delete table in order to preserve Iceberg transactions history (#2776)
1 parent 60beb95 commit 6dd28e4

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

awswrangler/athena/_write_iceberg.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -383,11 +383,6 @@ def to_iceberg(
383383
glue_table_settings if glue_table_settings else {},
384384
)
385385

386-
if mode == "overwrite":
387-
catalog.delete_table_if_exists(
388-
database=database, table=table, catalog_id=catalog_id, boto3_session=boto3_session
389-
)
390-
391386
try:
392387
# Create Iceberg table if it doesn't exist
393388
if not catalog.does_table_exist(
@@ -469,6 +464,20 @@ def to_iceberg(
469464
s3_additional_kwargs=s3_additional_kwargs,
470465
catalog_id=catalog_id,
471466
)
467+
# if mode == "overwrite", delete whole data from table (but not table itself)
468+
elif mode == "overwrite":
469+
delete_sql_statement = f"DELETE FROM {table}"
470+
delete_query_execution_id: str = _start_query_execution(
471+
sql=delete_sql_statement,
472+
workgroup=workgroup,
473+
wg_config=wg_config,
474+
database=database,
475+
data_source=data_source,
476+
encryption=encryption,
477+
kms_key=kms_key,
478+
boto3_session=boto3_session,
479+
)
480+
wait_query(query_execution_id=delete_query_execution_id, boto3_session=boto3_session)
472481

473482
# Create temporary external table, write the results
474483
s3.to_parquet(

0 commit comments

Comments
 (0)