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

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

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/小时

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

【问题讨论】:

    标签: google-cloud-platform google-bigquery


    【解决方案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,您还可以找到您发布的链接中提到的摄取时间分区表的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多