Fokko commented on code in PR #1443:
URL: https://github.com/apache/iceberg-python/pull/1443#discussion_r1899080083


##########
pyiceberg/io/pyarrow.py:
##########
@@ -1216,6 +1216,25 @@ def _field_id(self, field: pa.Field) -> int:
         return -1
 
 
+def _get_column_projection_values(
+    file: DataFile,
+    projected_schema: Schema,
+    projected_field_ids: Set[int],
+    file_project_schema: Schema,
+    partition_spec: Optional[PartitionSpec] = None,
+) -> Dict[str, object]:
+    """Apply Column Projection rules to File Schema."""
+    projected_missing_fields = {}
+
+    for field_id in 
projected_field_ids.difference(file_project_schema.field_ids):
+        if partition_spec is not None:
+            for partition_field in 
partition_spec.fields_by_source_id(field_id):
+                if isinstance(partition_field.transform, IdentityTransform) 
and partition_field.name in file.partition.__dict__:
+                    projected_missing_fields[partition_field.name] = 
file.partition.__dict__[partition_field.name]

Review Comment:
   This is my mistake, the lookup should never be done by name, but by 
`field-id`. I've added the lookup by name to the record, but this should not be 
used outside of tests.
   
   Instead, we want to create a lookup table from the field: 
https://github.com/apache/iceberg-python/blob/e6465001bd8a47718ff79da4def5800962e6b895/pyiceberg/schema.py#L1224-L1233
   
   It should be used something like:
   
   ```python
   accessors = build_position_accessors(table_schema)
   projected_missing_fields[partition_field.name] = 
record[accessors[partition_field.field_id]]
   ```



-- 
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: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to