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