Максимальная длина списка параметра значений BigQuery ArrayQueryParameterPython

Программы на Python
Anonymous
Максимальная длина списка параметра значений BigQuery ArrayQueryParameter

Сообщение Anonymous »

Я пытаюсь отправить запрос BigQuery через клиентскую библиотеку API Python, используя параметры запроса, в частности ArrayQueryParameter.

Код: Выделить всё

from google.cloud import bigquery

client = bigquery.Client()

query = """
SELECT
*
FROM
`bigquery-public-data.geo_us_boundaries.cbsa`
WHERE
name IN UNNEST(@metros)
"""

# Problematic list length
LIST_LENGTH = 300000

# Example values list
values = ["Los Angeles-Long Beach-Anaheim, CA" for i in range(LIST_LENGTH)]

# Generate BigQuery job config
job_config = bigquery.QueryJobConfig(
priority=bigquery.QueryPriority.BATCH,
query_parameters=[
bigquery.ArrayQueryParameter("metros", array_type="STRING", values=values),
]
)

# Generate BigQuery query job
query_job = client.query(
query,
job_config=job_config,
)

# Obtain results
results = query_job.result()
for row in results:
print(row)
Когда длина списка в параметре «значения» ArrayQueryParameter равна 300000 или больше (приблизительно), запрос не завершается, и если я проверю журналы BigQuery я получаю следующий журнал ошибок:

Код: Выделить всё

HTTPSConnectionPool(host='bigquery.googleapis.com', port=443): Max retries exceeded with url: /bigquery/v2/projects/{...}/jobs?prettyPrint=false (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:2396)'))) 2.05274303188268 
Но при длине списка 200000 или меньше проблем нет, и результаты запроса возвращаются.
Из этого журнала я понимаю, что я превышает максимальную длину списка для этого параметра «значения», но не обнаружил, что это включено в документацию BigQuery...
Какова максимальная длина списка BigQuery ArrayQueryParameter параметр «значения»? Есть ли обходной путь для выполнения запроса с длиной списка 300 000 или более?
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/747 ... -parameter

Вернуться в «Python»