如何将 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 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何将参数发送到 HTTPService 调用以作为组件重用

如何将参数发送到 npm test [重复]

如何将参数发送到 Azure Runbook api

如何在表单提交时将参数发送到路由

如何使用烧瓶将多个参数发送到路由?

如何将 jchararray 作为参数发送到 C 函数