У меня есть следующая функция, которая выполняет параметризованные запросы к таблице. В качестве входных данных я получаю список идентификаторов, выполняю запросы, и в результате получаю список строк, где каждая строка содержит идентификатор и соответствующий город.
def query_dataset(data):
"""
query table in BigQuery - to run a parameterized quiries
input - list of IDs [1,2,3,4,5]
output - the fetching result ["1, aaa", "2, bbb" ...]
"""
query = "SELECT id, city FROM <project.table> WHERE id IN UNNEST(@get_id);"
query_params = [
bigquery.ArrayQueryParameter(
'get_id', 'INT64', data)
]
job_config = bigquery.QueryJobConfig()
job_config.query_parameters = query_params
query_job = client.query(query, location='US',
job_config=job_config) #API request-starts query
results = query_job.result() # Waits for job to complete.
messageBody = []
for row in results:
res = str(row.id) + "," + row.city
messageBody.append(res)
return messageBody
Теперь мне нужно оптимизировать процесс выборки, потому что даже использования параметризованных запросов недостаточно для производительности.
Есть ли способы, как оптимизировать процесс извлечения (функция выше)?