我正在开发一个Node.js程序。我们使用Node来每天操作Big Query中存储的数据。
每天我们都有大量的新数据(280 Go)。
如何在一天中对BigQuery发出请求并逐行传输结果?
现在,我们没有流。我们只需要一次请求所有数据。
我可以使用sql LIMIT关键字。但问题是BigQuery在成本计算中忽略了LIMIT。如果我们限制0,10。它探讨了当天的所有数据(280 Go)。同意限制10,10 ...
这是我目前的代码。
const BigQuery = require('@google-cloud/bigquery');
// ... Some code ...
this.bigQuery
.query(Exporter.enrichQueryWithOptions(`SELECT e.name FROM events))
.then(results => {
const rows = results[0];
console.log(rows);
})
.catch(err => {
console.error('ERROR:', err);
});
答案 0 :(得分:0)
正如人们所指出的,最好能在Bigquery SQL语句中处理所有内容。
但是,如果您必须处理应用程序中的数据。 Bigquery提供了tabledata.list API来直接从表中读取数据。
https://cloud.google.com/bigquery/docs/reference/rest/v2/tabledata/list
答案 1 :(得分:0)
最后,我只使用BigQuery Legacy SQL装饰器来选择我需要的时间间隔。所以,我无法获得我的大桌子的一部分,只为这部分付费。
https://cloud.google.com/bigquery/table-decorators
但请注意,您只能在过去7天的数据中使用装饰器!
答案 2 :(得分:0)
我认为这可能是您需要的:
https://googleapis.dev/nodejs/bigquery/latest/BigQuery.html#createQueryStream
该功能允许您构建查询并通过数据流使用它。