我正在尝试使用Dataflow在Datastore中查询我的所有类型,并将它们写入BigQuery中的日期分段分区。阅读部分很容易DatastoreIO.read()
,并给我PCollection<Entity>
。
BigQuery期望PCollection<TableRow>
,我可以隐式地从一个转换为另一个吗?我的数据涉及一些不可预测的字段(例如嵌入属性中的包数据),因此我无法明确转换所有字段。
此外,如果它与此事有关,我想使用SerializableFunction
动态设置每个数据存储区实体的目标表(将为YYYYMMDD_kind)
答案 0 :(得分:2)
您必须自己将PCollection<Entity>
转换为PCollection<TableRow>
。 BigQueryIO.write()
的API需要TableRow
。要转换它们,您需要在ParDo
的顶部应用PCollection<Entity>
。
作为旁注,您还可以在不使用Dataflow的情况下将数据存储区备份直接加载到BigQuery中。请参阅here。