使用 --time_partitioning_field 查询流数据

Posted

技术标签:

【中文标题】使用 --time_partitioning_field 查询流数据【英文标题】:Query Streaming Data Using --time_partitioning_field 【发布时间】:2018-06-11 11:57:19 【问题描述】:

我目前正在探索如何仅定期查询表中的流式缓冲区数据以近乎实时地生成性能报告,并找到了以下 *** 链接:

How to query for data in streaming buffer ONLY in BigQuery?

但是,当前的分区类型是使用--time_partitioning_field实现的

使用以下查询强制从表中查询所有数据:

SELECT * FROM `<project>.<data-set>.<time-partitioned-streaming-table>`
where <time-partitioning-field> is null

查询没有显示任何差异,因为理想情况下,峰值流缓冲区是 @ ~60MB/小时

有没有办法只查询这种分区的流数据?

【问题讨论】:

【参考方案1】:

我相信这应该可行(但它是旧版 SQL)

#standardSQL
 CREATE TABLE test.newtable (transaction_id INT64, transaction_date DATE)
 PARTITION BY transaction_date
 OPTIONS(
   partition_expiration_days=3,
   description="a table partitioned by transaction_date"
 )

#legacySQL
select * from [test.newtable$__UNPARTITIONED__] 

【讨论】:

仅支持按时间分区字段的分区#standardSQL..Error: Querying tables partitioned on a field is not supported in Legacy SQL Logan:你运行什么查询 - 什么时候出现这个错误? 我在答案中添加了带有时间分区字段的表的创建语句。此查询没有产生任何错误。 它有效.. 我从表查询中得到了常规选择 的错误.. 认为它不再支持旧版 sql.. 谢谢:-) 有没有办法使用标准 sql 获取流缓冲区数据?【参考方案2】:

无法查询partioned tables 的流缓冲区数据,因为一旦定义了特定的TIMESTAMPDATE,数据就是"streamed directly to the partition"。

检查official documentation,您还可以找到您发布的链接中提到的摄取时间分区表的解决方案。

【讨论】:

以上是关于使用 --time_partitioning_field 查询流数据的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)