【问题标题】:BigQuery: Table name missing dataset while no default dataset is set in the requestBigQuery:表名缺少数据集,而请求中未设置默认数据集
【发布时间】:2021-04-09 23:00:24
【问题描述】:

这是 BigQuery 查询的问题。 我知道此查询缺少数据集名称,因此出现错误 "Table name "my_table" missing dataset while no default dataset is set in the request."

select * from my_table;

将“my_tabale”更改为“my_dataset.my_table”将解决此问题。 但是有人可以帮助我设置默认数据集。 错误消息清楚地表明 BigQuery 有这样的选项。

【问题讨论】:

  • 可悲的是,至于今天似乎没有办法通过浏览器控制台做到这一点

标签: google-bigquery


【解决方案1】:

简短的回答是:SET @@dataset_id = 'whatever';

但是,这是一个脚本命令,因此您必须将 SQL 查询包含在 BEGIN ... END 块中。注意分号。脚本为您提供了一些额外的灵活性。另一方面,它会阻止控制台在估算处理成本时做有趣的事情。

【讨论】:

    【解决方案2】:

    根据您使用的 API,您可以在运行 BigQuery 作业时指定 defaultDataset 参数。有关jobs.query api 的更多信息,请访问https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query

    例如,使用 createQueryJob https://googleapis.dev/nodejs/bigquery/latest/BigQuery.html#createQueryJob 的 NodeJS API,您可以执行类似的操作:

    const options = {
      keyFilename: process.env.GOOGLE_APPLICATION_CREDENTIALS,
      projectId: process.env.GOOGLE_APPLICATION_PROJECT_ID,
      defaultDataset: {
        datasetId: process.env.BIGQUERY_DATASET_ID,
        projectId: process.env.GOOGLE_APPLICATION_PROJECT_ID
      },
      query: `select * from my_table;`
    }
    
    const [job] = await bigquery.createQueryJob(options);
    let [rows] = await job.getQueryResults();
    
    

    【讨论】:

    • 感谢@bitnahian 的回答。我只是使用 BigQuery 控制台来运行此查询。它不与任何其他特定的 BQ api 一起使用。我有多个数据集,正在寻找将当前数据集设置为默认数据集的选项。
    猜你喜欢
    • 2015-03-29
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2016-08-24
    • 2012-09-11
    • 2016-04-05
    • 1970-01-01
    相关资源
    最近更新 更多