如何将 dryRun 参数发送到 pandas.read_gbq 函数
Posted
技术标签:
【中文标题】如何将 dryRun 参数发送到 pandas.read_gbq 函数【英文标题】:How can I send the dryRun parameter to pandas.read_gbq function 【发布时间】:2017-09-21 12:55:45 【问题描述】:我想在运行 bigquery 以加载到 pandas 数据框之前从 bigquery 中估算查询大小。 如何将dryRun 参数与read_gbq 函数一起使用?
【问题讨论】:
如果您将'dryRun': True
传递给**kwargs
,会发生什么情况?
@ElliottBrossard 运行时df = gbq.read_gbq(query, private_key=cred, project_id=project, dialect='standard', kwargs='dryRun': True)
df 有数据。
gbq.read_gbq(query, private_key=cred, project_id=project, dialect='standard', 'dryRun': True)
怎么样
@FelipeHoffa 假设您的意思是 dryRun=True 我仍然可以取回数据
【参考方案1】:
据我所知,你确实不能这样做。
如果您检查 pandas BigQuery Connector 的工作原理,您会发现它只更新作业的 query
设置。
dryRun
在查询定义之外,实际上处于同一级别。
我不确定为什么会这样(也许 pandas-gbq 的创建者不希望 pandas 直接替代您可以在 BQ 中运行的所有类型的作业)。不过,我已经在他们的存储库上启动了这个issue,您可以关注它来查看他们对此的输入。
作为一种可能的解决方法,我建议您使用官方 python API 与 GCP 交互,具体来说,您可以使用 BigQuery 客户端。安装它应该很容易:
pip install --upgrade google-cloud-bigquery
然后你可以运行:
from google.cloud.bigquery import Client
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'path/to/your/key.json'
query = """your query"""
bc = Client()
job = client.run_sync_query(query)
job.use_legacy_sql = False
job.dryRun = True
job.run()
print(job.total_bytes_processed)
【讨论】:
谢谢@willian-fuks!以上是关于如何将 dryRun 参数发送到 pandas.read_gbq 函数的主要内容,如果未能解决你的问题,请参考以下文章