**场景:** 在数据集或者ETL里使用函数** _ concat(year([日期]),'年第',weekofyear([日期]),'周')_**
取日期的所在周。跨年周,例如2021-01-01实际上是2020年第53周,但返回结果会变成2021年第53周。
【**解决方案** 】:利用当周**周四** 的日期,获取跨年周的年份数据。原理:Spark 使用ISO-8601标准对周进行编号:如果包含1月1日的一周(从**周一起** 算)在新一年中天数超过3天,则为新一年第1周;否则,它是上一年的最后一周。所以跨年这一周的周四所在年份,就是这一周所属的年份。函数语法如下:
concat(year(date_add(trunc([日期],'week'),3)),'年第',weekofyear([日期]),'周')
注意:如果是在卡片编辑的场景,建议直接使用系统自带的日期-周。 |