async doTask()

in marketing-analytics/activation/data-tasks-coordinator/src/tasks/bigquery/query_task.js [73:111]


  async doTask() {
    const sql = await this.getSql_();
    const options = {
      query: sql,
      params: {},
    };
    if (this.config.destination) {
      const { table, writeDisposition } = this.config.destination;
      /** @const {BigQueryTableConfig} */
      options.destinationTable = table;
      options.writeDisposition = writeDisposition;
      if (table.tableId.includes('$')) {
        options.timePartitioning = {
          type: 'DAY',
          requirePartitionFilter: false,
        };
      }
    }
    try {
      const [job] = await this.getBigQueryForTask().createQueryJob(options);
      const { jobReference } = job.metadata;
      const { jobId } = jobReference;
      const status = job.metadata.status.state;
      const sqlInfo = this.getSqlInfo_();
      this.logger.info(`Job[${jobId}] status ${status} on query [${sqlInfo}]`);
      const appendedParameters = { jobReference };
      if (options.destinationTable) {
        appendedParameters.destinationTable = options.destinationTable;
      }
      return {
        jobId,
        parameters: this.appendParameter(appendedParameters),
      };
    } catch (error) {
      this.logger.error(`Error in query to BigQuery:`, error);
      this.logger.error(options.query);
      throw (error);
    }
  }