Details
-
Improvement
-
Status: Open
-
P2
-
Resolution: Unresolved
-
None
-
None
Description
DateTimeFormatter for BigQuery only supports 0, 3, 6 decimal point:
We might want to support an arbitrary number of decimal points between 0 to 6.
Pipeline pipeline = Pipeline.create(options); pipeline.apply(BigQueryIO.readTableRows() .fromQuery("select cast("2022-02-18 11:09:12.3456" as datetime) " "UNION ALL " "select cast("2022-02-18 11:09:12.345678" as datetime) ") .usingStandardSql() ).apply(ParDo.of(new DoFn<TableRow, TableRow>() { @ProcessElement public void processElement(@Element TableRow tableRow) { System.out.println(tableRow);
Error stack:
Caused by: java.time.format.DateTimeParseException: Text '2022-02-18T11:09:12.3456' could not be parsed, unparsed text found at index 19 java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1952) java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851) java.time.LocalDateTime.parse(LocalDateTime.java:492) org.apache.beam.sdk.io.gcp.bigquery.BigQueryUtils.toBeamValue(BigQueryUtils.java:673) org.apache.beam.sdk.io.gcp.bigquery.BigQueryUtils.toBeamRowFieldValue(BigQueryUtils.java:636)