Мне нужно загрузить данные из Firebase в большой запрос, и для этого у меня есть этот код, но при загрузке после успешного извлечения и сглаживания необходимых данных из Firebase выдает ошибки.Вот выдержка из кода:
import json
import firebase_admin
from firebase_admin import credentials
from firebase_admin import db
from google.cloud import bigquery
from google.cloud import storage
import os
from google.oauth2 import service_account
ref=db.reference('patients')
snapshot = ref.order_by_key().get()
for key, val in snapshot.items():
snapshot[key]["keyid"]=key
kw=val
dictfilt = lambda x, y: dict([ (i,x[i]) for i in x if i in set(y) ])
wanted_keys = ("sex","email","keyid","customer_id","created_at")
result = dictfilt(kw, wanted_keys)
serialized= json.dumps(result, sort_keys=True)
'''#JSON file creation #I should not go for this step I think!
# [SAVE THE OUTPUT IN A TEXT FILE]
f = open('bqData111.json','a')
f.write(serialized+'\n')
f.close()'''
---------------------------------------------------------------------------
##Successfully got the required data in json(newline delimeted) that BQ requires.
----------------------------------------------------------------------------
##Streaming into bigquery
client = bigquery.Client()
dataset_id = 'Data_set'
# For this sample, the table must already exist and have a defined schema
table_id = 'firebase_data' # replace with your table ID
table_ref = client.dataset(dataset_id).table(table_id)
table = client.get_table(table_ref) # API request
rows_to_insert = {serialized}# <---------->I have doubt here
#for i in rows_to_insert.items():
errors = client.insert_rows(table, rows_to_insert) # API request
assert errors == []
До получения данных из Firebase все в порядке.Но потоковая часть становится сложной для меня.Необходимые данные в формате json хранятся в сериализованном виде.И в строке, где я назначил сериализованный для row_to_insert, я думаю, что я получаю проблемы.Как решить эту проблему?Есть идеи и информация?Спасибо!