0

我在一个不属于我的 BigQuery 表上共享,并且我bigquery.jobs.create对包含该表的数据集没有权限。我成功列出了数据集中的所有表,但是当我尝试使用以下代码查询表时:

tables.map(async (table) => {
        const url = `https://bigquery.googleapis.com/bigquery/v2/projects/${process.env.PROJECT_ID}/queries`;
        const query = `SELECT * FROM \`${table.id}\` LIMIT 10`;
        const data = {
          query,
          maxResults: 10,
        };
        const reqRes = await oAuth2Client.request({
          method: "POST",
          url,
          data,
        });
        console.log(reqRes.data);
      });

我收到以下错误:

Error: Access Denied: Project project_id: <project_id>
gaia_id: <gaia_id>
: User does not have bigquery.jobs.create permission in project <project_id>.

我不能要求这些权限,在这种情况下我该怎么办?

重要提示: 我尝试在 GCP 中运行相同的查询并成功运行,但似乎它创建了一个临时表克隆,然后查询该表而没有原始表:

在此处输入图像描述

4

1 回答 1

0

这里有两个项目:您的项目和包含该表的项目。

您当前在 URL 中使用的 ${process.env.PROJECT_ID} 中创建作业,请尝试指定您自己的项目,您可以在其中创建作业。

您需要修改查询以包含表的项目以允许 BigQuery 找到它,因此请确保 ${table.id} 包含项目(表 - 不是您的)、数据集和表。

于 2021-04-26T03:32:23.937 回答