在Google Colab中使用来自R的bigrquery对Bigquery进行身份验证

t9eec4r0  于 2023-10-13  发布在  Go
关注(0)|答案(2)|浏览(101)

我尝试在Google Colab工作表(使用R运行时)中访问存储在Google BigQuery上的自己的数据表,方法是运行以下代码:

# install.packages("bigrquery")
library("bigrquery")
bq_auth(path = "mykeyfile.json")
projectid = "work-366734"
sql <- "SELECT * FROM `Output.prepared_data`"

运行

tb <- bq_project_query(projectid, sql)

导致以下访问被拒绝错误:
拒绝访问:BigQuery BigQuery:权限被拒绝,而globbing文件模式。[accessDenied]
为了说明,我已经创建了一个服务帐户(在Google Cloud IAM和admin下),为其分配了角色“BigQuery Admin”和“BigQuery Data Owner”,并提取了上面提到的json Key文件“mykeyfile.json”。(建议here
此外,我将服务帐户的角色添加到数据集(BigQuery - Sharing -AddPrincipal),但仍然显示相同的错误。
当然,我已经重置/删除并重新初始化了运行时。
我是否错过了在其他地方提供额外权限?谢谢你,谢谢
我不确定这是否有意义,但我只是为了以防万一而添加它:我还尝试了身份验证过程,

bq_auth(use_oob = TRUE, cache = FALSE)

这将打开一个额外的窗口,我必须允许访问(使用我的Google帐户,也是数据所有者)并输入授权代码。虽然这些步骤有效,但 bq_project_query(projectid,sql) 仍然给出相同的Access Denied错误。
尝试使用python和以下命令授权访问Google BigQuery,工作完美(使用相同的帐户/凭据)。

from google.colab import auth
auth.authenticate_user()
project_id = "work-366734"
client = bigquery.Client(project=project_id)
df = client.query( '''
   SELECT
     *
   FROM
     `work-366734.Output.prepared_data`
 ''' ).to_dataframe()
wko9yo5t

wko9yo5t1#

我建议尝试在没有服务帐户的情况下运行此操作,而是通过笔记本授权流程。
首先,在您的notebook中,您需要安装bigrquery(看起来您已经安装了)。

install.packages("bigrquery")
library(bigrquery)

之后,您可以运行以下代码作为示例查询:

# Store the project ID
projectid = "PROJECT_ID"

# Set your query
sql <- "SELECT * FROM `bigquery-public-data.usa_names.usa_1910_current` LIMIT 10"

# Run the query; this returns a bq_table object that you can query further
tb <- bq_project_query(projectid, sql)

# Store the first 10 rows of the data in a tibble
sample <-bq_table_download(tb, n_max = 10)

# Print the 10 rows of data
sample

这将提示您选择是否存储您设置的凭据,然后将提供一个URL供您使用凭据登录(在tidyverse.org),然后将生成的代码粘贴到笔记本中。
一旦完成,您可以查询到您的心脏的内容!
来源:https://cloud.google.com/vertex-ai/docs/workbench/user-managed/use-r-bigquery

4xrmg8kj

4xrmg8kj2#

我也有同样的问题。对我来说,一旦我在凭据之前运行库(tidyverse),它就工作了,在我看来,凭据是通过那个包工作的。

相关问题