在 bigquery 中使用标准 sql 查询缓冲区/未分区数据

Posted

技术标签:

【中文标题】在 bigquery 中使用标准 sql 查询缓冲区/未分区数据【英文标题】:Querying buffer/unpartitioned data using standard sql in bigquery 【发布时间】:2020-07-02 21:05:35 【问题描述】:

(我根据How do I query the streaming buffer in BigQuery if the _PARTITIONTIME field isn't available with Standard SQL猜测我的问题没有简单的解决方案,所以我会“增强”它)


我使用时间戳字段(不是提取时间分区)将数据流式传输到 Bigquery 的分区和聚集表中。 我想要一个始终查看最后一小时数据、表中已有数据以及缓冲区中的数据的视图。 由于该表不是摄取时间分区表,因此没有伪列_PARTITIONTIME/DATE,因此无法使用它来获取缓冲区数据。 我发现的唯一方法是使用旧版 SQL: SELECT * FROM [dataset.streaming_data$__UNPARTITIONED__] 这对我来说还不够好,因为即使我将其保存为视图,我也无法从标准 SQL 查询中引用旧版 SQL 视图。 知道如何实现这一目标吗?


我正在考虑的另一个想法 - bigquery 可以有一个外部数据源(使用EXTERNAL_QUERY),我可以使用标准 SQL 进行查询。 解决方案可能是单独数据库(例如 PostgreSQL Cloud SQL)上的一些“临时”表,它只有 1 小时的数据,并且没有 bigquery 的缓冲机制。 我认为这是一个糟糕的解决方案,但我想它可能会起作用...... 你怎么看?

【问题讨论】:

查询结果应该已经包含缓冲区中的任何内容 - 您是否对此进行了测试? 哇!谢谢 !太棒了 - 我很烦恼在没有“分区”的情况下不执行查询,以至于我一直在“循环”我已经知道的东西,没有检查。 【参考方案1】:

感谢@Felipe Hoffae 我刚刚发现我什么都不用做 :-) 如果 WHERE 子句中包含数据,则缓冲数据已在任何 SQL 查询中可用...

【讨论】:

以上是关于在 bigquery 中使用标准 sql 查询缓冲区/未分区数据的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:使用标准 SQL 查询多个数据集和表

如何在 BigQuery 标准 SQL 中查询 Bigtable 列值?

在 BigQuery 中使用 dryRun 区分标准和旧版 SQL 查询的替代方法?

如何在 BigQuery 中使用标准 SQL 查询 GA RealtimeView?

无法在 python 中对 bigquery 运行标准 SQL 查询

如何让 BigQuery 的 API 使用标准 SQL 进行查询?