Я читаю документацию по лучу и некоторые вопросы stackoverflow / ответы , чтобы понять, как мне написать сообщение pubsub в bigquery. На данный момент у меня есть рабочий пример получения protobuf
сообщений и возможности decode
их. код выглядит следующим образом
(p
| 'ReadData' >> apache_beam.io.ReadFromPubSub(topic=known_args.input_topic, with_attributes=True)
| 'ParsePubsubMessage' >> apache_beam.Map(parse_pubsubmessage)
)
В конце концов, я хочу написать декодированное сообщение pub-sub в bigquery. все атрибуты (и декодированные байтовые данные) будут иметь сопоставление столбцов один к одному.
Так что меня смущает то, что должен parse_pubsubmessage
вернуть. На данный момент он возвращает пользовательский класс со всеми полями, т.е.
class DecodedPubsubMessage:
def __init__(self, attr, event):
self.attribute_one = attr['attribute_one']
self.attribute_two = attr['attribute_two']
self.order_id = event.order.order_id
self.sku = event.item.item_id
self.triggered_at = event.timestamp
self.status = event.order.status
Это правильный подход для выполнения этого потока данных? То, что я думал, что я буду использовать это возвращенное значение, чтобы написать в bigquery, но из-за продвинутой функции python я не могу понять, как это сделать. Вот ссылка пример , на которую я смотрел. Из этого примера я не уверен, как мне сделать карту lambda
на возвращенном объекте для записи в bigquery.