使用 --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 的流缓冲区数据,因为一旦定义了特定的TIMESTAMP
或DATE
,数据就是"streamed directly to the partition"。
检查official documentation,您还可以找到您发布的链接中提到的摄取时间分区表的解决方案。
【讨论】:
以上是关于使用 --time_partitioning_field 查询流数据的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)