Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 完成等待BigQuery查询,但从表中读取的内容不一致_Node.js_Google Bigquery_Google Api Nodejs Client - Fatal编程技术网

Node.js 完成等待BigQuery查询,但从表中读取的内容不一致

Node.js 完成等待BigQuery查询,但从表中读取的内容不一致,node.js,google-bigquery,google-api-nodejs-client,Node.js,Google Bigquery,Google Api Nodejs Client,我们看到了各种各样的错误,当我们从表中读取时,这些错误使插入看起来好像还没有完成。例如,我们在一个日期分区表中插入3天,有时在该表中读取2天 这些问题可能是由BigQuery延迟的一致性保证引起的吗?或者这很可能是我们代码中的某个问题 我们正在使用Nodejs客户端进行BigQuery。我们已经在queryJob中执行了insert查询,并在从表中读取之前侦听了要触发的complete事件。我们还尝试等待bigQuery.query,并得到了类似的结果 我们执行的一种插入类型: const qu

我们看到了各种各样的错误,当我们从表中读取时,这些错误使插入看起来好像还没有完成。例如,我们在一个日期分区表中插入3天,有时在该表中读取2天

这些问题可能是由BigQuery延迟的一致性保证引起的吗?或者这很可能是我们代码中的某个问题

我们正在使用Nodejs客户端进行BigQuery。我们已经在queryJob中执行了insert查询,并在从表中读取之前侦听了要触发的
complete
事件。我们还尝试等待bigQuery.query,并得到了类似的结果

我们执行的一种插入类型:

const query = `MERGE originalTable USING tempTable...`
const job = await bigQuery.createQueryJob(query)

await new Promise((resolve, reject) => {
    job.on(`complete`, () => resolve())
    job.on(`error`, (error: any) => reject(error))
})
另一种插入类型:

const loadOptions = {
    format: `JSON`,
    schema: schemaObjectToString(tableFields),
    createDisposition: `CREATE_IF_NEEDED`,
}
await bigQueryTable.load(filePath, loadOptions)
我们如何查询表:

bigQuery.createQueryStream(`SELECT COUNT (DISTINCT date) as count FROM table`)

在上面的代码中,我们有时会在MERGE语句中出现如下形式的并发错误:“由于并发更新,无法序列化访问”。在其他情况下,合并会很好地完成,但我们读取了错误的数据(例如,2天而不是3天)。

这似乎意味着您对表进行了并发修改。修改这些表的其他查询(或加载作业)是否与合并运行期间重叠?我们不希望同时进行修改,因为我们会按顺序更新表,并等待所有修改表的函数。您解决了吗?