【发布时间】:2022-01-17 08:20:29
【问题描述】:
我一直在玩弄用 SQL 制作一个包含日历的数据模型。
我现在遇到的问题是枚举周数(作为稍后为可视化目的排序它们的一种方式,例如“轻松编码选择过去 4 周”)。
这在 Excel 中被证明很容易,但我想要一种从查询中构建它的方法,因为每次数据模型运行时都会重新创建日历(创建/替换表)。
到目前为止,我已经尝试过(但在年份变化后失败)是这样的(我不知道如何从我当前正在创建的字段中选择上一条记录):
CASE WHEN week_of_year <> coalesce(lag(WEEKOFYEAR("DATE"),1) over (order by "DATE"),1)
THEN lag(WEEKOFYEAR("DATE"),1) over (order by "DATE") +1
ELSE lag(WEEKOFYEAR("DATE"),1) over (order by "DATE")
所需的GROUPED输出是这样的(表示日历应该有每天的数据):
| YEAR | WEEK_OF_YEAR | week_order |
|---|---|---|
| 2000 | 49 | 50 |
| 2000 | 50 | 51 |
| 2000 | 51 | 52 |
| 2000 | 52 | 53 |
| 2001 | 1 | 54 |
| 2001 | 1 | 55 |
| 2001 | 2 | 56 |
| 2001 | 3 | 57 |
【问题讨论】:
标签: sql snowflake-cloud-data-platform dbt