[
https://issues.apache.org/jira/browse/BEAM-9424?focusedWorklogId=397678&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-397678
]
ASF GitHub Bot logged work on BEAM-9424:
----------------------------------------
Author: ASF GitHub Bot
Created on: 04/Mar/20 16:35
Start Date: 04/Mar/20 16:35
Worklog Time Spent: 10m
Work Description: kanterov commented on issue #11034: [BEAM-9424] Allow
grouping by LogicalType
URL: https://github.com/apache/beam/pull/11034#issuecomment-594648165
@reuvenlax I cleaned the code and left only test that reproduces this issue.
The reason for that is because it uses `RowCoderGenerator` that would use a
`Coder<BaseT>` instead of `Coder<InputT>` (see `RowCoderGenerator.java:374`).
While it doesn't make any difference for binary representation, SDK code fails
because of that. In the stack trace we can see how Combine should get
`InputT=EnumerationType$Value`, but it gets `BaseT=Integer`.
```
Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to
org.apache.beam.sdk.schemas.logicaltypes.EnumerationType$Value
at
org.apache.beam.sdk.schemas.logicaltypes.EnumerationType.toBaseType(EnumerationType.java:37)
at
org.apache.beam.sdk.values.Row$Builder.verifyLogicalType(Row.java:659)
at org.apache.beam.sdk.values.Row$Builder.verify(Row.java:652)
at org.apache.beam.sdk.values.Row$Builder.verify(Row.java:635)
at org.apache.beam.sdk.values.Row$Builder.build(Row.java:840)
at
org.apache.beam.sdk.schemas.utils.SelectHelpers.selectRow(SelectHelpers.java:194)
at
org.apache.beam.sdk.schemas.transforms.SchemaAggregateFn$Inner$ExtractSingleFieldFunction.apply(SchemaAggregateFn.java:241)
at
org.apache.beam.sdk.schemas.transforms.SchemaAggregateFn$Inner$ExtractSingleFieldFunction.apply(SchemaAggregateFn.java:231)
at
org.apache.beam.sdk.transforms.CombineFns$ComposedCombineFn.addInput(CombineFns.java:377)
at
org.apache.beam.sdk.schemas.transforms.SchemaAggregateFn$Inner.addInput(SchemaAggregateFn.java:283)
at
org.apache.beam.sdk.schemas.transforms.SchemaAggregateFn$Inner.addInput(SchemaAggregateFn.java:55)
at
org.apache.beam.sdk.transforms.Combine$CombineFn.apply(Combine.java:446)
at
org.apache.beam.sdk.transforms.Combine$GroupedValues$1.processElement(Combine.java:2171)
```
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 397678)
Time Spent: 3.5h (was: 3h 20m)
> Grouping By LogicalTypes is not supported
> -----------------------------------------
>
> Key: BEAM-9424
> URL: https://issues.apache.org/jira/browse/BEAM-9424
> Project: Beam
> Issue Type: Bug
> Components: sdk-java-core
> Affects Versions: 2.19.0
> Reporter: fdiazgon
> Assignee: fdiazgon
> Priority: Minor
> Labels: sql
> Time Spent: 3.5h
> Remaining Estimate: 0h
>
> Creating a schema from a BQ schema that has either TIME, DATE or DATETIME
> columns, and grouping by one of these fields throws NullPointerException.
> {code:java}
> Pipeline pipeline = Pipeline.create();
> Schema beamSchemaWithLogicalTypes =
> BigQueryUtils.fromTableSchema(
> new TableSchema()
> .setFields(
> Arrays.asList(
> new TableFieldSchema().setName("fTime").setType("TIME"),
> new TableFieldSchema().setName("fDate").setType("DATE"),
> new
> TableFieldSchema().setName("fDatetime").setType("DATETIME"))));
> Row row =
> Row.withSchema(beamSchemaWithLogicalTypes)
> .addValues(
> DateTime.parse("2020-02-02"),
> DateTime.parse("2020-02-02"),
> DateTime.parse("2020-02-02T00:00:00"))
> .build();
> PCollection<Row> outputRow =
> pipeline
> .apply(Create.of(row))
> .setRowSchema(beamSchemaWithLogicalTypes)
> .apply(
> SqlTransform.query(
> "SELECT fTime, fDate, fDatetime FROM PCOLLECTION GROUP BY
> fTime, fDate, fDatetime"));
> pipeline.run();
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)