【问题标题】:Using TABLE_DATE_RANGE with more than 1 year's worth of tables将 TABLE_DATE_RANGE 与价值超过 1 年的表一起使用
【发布时间】:2014-08-03 05:17:12
【问题描述】:

我正在尝试使用 google bigquery 从带有日期通配符的表中选择数据。我希望能够使用 TABLE_DATE_RANGE 函数,但我需要查询较大的日期范围(> 1 年)。现在我的查询适用于一年的数据,但我得到的任何数据:

错误:TABLE_DATE_RANGE 错误:天数过多

#Fails
SELECT 
  system_id, sample_date, e_pv_array
FROM 
  (TABLE_DATE_RANGE(workspace.intervaldata, 
                    TIMESTAMP('2009-03-01'), 
                    TIMESTAMP('2010-03-04')))
WHERE
  system_id = 20006
  and e_pv_array is not null;

#Works
SELECT 
  system_id, sample_date, e_pv_array
FROM 
  (TABLE_DATE_RANGE(workspace.intervaldata, 
                    TIMESTAMP('2009-03-01'), 
                    TIMESTAMP('2010-03-03')))
WHERE
  system_id = 20006
  and e_pv_array is not null;

这只是 bigquery 的限制吗?或者有没有办法使用日期范围大于 1 年的表通配符?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    我也遇到过 TABLE_DATE_RANGE() 的问题。 这是一个可能的解决方法,假设您的表被命名为 workspace.intervaldata20090303 等:

    SELECT 
    system_id, sample_date, e_pv_array
    FROM 
    TABLE_QUERY(workspace, "integer(regexp_extract(table_id, r'intervaldata([0-9]+)')) BETWEEN 20090301 and 20100304")
    WHERE
    system_id = 20006
    and e_pv_array is not null;
    

    我有一个类似的场景(日期分区表),并且能够使用 TABLE_QUERY() 运行超过 2 年的数据查询而不会出错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 2012-05-18
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      相关资源
      最近更新 更多