Код: Выделить всё
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)
Код: Выделить всё
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 Из этого журнала я понимаю, что я превышает максимальную длину списка для этого параметра «значения», но не обнаружил, что это включено в документацию BigQuery...
Какова максимальная длина списка BigQuery ArrayQueryParameter параметр «значения»? Есть ли обходной путь для выполнения запроса с длиной списка 300 000 или более?
Заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/747 ... -parameter