有没有办法在 Google 数据流中创建具有数据依赖模式的 Bigquery table?

Is there a way to create a Bigquery table with data-dependent schema in Google Dataflow?

我正在尝试创建一个 Bigquery table 作为数据流的一部分。这些示例显示将架构作为 TableFieldSchema 实例传递。但是,我拥有的 table 架构依赖于数据,因此最多只能创建为 PCollection 中的一个元素。例如:

PCollection<TableRow> quotes = ...;

  quotes.apply(BigQueryIO.Write
      .named("Write")
      .to("my-project:output.output_table")
      .withSchema(schema)
      .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE)
   .withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED));

此处 schema 需要是 TableFieldSchema,但我将其设置为 PCollection

不幸的是,我们没有内置 API 来写入具有动态架构的 BigQuery table。也就是说,我们正在努力提高该领域的灵活性。目前没有估计,但我们希望尽快得到它。

与此同时,针对其他 Whosebug 问题提出了一些解决方法:

  • How do I write to BigQuery using a schema computed during Dataflow execution?