我使用具有以下角色的服务帐户查询bigquery (通过databricks):
BigQuery Data Viewer
BigQuery Job User
BigQuery Metadata Viewer
BigQuery Read Session User查询是:
SELECT distinct(column_name) FROM `project.dataset.INFORMATION_SCHEMA.COLUMNS` where data_type = "TIMESTAMP" and is_partitioning_column = "YES"我实际上是通过Azure数据库查询的:
spark.read.format("bigquery")
.option("materializationDataset", dataset)
.option("parentProject", projectId)
.option("query", query)
.load()
.collect()但我得到了:
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Access Denied: Table project:dataset._sbc_f67ac00fbd5f453b90....: Permission bigquery.tables.updateData denied on table project:dataset._sbc_f67ac00fbd5f453b90.... (or it may not exist).",
"reason" : "accessDenied"
} ],添加BigQuery Data Editor之后,查询工作正常。为什么我需要写权限来查看这个元数据?我能给你更低的权限吗?
在文档中我看到了那个只需要数据查看器。,所以我不知道我做错了什么。
发布于 2021-06-24 11:51:19
如果没有指定特定的表名,BigQuery将所有查询结果保存到临时表中。
从文档中,需要以下权限。
bigquery.tables.create权限bigquery.tables.updateData将数据写入新表、覆盖表或将数据追加到表bigquery.jobs.create由于服务帐户已经具有BigQuery Job User角色,所以它能够运行查询,因此它需要BigQuery Data Editor角色来获得bigquery.tables.create和bigquery.tables.updateData权限。
https://stackoverflow.com/questions/68114321
复制相似问题