将数据流式传输到 bigquery 仅返回部分数据

Posted

技术标签:

【中文标题】将数据流式传输到 bigquery 仅返回部分数据【英文标题】:Streaming Data into bigquery only returns partial data 【发布时间】:2018-11-05 15:58:35 【问题描述】:

我正在将数据流式传输到 bigquery 并且日志根本没有记录任何问题,当我运行 "SELECT * FROM datatable WHERE _PARTITIONTIME = TIMESTAMP("2018-11-05") LIMIT 1000" 它只返回 16 行,行数据随着新数据的流入而不断变化,但只返回16行。

Streaming 缓冲区统计显示缓冲区中有行。

我大约 10 小时前开始直播,所以我假设会有一些数据可以访问。

我在这里有点茫然,因为我看不到错误

这是收集到的一些样本数据

https://docs.google.com/spreadsheets/d/1Svm6cDWzSvD0RHGo_O5J16UDvqFfDAK5irNki5nYtos/edit?usp=sharing

【问题讨论】:

您能否提供有关如何流式传输数据的详细信息?我想验证您是否经常覆盖前 16 行。 我正在使用这个link 似乎覆盖了,Streaming 缓冲区统计信息一直显示插入日志中的实际行,但实际表保持不变。 有些数据在 Streaming Buffer 中而不在表中的事实应该是无关紧要的。这是内部的,数据一插入(到流缓冲区或表中)就应该被查询。 - 查询分区表的详细信息cloud.google.com/bigquery/docs/querying- partitioned-tables - 一段时间内数据可能会停留在UNPARTITIONED分区cloud.google.com/bigquery/docs/… 【参考方案1】:

来自the documentation:

当流式传输到分区表时,流式缓冲区中的数据具有 _PARTITIONTIME 伪列的 NULL 值。

您应该将过滤器更改为:

WHERE _PARTITIONTIME IS NULL OR _PARTITIONTIME = TIMESTAMP "2018-11-05"

这将包括指定日期的数据以及当前在流缓冲区中的日期。

【讨论】:

我已经尝试过了,但问题仍然存在,我可以看到数据进入,但随后在第 16 行下降。我正在使用 Mark Edmondson ga-bq-stream - github.com/MarkEdmondson1234/ga-bq-stream 如果没有更多细节,很难提供有意义的建议。我不知道在这种情况下“丢弃”是什么意思,也不知道您是如何看到数据进来的。考虑更新您的问题以更具体。 在日志中,我可以看到成功插入了具有唯一用户 ID 的行。当我查询 bigquery 时,我可以看到出现的特定行。但是随着新条目的插入,该行就会消失。最大行数保持在 16,表格不会随着新条目的添加而增加。

以上是关于将数据流式传输到 bigquery 仅返回部分数据的主要内容,如果未能解决你的问题,请参考以下文章

使用java将json数据流式传输到Bigquery中。不使用作业加载数据

使用 GET 方法将数据流式传输到 Google BigQuery?

将数据流式传输到BigQuery

使用 Java 将 JSON 流式传输到 BigQuery

使用现有架构将表数据从一个 BigQuery 表流式传输到另一个

将 JSON 流式传输到 Bigquery