Fokko commented on code in PR #61:
URL: https://github.com/apache/iceberg-python/pull/61#discussion_r1372139436
##########
pyiceberg/table/snapshots.py:
##########
@@ -116,3 +144,199 @@ class MetadataLogEntry(IcebergBaseModel):
class SnapshotLogEntry(IcebergBaseModel):
snapshot_id: int = Field(alias="snapshot-id")
timestamp_ms: int = Field(alias="timestamp-ms")
+
+
+class SnapshotSummaryCollector:
+ added_size: int
+ removed_size: int
+ added_files: int
+ removed_files: int
+ added_eq_delete_files: int
+ removed_eq_delete_files: int
+ added_pos_delete_files: int
+ removed_pos_delete_files: int
+ added_delete_files: int
+ removed_delete_files: int
+ added_records: int
+ deleted_records: int
+ added_pos_deletes: int
+ removed_pos_deletes: int
+ added_eq_deletes: int
+ removed_eq_deletes: int
+
+ def __init__(self) -> None:
+ self.added_size = 0
+ self.removed_size = 0
+ self.added_files = 0
+ self.removed_files = 0
+ self.added_eq_delete_files = 0
+ self.removed_eq_delete_files = 0
+ self.added_pos_delete_files = 0
+ self.removed_pos_delete_files = 0
+ self.added_delete_files = 0
+ self.removed_delete_files = 0
+ self.added_records = 0
+ self.deleted_records = 0
+ self.added_pos_deletes = 0
+ self.removed_pos_deletes = 0
+ self.added_eq_deletes = 0
+ self.removed_eq_deletes = 0
+
+ def add_file(self, data_file: DataFile) -> None:
+ if data_file.content == DataFileContent.DATA:
+ self.added_files += 1
+ self.added_records += data_file.record_count
+ self.added_size += data_file.file_size_in_bytes
+ elif data_file.content == DataFileContent.POSITION_DELETES:
+ self.added_delete_files += 1
+ self.added_pos_delete_files += 1
+ self.added_pos_deletes += data_file.record_count
+ elif data_file.content == DataFileContent.EQUALITY_DELETES:
+ self.added_delete_files += 1
+ self.added_eq_delete_files += 1
+ self.added_eq_deletes += data_file.record_count
+ else:
+ raise ValueError(f"Unknown data file content: {data_file.content}")
+
+ def removed_file(self, data_file: DataFile) -> None:
+ if data_file.content == DataFileContent.DATA:
Review Comment:
Great suggestion, missed that one
ref:
https://github.com/apache/iceberg/blob/aa891acf20040d15e7ca59dc503adb3c1e4325b8/core/src/main/java/org/apache/iceberg/SnapshotSummary.java#L301
##########
pyiceberg/table/snapshots.py:
##########
@@ -116,3 +144,199 @@ class MetadataLogEntry(IcebergBaseModel):
class SnapshotLogEntry(IcebergBaseModel):
snapshot_id: int = Field(alias="snapshot-id")
timestamp_ms: int = Field(alias="timestamp-ms")
+
+
+class SnapshotSummaryCollector:
+ added_size: int
+ removed_size: int
+ added_files: int
+ removed_files: int
+ added_eq_delete_files: int
+ removed_eq_delete_files: int
+ added_pos_delete_files: int
+ removed_pos_delete_files: int
+ added_delete_files: int
+ removed_delete_files: int
+ added_records: int
+ deleted_records: int
+ added_pos_deletes: int
+ removed_pos_deletes: int
+ added_eq_deletes: int
+ removed_eq_deletes: int
+
+ def __init__(self) -> None:
+ self.added_size = 0
+ self.removed_size = 0
+ self.added_files = 0
+ self.removed_files = 0
+ self.added_eq_delete_files = 0
+ self.removed_eq_delete_files = 0
+ self.added_pos_delete_files = 0
+ self.removed_pos_delete_files = 0
+ self.added_delete_files = 0
+ self.removed_delete_files = 0
+ self.added_records = 0
+ self.deleted_records = 0
+ self.added_pos_deletes = 0
+ self.removed_pos_deletes = 0
+ self.added_eq_deletes = 0
+ self.removed_eq_deletes = 0
+
+ def add_file(self, data_file: DataFile) -> None:
+ if data_file.content == DataFileContent.DATA:
+ self.added_files += 1
+ self.added_records += data_file.record_count
+ self.added_size += data_file.file_size_in_bytes
Review Comment:
Yes, great catch! 👍
ref:
https://github.com/apache/iceberg/blob/aa891acf20040d15e7ca59dc503adb3c1e4325b8/core/src/main/java/org/apache/iceberg/SnapshotSummary.java#L278
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]