Minbo Bae created BEAM-13753:
--------------------------------

             Summary: BigQuery Storage Write API fails with type mismatch error 
for DATE type
                 Key: BEAM-13753
                 URL: https://issues.apache.org/jira/browse/BEAM-13753
             Project: Beam
          Issue Type: Bug
          Components: io-java-gcp
            Reporter: Minbo Bae


If {{DATE}} type is specified in schema, {{BigQueryIO}} with Storage Write API 
may fail with the following error:
{quote}Got error com.google.api.gax.rpc.InvalidArgumentException: 
io.grpc.StatusRuntimeException: INVALID_ARGUMENT: The proto field mismatched 
with BigQuery field at <table>, the proto field type string, BigQuery field 
type DATE Entity: <write_stream_name>
...
{quote}
{{DATE}} type in BEAM for BigQuery is converted to {{string}} in proto request 
[1], while BigQuery Storage Write API requires an integer type for {{DATE}} 
type in BigQuery [2].

A workaround is to use {{INTEGER}} in BEAM and manually compute the number of 
days since epoch.

Actually, a feature request to BigQuery is filed at [3]. If it's implemented, 
we can use {{DATE}} type successfully.

[1] 
[https://github.com/apache/beam/blob/v2.35.0/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/TableRowToStorageApiProto.java#L55-L73]
[2] [https://cloud.google.com/bigquery/docs/write-api#data_type_conversions]
[3] [https://issuetracker.google.com/issues/205174128]



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to