问答 查看内容
返回列表

如何正确处理跨年周显示错误的问题

274 1
发表于 2024-5-29 19:23:15 | 查看全部 阅读模式
求解答

评论1

Guandata_b25a5ebc楼主Lv.1 发表于 2024-5-29 19:24:29 | 查看全部
**场景:** 在数据集或者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([日期]),'周')

注意:如果是在卡片编辑的场景,建议直接使用系统自带的日期-周。

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2024 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去回复 去发帖 返回顶部
快速回复 返回顶部 返回列表