Google cloud dataflow 将ValueProvider与DatastoreIO.Read一起使用

Google cloud dataflow 将ValueProvider与DatastoreIO.Read一起使用,google-cloud-dataflow,Google Cloud Dataflow,我将数据流与JavaSDK一起使用,版本为1.9.1。 我需要使用DataStoreIO从数据存储中读取某种数据,并创建一个PCollection。我使用TemplateRunner运行数据流作业。启动模板时,我需要读取的类型名称将通过PipelineOptions传入。也就是说,在图形构建时它是未知的 如何使用种类名称的ValueProvider创建种类表达式 如果在图形构建时知道这个名字,我可以这样做- KindExpression k = KindExpression.newBuilder

我将数据流与JavaSDK一起使用,版本为1.9.1。 我需要使用DataStoreIO从数据存储中读取某种数据,并创建一个PCollection。我使用TemplateRunner运行数据流作业。启动模板时,我需要读取的类型名称将通过PipelineOptions传入。也就是说,在图形构建时它是未知的 如何使用种类名称的ValueProvider创建种类表达式

如果在图形构建时知道这个名字,我可以这样做-

KindExpression k = KindExpression.newBuilder().setName("abc").build()
PCollection<Entity> myentities = pipeline.apply(DatastoreIO.v1().read().withProjectId("my-project").withQuery(Query.newBuilder().addKind(k).build()));
当我事先不知道名称时,如何构造查询。例如,TextIO有一个不用验证就可以使用的规定

PCollection<String> mergeRuleTemplateString = pipeline
            .apply(TextIO.Read.from(options.getInputFile()).withoutValidation());

DataStoreIO中是否有类似的内容?是的,但在1.9.1中没有-在2.0.0 JIRA中将对ValueProvider的支持添加到DataStoreIO中。请注意,目前仅通过.withLiteralGqlQueryValueProvider支持文字GQL查询