Java 多表的Pcollection

Java 多表的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

我有两个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"));
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,我将从下面两个选项中选择一个

  • 如果您没有太多的
    c_id
    s,我会将
    SELECT
    查询的结果作为一个侧面输入,并将其作为过滤器传递到表B的查找中
以下是将BigQueryIO查询结果用作辅助输入的代码片段:

  • 否则,您可以使用
    CoGroupByKey
    。例如
由于这两个表都可以被视为某些不同值的共享键,因此可以将它们合并到

c_id -> ([count_c_id, p_id], [c_name]]
然后你可以在这个“分组”的新PCollection上做任何你想做的事情。

从中,我认为你有两种方法来完成这种加入任务。根据您有多少唯一的
c_id
s,我将从下面两个选项中选择一个

  • 如果您没有太多的
    c_id
    s,我会将
    SELECT
    查询的结果作为一个侧面输入,并将其作为过滤器传递到表B的查找中
以下是将BigQueryIO查询结果用作辅助输入的代码片段:

  • 否则,您可以使用
    CoGroupByKey
    。例如
由于这两个表都可以被视为某些不同值的共享键,因此可以将它们合并到

c_id -> ([count_c_id, p_id], [c_name]]

然后你可以在这个“分组”的新PCollection上做任何你想做的事情。

你能告诉我如何编写sideinput的逻辑吗?是的,这里有一个代码片段,用于将BigQueryIO查询结果用作sideinput:你能告诉我如何编写sideinput的逻辑吗?是的,这里有一个代码片段用于将BigQueryIO查询结果用作sideinput: