Из документации Cloud DataFlow , я думаю, у вас есть два подхода для выполнения задачи такого рода JOIN .В зависимости от того, сколько у вас уникальных c_id
, я бы выбрал один из двух вариантов ниже:
- , если у вас не много
c_id
с, я бы обработал результат от вашегоSELECT
запрос в качестве побочного ввода и использование его в качестве фильтра для перехода к поиску в таблице B;
Вот фрагмент кода для использования результата запроса BigQueryIO в качестве побочного ввода: ApplyБоковой ввод для операции BigQueryIO.read в Apache Beam .
- В противном случае вы можете использовать
CoGroupByKey
.Например,
Table A:
c_id -> count_c_id, p_id
Table B
c_id -> c_name
Поскольку обе таблицы можно рассматривать как общий ключ для некоторых различных значений, вы можете CoGroup их в
c_id -> ([count_c_id, p_id], [c_name]]
тогда вы можете делать все, что вы хотите, на этой «сгруппированной» новой PCollection.