我已经获得了以下Python代码来检索BigQuery数据集。然后,我在Jupyter Notebook on kaggle上执行两个查询working_query和bad_query。唯一的区别是第3行后添加了空格...posts_questions` as q
使bad_query失败,并显示以下消息
Query exceeded limit for bytes billed: 10000000000. 24460132352 or higher required.
我知道启用了成本控制,但是在这里看不到这可能是个问题。我将来如何避免此类陷阱,有人可以解释这个问题?
from google.cloud import bigquery
client = bigquery.Client()
dataset_ref = client.dataset("stackoverflow", project="bigquery-public-data")
dataset = client.get_dataset(dataset_ref)
safe_config = bigquery.QueryJobConfig(maximum_bytes_billed=10**10)
answers_query_job = client.query(working_query, job_config=safe_config)
answers_query_job.to_dataframe()
working_query = """
SELECT a.id, a.body, a.owner_user_id
FROM `bigquery-public-data.stackoverflow.posts_answers` AS a
INNER JOIN `bigquery-public-data.stackoverflow.posts_questions` AS q
ON q.id = a.parent_id
WHERE q.tags LIKE '%bigquery%'
"""
bad_query = """
SELECT a.id, a.body, a.owner_user_id
FROM `bigquery-public-data.stackoverflow.posts_answers` AS a
INNER JOIN `bigquery-public-data.stackoverflow.posts_questions` AS q
ON q.id = a.parent_id
WHERE q.tags LIKE '%bigquery%'
"""
您可能已启用成本控制:documentation
此错误意味着您的查询要扫描的字节数超过了“已计费的最大字节数”中设置的限制。
您能可靠地重现此错误吗?看起来查询中的空格与BigQueryrols中的成本竞争没有任何关系。当数据更大或引入成本控制时,这可能只是巧合。
我已经使用您的两个查询执行了一些测试,并且它们以相同的方式执行。