-
Notifications
You must be signed in to change notification settings - Fork 3k
Core: Minor metadata table code harmonization for readable_metrics #7613
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
| if (partitionType.fields().size() < 1) { | ||
| // avoid returning an empty struct, which is not always supported. instead, drop the partition | ||
| // field (id 102) | ||
| // avoid returning an empty struct, which is not always supported. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is not related, but fixing longstanding uneven line breaks introduced by the spotless refactor
| * file projection | ||
| * | ||
| * @return file projection with required columns to read readable metrics | ||
| * file projection. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the return does not convey additional information, so removed it in favor of the method comment for brevity
| StructProjection structProjection = structProjection(projection); | ||
| return CloseableIterable.transform(entryAsStruct, structProjection::wrap); | ||
|
|
||
| return CloseableIterable.transform( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was trying to make both branches be more alike:
- calculate final struct projection
- calculate 'file' projection if needed for reading manifest
- Use these to transform the result
5de22b6 to
141c9ab
Compare
| private CloseableIterable<? extends ManifestEntry<? extends ContentFile<?>>> entries( | ||
| Schema newFileProjection) { | ||
| return ManifestFiles.open(manifest, io, specsById).project(newFileProjection).entries(); | ||
| Schema fileStructProjection) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make this method a bit more functional (input/output is more clear)
|
@dramaticlly fyi |
dramaticlly
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thank you @szehon-ho for the refactoring. I think now logic in BaseFiles is much easier to read
| private StructLike withReadableMetrics( | ||
| ContentFile<?> file, Types.NestedField readableMetricsField) { | ||
| int metricsPosition = projection.columns().indexOf(readableMetricsField); | ||
| int columnCount = projection.columns().size(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe we can reuse the projectionColumnCount as variable name above ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yea, projectionColumnCount is I guess the description of what it is, but the way I think about the method withReadableMetrics is actually more towards the goal, of making a struct.
So I think it's better to have the variables in the end: struct, structSize, metricsStruct, metricsPosition
(projectionColumnCount being structSize). Changed the references to match. What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks for the explanation, I think structSize sounds great!
| * ensuring that the underlying metrics used to create that column are part of the final | ||
| * projection. | ||
| * | ||
| * @param projectionSchema projection to transform |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like that, changed to 'requestedProjection'
f071cf5 to
45db9e8
Compare
45db9e8 to
be003e9
Compare
|
Merged, as this is just a continuation/code fixup of #7539. |
Some minor cleanup discussed: #7539 (comment) ,
Try to make the readable_metrics code of BaseEntriesTable and BaseFilesTable align, by extracting common class and making code more similar.