让决策更智能
新一代智能数据分析平台

如何自定义周(clickhouse版本)

观小可发表于:2021年07月14日 11:36:08更新于:2021年07月15日 16:57:08

需求背景:

有时候常规周(周一到周日)不能满足我们的业务场景,需要自定义周来实现。

(该版本适用于clickhouse)


例如:如何实现周四到周三为一周?

实现方案:

  1. 使用函数先获取到该日期是星期几,参考函数如下

    toDayOfWeek, 将Date或DateTime转换为包含一周中的某一天的编号的UInt8(周一是1, 周日是7)类型的数字。

  2. 使用函数获取该日期是属于第几周

    toWeek(日期[,模式]) ,返回Date或DateTime的周数。两个参数形式可以指定星期是从星期日还是星期一开始,以及返回值应在0到53还是从1到53的范围内。如果省略了mode参数,则默认 模式为0。

  3. 做判断,如果要实现周四-周三为自定义周,那么每周的周四 五 六 周日 这四天都要推迟到下周



  具体步骤:

       1. 新建计算字段 ,返回星期几 toDayOfWeek([日期])

       2.新建计算字段, 正常周 toWeek([日期])

       3.新建自定义字段 ,自定义周 

        case when [返回星期几] in(4,5,6,7) then ([正常周]+1) else [正常周] end


  效果如下:

 00160ee5a0e00f856220a924bdba173

  

    注意事项: 初始的日期字段必须是Date 或是DateTime类型的,如果不是的话 需要做先做转换,

  toDate/toDateTime函数的日期和日期时间格式定义如下:

YYYY-MM-DD
YYYY-MM-DD hh:mm:ss

           本文参考文档如下: https://clickhouse.tech/docs/zh/sql-reference/functions/date-time-functions/

    您需要登录后才可以回复