【问题标题】:Run delete query from python in BigQuery在 BigQuery 中从 python 运行删除查询
【发布时间】:2021-10-03 00:07:37
【问题描述】:

我正在使用以下 python 代码删除 bigquery 表中的一些行:

from google.cloud import bigquery

bigquery_client = bigquery.Client(project='my-project')

query_delete = f"""
    delete from `my_table` where created_at >= '2021-01-01'
"""
print(query_delete)
# query_delete
job = bigquery_client.query(query)
job.result()
print("Deleted!")

但是,从 python 执行此操作时,行似乎没有被删除。我错过了什么?

【问题讨论】:

  • 您是否尝试过从 Cloud Console 运行相同的查询?它在那里工作吗?
  • 是的,当然,它可以从控制台工作
  • 好的。您是否尝试过从 Python 客户端运行非删除查询?包括仅仅查询和尝试修改插入/更新等记录?
  • 我假设这是您分配 query_delete 但随后将 query 传递给工作的错字?
  • 其他一些可能适用于此处的常见问题:此项目是否启用了计费?服务凭证已分配数据集和 bigquery 所有者级别权限?

标签: python google-bigquery


【解决方案1】:

我认为下面的代码 sn-p 应该适合你。你应该通过query_delete 而不是query

from google.cloud import bigquery

bigquery_client = bigquery.Client(project='my-project')

query_delete = f"""
  delete from `my_table` where created_at >= '2021-01-01'
"""

print(query_delete)
job = bigquery_client.query(query_delete)
job.result()
print("Deleted!")

或者你可以试试下面的格式化查询

query_delete = (
  "DELETE from my_table "
  "WHERE created_at >= '2021-01-01'"
)

【讨论】:

    【解决方案2】:

    您可能需要在 BigQuery 表中启用标准 SQL。

    https://stackoverflow.com/a/42831957/1683626

    它应该设置为默认值,如official documentation 中所述,但也许您将其更改为旧版 sql。

    在 Cloud Console 和客户端库中,标准 SQL 是默认设置。

    【讨论】:

      猜你喜欢
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      相关资源
      最近更新 更多