在Google BigQuery中,如何在createQueryJob()成功后获得1个工作的getQueryResults()?

时间:2018-08-31 09:39:31

标签: google-bigquery

我将Google Cloud Big查询服务与Node.js客户端版本1.0x一起使用。我通过功能createQueryJob()成功创建了工作。此后,在使用getQueryResults()进行回调创建作业响应时,我使用了事件侦听,例如:

 const options = {
        query: sqlQuery,
        useLegacySql: true,
        dryRun: true
    };
    // this.bigquery is an constructor.
    // this.bigquery = new BigQuery({
    //    projectId: this.projectId,
    //   keyFilename: this.keyFile,
    // });
    this.bigquery.createQueryJob(options, function (err, job) {
        if (!err) {
            // job id such as 731bf23b-5044-4842-894b-4d9f77485d9b
            function manualPaginationCallback(err, rows, nextQuery, apiResponse) {
                if (nextQuery) {
                    job.getQueryResults(nextQuery, manualPaginationCallback);
                } else {
                    return Promise.resolve(rows);
                }
            }

            return job.getQueryResults({
                maxResults: 100000,
                autoPaginate: false,
                // timeoutMs : 60000
            }, manualPaginationCallback);
        }
    });

但是抛出错误

  

{“错误”:{“代码”:404,“消息”:“未找到:工作   [myProjectId]:731bf23b-5044-4842-894b-4d9f77485d9b“,”错误“:[{”消息“:”不   找到:工作   [myProjectId]:731bf23b-5044-4842-894b-4d9f77485d9b“,” domain“:” global“,” reason“:” notFound“}],” status“:” NOT_FOUND“}}}

参考

https://cloud.google.com/nodejs/docs/reference/bigquery/1.0.x/BigQuery#createQueryJob https://cloud.google.com/nodejs/docs/reference/bigquery/1.0.x/Job#getQueryResults

我怎么了?任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

您正在请求中设置Range("AD1", Range("AD1").End(xlDown)).Value = Evaluate("round(" & Range("AD1", Range("AD1").End(xlDown)).Address & ",4)") 选项,该选项仅验证作业,而实际上不运行查询。 Dryrun作业不会持续存在,这就是为什么在后续请求中找不到您的原因。