Java 多表的Pcollection
我有两个bigquery表 表AJava 多表的Pcollection,java,google-bigquery,google-cloud-dataflow,Java,Google Bigquery,Google Cloud Dataflow,我有两个bigquery表 表A c_id count_c_id p_id 表B id c_name p_type c_id 根据表A中的列,我需要使用DF管道从表B中查找详细信息 PCollection<TableRow> tableRowBQ = pipeline.apply(BigQueryIO.Read .named("Read").fromQuery("select c_id,count_c_id,p_id from TableA")); PCol
c_id count_c_id p_id
表B
id c_name p_type c_id
根据表A中的列,我需要使用DF管道从表B中查找详细信息
PCollection<TableRow> tableRowBQ = pipeline.apply(BigQueryIO.Read
.named("Read").fromQuery("select c_id,count_c_id,p_id from TableA"));
PCollection tableRowBQ=pipeline.apply(BigQueryIO.Read
.named(“Read”).fromQuery(“从表A中选择c_id、计数c_id、p_id”);
我的要求是基于此查询返回的c_id,我应该能够使用pcollection从TableB获取c_名称。我找不到任何pcollection示例,用于从一个表中迭代字段并使用该字段从另一个表中获取数据
谷歌团队分享的示例作为参考。
.从中,我认为您有两种方法来完成这种加入任务。根据您有多少唯一的c_id
s,我将从下面两个选项中选择一个
- 如果您没有太多的
s,我会将c_id
查询的结果作为一个侧面输入,并将其作为过滤器传递到表B的查找中李>SELECT
- 否则,您可以使用
。例如CoGroupByKey
c_id -> ([count_c_id, p_id], [c_name]]
然后你可以在这个“分组”的新PCollection上做任何你想做的事情。从中,我认为你有两种方法来完成这种加入任务。根据您有多少唯一的c_id
s,我将从下面两个选项中选择一个
- 如果您没有太多的
s,我会将c_id
查询的结果作为一个侧面输入,并将其作为过滤器传递到表B的查找中李>SELECT
- 否则,您可以使用
。例如CoGroupByKey
c_id -> ([count_c_id, p_id], [c_name]]
然后你可以在这个“分组”的新PCollection上做任何你想做的事情。你能告诉我如何编写sideinput的逻辑吗?是的,这里有一个代码片段,用于将BigQueryIO查询结果用作sideinput:你能告诉我如何编写sideinput的逻辑吗?是的,这里有一个代码片段用于将BigQueryIO查询结果用作sideinput: