Google cloud dataflow 如何在运行时使用ValueProviders为SpanRio分配表和列?

Google cloud dataflow 如何在运行时使用ValueProviders为SpanRio分配表和列?,google-cloud-dataflow,apache-beam,google-cloud-spanner,Google Cloud Dataflow,Apache Beam,Google Cloud Spanner,我有一个用例,在这个用例中,我必须从一个扳手表中选择数据并转储到BigQuery 这里的问题是,对于批处理作业,只有在运行时才能知道要选择的表和列的名称 数据流的span似乎在运行时不接受表和列。请参考以下代码以更好地理解: p.apply(SpannerIO.read().withSpannerConfig(spannerConfig) .withTable("tablename") .withColumns(list or ar

我有一个用例,在这个用例中,我必须从一个扳手表中选择数据并转储到BigQuery

这里的问题是,对于批处理作业,只有在运行时才能知道要选择的表和列的名称

数据流的
span
似乎在运行时不接受表和列。请参考以下代码以更好地理解:

p.apply(SpannerIO.read().withSpannerConfig(spannerConfig)
                .withTable("tablename")
                .withColumns(list or array of columns))

它只接受字符串,不接受
ValueProviders
。如何进行此操作?

是的,span.Read的withColumn和withTable方法默认情况下不接受值提供程序

是否可以在函数外部编写代码以获取表名和列名,然后在运行时将它们作为字符串列表传递到withTable和withColumn中

如果它们可以作为命令行参数传递,请考虑使用.< /P>


这是一个简单的例子。可以从Cloud Paner中找到更多关于使用数据流连接器的文档。

是的,SpanRio的withColumn和withTable方法。默认情况下,Read不接受ValueProvider

是否可以在函数外部编写代码以获取表名和列名,然后在运行时将它们作为字符串列表传递到withTable和withColumn中

如果它们可以作为命令行参数传递,请考虑使用.< /P>


这是一个简单的例子。可以找到更多关于使用Cloud Panner中的数据流连接器的文档。

要访问运行时值,您需要在上一步中使用
ReadAll
转换并构建
ReadOperation
的实例


请参见示例。

要访问运行时值,您需要在上一步中使用
ReadAll
转换并构建
ReadOperation
的实例


参见示例。

我使用了Mairbek建议的读取操作

p.apply(创建.ofProvider(options.getMyParamValueProvider(),StringUtf8Coder.of())
.apply(MapElements.via)(新的SimpleFunction(){
@凌驾
公共读取操作应用(字符串值){
返回ReadOperation.create()
.withTable(“TableName”)。withColumns(值);
}
}))
.apply(spanrio.readAll().withSpannerConfig(span配置));

我使用了Mairbek建议的读取操作

p.apply(创建.ofProvider(options.getMyParamValueProvider(),StringUtf8Coder.of())
.apply(MapElements.via)(新的SimpleFunction(){
@凌驾
公共读取操作应用(字符串值){
返回ReadOperation.create()
.withTable(“TableName”)。withColumns(值);
}
}))
.apply(spanrio.readAll().withSpannerConfig(span配置));

否,我将无法执行此操作,因为我将创建代码模板,并且无法将运行时值直接用作字符串。是否尝试将表名和列名作为运行时参数传递给模板?下面是一个导出扳手数据库的示例模板:这将把提供的数据库中的所有表作为Avro文件导出到GCS。正如我在问题陈述中所述,我需要选择“选定数据”甚至不是在运行时给出名称的整个表,也不能将数据转储到BigQuery而不是文件。不,我将无法这样做,因为我将创建代码模板,并且无法将运行时值直接用作字符串。是否尝试将表名和列名作为运行时参数传递到模板?下面是一个导出扳手数据库的示例模板:这将把提供的数据库中的所有表作为Avro文件导出到GCS。正如我在问题陈述中所述,我需要提取“选定数据”,甚至是在运行时提供名称的整个表,并将该数据转储到BigQuery而不是文件。