You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@iceberg.apache.org by "dramaticlly (via GitHub)" <gi...@apache.org> on 2023/05/18 20:51:32 UTC

[GitHub] [iceberg] dramaticlly commented on a diff in pull request #7613: Core: Minor metadata table code harmonization for readable_metrics

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

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


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