【发布时间】:2018-08-18 20:54:06
【问题描述】:
我一直在尝试从包含 google 表格数据的临时表(表定义)中进行查询,但在 code.gs 中不断出现错误。以下是我的代码:
function test(){
var projectId = 'projectId';
var datasetId = 'datasetId';
var tableId = 'tableId';
var sheet_url = 'the_url_of_google_sheet';
var tableName = 'sheet_tab';
var tableProps = {
externalDataConfiguration:{
sourceUris: [sheet_url],
googleSheetOptions:{
skipLeadingRows: 1
},
sourceFormat: 'GOOGLE_SHEETS',
autoDetect: true
}
}
var tableDef = {};
tableDef[tableName] = tableProps;
var sql = 'SELECT * FROM ' +tableName+';';
var jobConfig = BigQuery.newJobConfigurationQuery();
jobConfig.destinationTable = {projectId : projectId, datasetId : datasetId,
tableId: tableId};
jobConfig.query = sql;
jobConfig.writeDisposition = 'WRITE_APPEND';
jobConfig.tableDefinitions = tableDef;
var queryR = BigQuery.Jobs.query(jobConfig, projectId)
}
错误消息是“表名”无法解析,数据集名称丢失。
【问题讨论】:
-
一般来说,您需要提供收到的确切错误消息,并指出哪一行导致错误。对于这种情况,我相信您的问题是您试图连接一个 sql 字符串和一个对象 (
tabledef),而不仅仅是 BigQuery 表标识符。 -
实际上我找不到任何示例,我只是根据我从google api的表定义页面获得的理解写的。关于生成的 sql,我如何找出问题所在,因为我无法在大查询中运行它 - 一旦我运行它就会创建一个临时表。
-
还只是进一步更新了代码 - 这是我在编写其余部分之前首先尝试开始工作的整个功能。 cloud.google.com/bigquery/external-data-drive#temporary-tables - 提及临时表以及如何定义表定义。
-
编辑您的帖子以包含当前错误的 MCVE。
-
更新了代码和当前错误。似乎它没有将 tableName 识别为外部数据源(临时表)并要求数据集。我正在进一步检查可能是什么问题。
标签: google-apps-script google-bigquery