我正在尝试使用Python来读取BigQuery中的视图。我之前使用过pandas-gbq的0.14.0版本,并通过以下操作使用服务帐户进行身份验证:
import pandas as pd
from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file(PATH_TO_JSON)
pd.read_gbq("""
SELECT
*
FROM BQ_VIEW,
project_id="PROJECT_ID",
dialect="standard",
private_key=credentials
)
其中PATH_TO_JSON、BQ_VIEW和PROJECT_ID已填写相关信息。这没有任何问题。然而,我现在正在另一个项目中工作,该项目使用的是pandas-gbq的0.15.0版本,其中private_key argument
已被弃用,并已被credentials
取代。在the guide中,我尝试了以下操作:
import pandas as pd
from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file(PATH_TO_JSON)
pd.read_gbq("""
SELECT
*
FROM BQ_VIEW,
project_id="PROJECT_ID",
dialect="standard",
credentials=credentials
)
但是,当我运行它时,我得到了错误:
- 禁止访问:403拒绝访问:BigQuery BigQuery:全局文件模式时权限被拒绝 *
有没有人能告诉我我哪里错了?
谢谢!
1条答案
按热度按时间2nbm6dog1#
这个问题与论据无关。您面临的错误是由于对服务帐户的IAM权限不正确。看起来你正在尝试查询一个引用BigQuery之外的表的视图。本文档说明,如果外部表引用Cloud Storage文件,则需要授予服务帐户storage.objectViewer角色。