Я бы сказал, Облачный поток данных Google - правильный продукт для вашего случая использования. Он используется именно для того, что вы описали: читать входные данные из разных источников (в вашем случае Pub / Sub), преобразовывать их и записывать в приемник (здесь BigQuery).
Поток данных работает с Пакетами и Потоковыми Конвейерами. В первом случае все данные доступны во время создания, а во втором - версия, которая вам нужна, которая непрерывно считывает данные из неограниченного источника (например, подписка Pub / Sub) и работает с данными, как только прибывает в трубопровод.
Кроме того, вам будет полезно, чтобы команда Dataflow недавно выпустила бета-версию некоторых шаблонов, которые вы можете использовать, чтобы упростить работу с Dataflow. В этом случае даже существует шаблон Cloud Pub / Sub to BigQuery , который можно использовать как есть, или изменить его исходный код (доступен в официальном репозитории GitHub ) чтобы добавить любое преобразование, которое вы хотите применить между Pub / Sub-read и BigQuery-write.
Обратите внимание, что последняя версия Dialogflow Java SDK основана на Apache Beam , который содержит множество документации и ссылок на код, которые могут вас заинтересовать: