在 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 中查询 Bigtable 列值?
在 BigQuery 中使用 dryRun 区分标准和旧版 SQL 查询的替代方法?
如何在 BigQuery 中使用标准 SQL 查询 GA RealtimeView?