Uploaded image for project: 'Beam'
  1. Beam
  2. BEAM-14114

Parsing datetime string with 0 to 6 decimal points for BigQuery

Details

    • Improvement
    • Status: Open
    • P2
    • Resolution: Unresolved
    • None
    • None
    • io-java-gcp

    Description

      DateTimeFormatter for BigQuery only supports 0, 3, 6 decimal point:

      https://github.com/apache/beam/blob/v2.37.0/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryUtils.java#L165

      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)
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            heejong Heejong Lee
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated: