Я пытаюсь создать потоковый конвейер с Dataflow, который читает сообщения из темы PubSub и записывает сгруппированные результаты в таблицу BigQuery. Я не хочу использовать какой-либо шаблон. На данный момент я просто хочу создать конвейер в скрипте Python3, выполняемом из экземпляра виртуальной машины Google, чтобы выполнить процесс преобразования данных, поступающих из Pubsub (структура сообщений соответствует ожидаемой в таблице). В этом процессе я хочу сгруппировать по полям «A» и «B» и рассчитать общее количество вхождений, сумму поля «C» и среднее значение поля «D».
Опубликованные сообщенияв теме PubSub:
{"A":"Alpha", "B":"V1", "C":3, "D":12}
{"A":"Alpha", "B":"V1", "C":5, "D":14}
{"A":"Alpha", "B":"V1", "C":3, "D":22}
{"A":"Beta", "B":"V1", "C":2, "D":6}
{"A":"Beta", "B":"V1", "C":7, "D":19}
{"A":"Beta", "B":"V2", "C":3, "D":10}
{"A":"Beta", "B":"V2", "C":5, "D":12}
Вывод с этими записями должен выглядеть примерно так:
{"A-B":"AlphaV1", "Occurs":3, "sum_C":11, "avg_D":16}
{"A-B":"BetaV1", "Occurs":2, "sum_C":9, "avg_D":12.5}
{"A-B":"BetaV2", "Occurs":2, "sum_C":8, "avg_D":11}
Как определить функцию в Apache Beam для того, чтобы сделатьэтот процесс?
Спасибо!