如果没有要编写的内容,请避免创建BigQuery表

时间:2018-02-13 20:31:37

标签: google-cloud-platform google-bigquery google-cloud-dataflow

这是我将代码写入新BigQuery表的代码:

PCollection<TableRow> lhReports = results.get(BigQueryImport.LIGHTHOUSE_TAG);
lhReports.apply(BigQueryIO.Write
         .named("write-lighthouse")
         .to(getBigQueryOutput(options, "lighthouse"))
         .withSchema(lhReportSchema)
         .withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED)
         .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE));

有一半时间我的管道没有要写的任何行,但是无论如何都会创建表。 我想确保我不创建任何空表。

我检查的第一件事是CREATE_IF_NEEDED的工作原理。它只是指定如果表尚不存在,则可以创建该表。没有其他CreateDisposition枚举取决于输出长度。

我对Dataflow并不是非常复杂,所以我的下一个想法是将管道包装起来,首先检查PCollectionlhReports的大小。但我在API中没有看到任何类型的大小/长度方法。

我是在正确的轨道上吗?

0 个答案:

没有答案