gpt4 book ai didi

python - 通过 BigQuery python api 查询联合表 (Google Drive)

转载 作者:太空宇宙 更新时间:2023-11-04 04:49:37 24 4
gpt4 key购买 nike

(这里有很多类似的帖子,但不幸的是,我在这里或 Goolge 上的任何地方都找不到我的错误的答案)

我正在尝试查询 BigQuery 中的联合表,该表指向云端硬盘中的电子表格。

我运行了以下命令来为 gcloud 创建默认应用程序凭据:

$ gcloud auth application-default login

但这不包括 Drive 到范围内,所以我收到以下错误消息(这是有道理的):禁止访问:403 访问被拒绝:BigQuery BigQuery:未找到具有 Google Drive 范围的 OAuth token 。

然后我尝试使用显式驱动器范围进行身份验证:

$ gcloud auth application-default login --scopes=https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/bigquery

之后,当我尝试使用 bigquery python api 时出现以下错误:

“禁止访问:403 访问被拒绝:BigQuery BigQuery:访问未配置。Drive API 之前未在项目 764086051850 中使用或已禁用。通过访问 https://console.developers.google.com/apis/api/drive.googleapis.com/overview?project=764086051850 启用它,然后重试。如果您最近启用了此 API,请等待几分钟后,该操作就会传播到我们的系统并重试。”

上面的项目编号在我们的组织中不存在,提供的链接指向一个页面,上面写着:API“drive.googleapis.com”不存在或您无权访问它

默认项目肯定启用了 Drive API,因此错误消息没有多大意义。我还可以使用 bq query_string 命令从终端查询表。

我目前不知道如何进一步调试它,有人建议吗?

配置:
谷歌云 SDK 187.0.0
Python 2.7
谷歌云 0.27.0
谷歌云大查询 0.29.0

最佳答案

可能有 issues使用默认凭据时。但是,您可以使用服务帐户,将凭据保存在 JSON 文件中并添加必要的范围。我做了一个快速测试,这段代码对我有用:

from google.cloud import bigquery
from google.oauth2.service_account import Credentials

scopes = (
'https://www.googleapis.com/auth/bigquery',
'https://www.googleapis.com/auth/cloud-platform',
'https://www.googleapis.com/auth/drive'
)
credentials = Credentials.from_service_account_file('/path/to/credentials.json')
credentials = credentials.with_scopes(scopes)
client = bigquery.Client(credentials=credentials)

query = "SELECT * FROM dataset.federated_table LIMIT 5"
query_job = client.query(query)
rows = query_job.result()
for row in rows: print(row)

如果您收到 404 not found 错误是因为您需要与服务帐户共享电子表格(查看权限)

关于python - 通过 BigQuery python api 查询联合表 (Google Drive),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48672690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com