【问题标题】:How can I send the dryRun parameter to pandas.read_gbq function如何将 dryRun 参数发送到 pandas.read_gbq 函数
【发布时间】: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 我仍然可以取回数据

标签: python pandas google-bigquery


【解决方案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!
猜你喜欢
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 2013-12-20
  • 2020-11-28
  • 1970-01-01
相关资源
最近更新 更多