【问题标题】:How to filter the a column with isoweek values in BigQuery in StandardSQL?如何在标准 SQL 的 BigQuery 中过滤具有 iso 周值的列?
【发布时间】:2021-12-16 17:31:51
【问题描述】:

我有下表,我只想过滤过去 4 周 - 挑战:基础表的日期范围必须是 2018 - 2021 年,以便可以填充所有其他列。过滤日期对我不起作用,因为这样我就无法获得上一年列的数据。

如何过滤表格,以便始终获得从今天开始的最近 4 周的数据,同时获得所有其他列的数据?

+---------+---------------+---------------+---------------+---------------+--+
| isoweek | sessions_2021 | sessions_2020 | sessions_2019 | sessions_2018 |  |
+---------+---------------+---------------+---------------+---------------+--+
| 44      |        534260 |        156450 |        476604 |        539819 |  |
+---------+---------------+---------------+---------------+---------------+--+
| 45      |        514197 |        133285 |        481228 |        491133 |  |
+---------+---------------+---------------+---------------+---------------+--+
| 46      |        487541 |        122930 |        448876 |        485281 |  |
+---------+---------------+---------------+---------------+---------------+--+
| 47      |        502791 |        169920 |        267869 |        491630 |  |
+---------+---------------+---------------+---------------+---------------+--+
| 48      |        430129 |        144058 |          null |        459051 |  |
+---------+---------------+---------------+---------------+---------------+--+
| 49      |        410885 |        127426 |          null |        468970 |  |
+---------+---------------+---------------+---------------+---------------+--+
| 50      |        183323 |        147254 |          null |        438814 |  |
+---------+---------------+---------------+---------------+---------------+--+
| 51      |          null |        122491 |          null |        455786 |  |
+---------+---------------+---------------+---------------+---------------+--+
| 52      |          null |         70972 |          null |        478501 |  |
+---------+---------------+---------------+---------------+---------------+--+
| 53      |          null |          null |         52712 |          null |  |
+---------+---------------+---------------+---------------+---------------+--+

【问题讨论】:

标签: google-bigquery


【解决方案1】:

如果输入是您上面的示例表,您可以尝试以下操作:

with sample_data as (
    select isoweek from unnest(generate_array(1,52,1)) as isoweek
)

select isoweek
from sample_data
where isoweek between extract(isoweek from date_sub(current_date(),INTERVAL 4 WEEK)) 
    and extract(isoweek from current_date());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-12
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    相关资源
    最近更新 更多