我的表格格式:tableName_YYYYMMDD
。我试图从流数据流管道写入此表。我想每天写一个新表的原因是因为我希望在30天后使表失效,并且只希望一次保留30个表的窗口。
当前代码:
tableRow.apply(BigQueryIO.Write
.named("WriteBQTable")
.to(String.format("%1$s:%2$s.%3$s",projectId, bqDataSet, bqTable))
.withSchema(schema)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND));
我确实意识到上面的代码不会翻到新的一天并开始写在那里。
由于this回答表明我可以对表进行分区并使分区过期,但是从流管道中不支持写入分区表。
任何想法如何解决这个问题?
答案 0 :(得分:0)
在Dataflow 2.0 SDK中,有一种指定DynamicDestinations
的方法请参阅BigQuery Dynamic Destionations中的to(DynamicDestinations<T,?> dynamicDestinations)
。
另外,请参阅TableDestination版本,它应该更简单,代码更少。虽然不幸的是javadoc中没有例子。
to(SerializableFunction<ValueInSingleWindow<T>,TableDestination> tableFunction)
答案 1 :(得分:0)