【发布时间】:2020-06-03 21:22:28
【问题描述】:
当我在具有 BigQuery/User 权限的服务帐户下执行查询时,我得到空结果,没有错误,但结果是空的。如果我将服务帐户的权限更改为 BigQuery/Admin,我会得到正确的结果。如果权限不足,我希望弹出错误而不是空结果。 我无法发布查询。查询由一个 DECLARE/SET 运算符和一个带有 ARRAY_AGG 和子查询的 SELECT 组成。
【问题讨论】:
标签: google-bigquery
当我在具有 BigQuery/User 权限的服务帐户下执行查询时,我得到空结果,没有错误,但结果是空的。如果我将服务帐户的权限更改为 BigQuery/Admin,我会得到正确的结果。如果权限不足,我希望弹出错误而不是空结果。 我无法发布查询。查询由一个 DECLARE/SET 运算符和一个带有 ARRAY_AGG 和子查询的 SELECT 组成。
【问题讨论】:
标签: google-bigquery
问题似乎与permissions 有关,但可能比我最初想象的要复杂。
为了验证我的理论,我创建了一个具有 BigQuery 用户角色的服务帐户,并从一个新实例运行以下命令:
gcloud auth activate-service-account [ACCOUNT] --key-file=[KEY_FILE]
bq query --nouse_legacy_sql 'SELECT
COUNT(*)
FROM
`bigquery-public-data`.samples.shakespeare'
它运行良好并返回了正确的结果。
我通过运行检查了我是否使用了正确的帐户:
gcloud auth list
此外,在文档中它声明“对于您创建的任何作业,您自动拥有该作业的 bigquery.jobs.get 和 bigquery.jobs.update 等效权限。”这意味着,如果您能够运行查询,您应该能够为其检索结果。
在使用 BQ 用户服务帐户时,您能否检查查询公共数据是否会为您产生正确的结果或仍然是空白结果?
注意:我意识到在 bq 查询调用中指定的服务帐户是 deprecated,所以我必须重新检查是否正确
【讨论】:
bigquery.jobs.create 权限异常,如果假设DataViewer 用户角色但在这种情况下为空结果?这是设计使然并记录在某处吗?