dramaticlly commented on code in PR #7613:
URL: https://github.com/apache/iceberg/pull/7613#discussion_r1198287876


##########
core/src/main/java/org/apache/iceberg/BaseFilesTable.java:
##########
@@ -192,14 +181,46 @@ private CloseableIterable<? extends ContentFile<?>> 
files(Schema fileProjection)
       }
     }
 
-    private StructLike withReadableMetrics(ContentFile<?> file, int 
metricsPosition) {
+    /**
+     * Given content file metadata, append a 'readable_metrics' column that 
return the file's
+     * metrics in human-readable form.
+     *
+     * @file content file metadata
+     * @param readableMetricsField projected "readable_metrics" field
+     * @return struct representing content file, with appended 
readable_metrics field
+     */
+    private StructLike withReadableMetrics(
+        ContentFile<?> file, Types.NestedField readableMetricsField) {
+      int metricsPosition = projection.columns().indexOf(readableMetricsField);
       int columnCount = projection.columns().size();

Review Comment:
   maybe we can reuse the `projectionColumnCount` as variable name above ?



##########
core/src/main/java/org/apache/iceberg/BaseFilesTable.java:
##########
@@ -192,14 +181,46 @@ private CloseableIterable<? extends ContentFile<?>> 
files(Schema fileProjection)
       }
     }
 
-    private StructLike withReadableMetrics(ContentFile<?> file, int 
metricsPosition) {
+    /**
+     * Given content file metadata, append a 'readable_metrics' column that 
return the file's
+     * metrics in human-readable form.
+     *
+     * @file content file metadata
+     * @param readableMetricsField projected "readable_metrics" field
+     * @return struct representing content file, with appended 
readable_metrics field
+     */
+    private StructLike withReadableMetrics(
+        ContentFile<?> file, Types.NestedField readableMetricsField) {
+      int metricsPosition = projection.columns().indexOf(readableMetricsField);
       int columnCount = projection.columns().size();
-      StructType projectedMetricType =
-          
projection.findField(MetricsUtil.READABLE_METRICS).type().asStructType();
+
+      StructType projectedMetricType = 
readableMetricsField.type().asStructType();
       MetricsUtil.ReadableMetricsStruct readableMetrics =
           MetricsUtil.readableMetricsStruct(dataTableSchema, file, 
projectedMetricType);
-      return new ContentFileStructWithMetrics(
-          columnCount, metricsPosition, (StructLike) file, readableMetrics);
+      return new MetricsUtil.StructWithReadableMetrics(
+          (StructLike) file, readableMetrics, columnCount, metricsPosition);
+    }
+
+    /**
+     * Create a projection on content files metadata by removing virtual 
'readable_column' and
+     * ensuring that the underlying metrics used to create that column are 
part of the final
+     * projection.
+     *
+     * @param projectionSchema projection to transform

Review Comment:
   nit: `projection to transform` read a bit weird as first time I read it I am 
not clear on why do we need to transform, maybe `requested projection` or 
`intended projection` which correspond to returning of actual projection ?



-- 
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]

Reply via email to