BigQuery:表名缺少数据集,而请求中未设置默认数据集



这是BigQuery查询的问题。我知道这个查询缺少一个数据集名称,所以错误"表名";my_table";缺少数据集,而请求中未设置默认数据集">

select * from my_table;

将"my_tabale"更改为"my_dataset.my_table"将解决此问题。但是有人能帮我设置一个默认数据集吗。错误消息清楚地表明BigQuery有这样一个选项。

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

例如,对createQueryJob使用NodeJS APIhttps://googleapis.dev/nodejs/bigquery/latest/BigQuery.html#createQueryJob,你可以做类似的事情:

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();

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

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

相关内容

最新更新