设为首页
收藏本站
切换到宽版
社区
人才交流
观远BI合伙人计划
登录
问答
›
查看内容
返回列表
发布新帖
日期筛选器粒度为周时,最近有效时间选数据集日期字段无法取到最新日期的所在周
45
1
观小凡
Lv.9
发表于
昨天 15:16
|
查看全部
阅读模式
日期筛选器粒度为周时,最近有效时间选数据集日期字段无法取到最新日期的所在周,怎么处理呢?貌似只要粒度不是“日”,默认值选最近有效时间都无法正常展示。
快速回复
回复
举报
电梯直达
评论
1
观小凡
楼主
Lv.9
发表于
昨天 15:18
|
查看全部
解决方案:在筛选器或者数据集里新建计算字段,把日期转换为周的文本格式,用于展示默认值,然后联动卡片里的日期类型字段。
非直连数据集参考以下Spark函数,直连数据集请使用数据库对应写法:
年:year([日期])
月:date_format([日期],"yyyy-MM")
季:concat(year([日期]),' Q',quarter([日期]))
周:date_format([日期],"yyyy 'W'ww")
复制代码
联动效果如下:
注意事项
:
1. 季和周函数返回的实际值(2025 W37),和筛选器展示的格式(2025-37周)不一致,但不影响使用;但如果计算字段使用 date_format([日期],"yyyy-ww '周'")返回2025-37周,反而无法正常展示和联动卡片。
2. 最新日期周数小于10时,date_format([日期],"yyyy 'W'ww")返回的周数带前导零,例如‘2025 W09’,不符合筛选器默认的格式,筛选器会展示为空,但卡片联动不受影响。但是如果去掉前导零,改为date_format([日期],"yyyy 'W'w"),则会导致周数大于等于10时,系统返回的最大周数永远为第九周‘2025 W9’。这是因为该函数返回的是文本类型,文本判断大小的逻辑和日期数值不一样,此时'9'>'37'。如果想要筛选器一直展示正常,则建议如果数据集行数不是太多的情况下,在数据集里新建计算字段,使用窗口函数获取最大日期并判断所在周是否小于10。参考以下Spark函数写法。窗口函数比较耗性能,计算较慢,不建议用于大数据量数据集,不建议在筛选器里直接创建。
case when weekofyear(max([日期])over(partition by 1))<10
then date_format([日期],"yyyy 'W'w")
else date_format([日期],"yyyy 'W'ww")
end
复制代码
回复
顶
举报
返回列表
发布新帖
回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
观小凡
Lv.9 管理员
主题
59
回帖
198
积分
956
+ 关注
Ta的主页
微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
产品
观远BI
BI Copilot
移动分析
智能ETL
报表分析
多维分析
解决方案
消费品
泛零售
金融
互联网
先进制造
资源与服务
资源下载
直播干货
BI行业资讯
观远学堂
帮助中心
技术支持
伙伴与生态
生态合作伙伴
观远BI合伙人计划
关于我们
公司介绍
荣誉奖项
行业资质
市场活动
Copyright © 2001-2026
观远社区
版权所有
All Rights Reserved.
浙 ICP 备15006424号-3
去回复
去发帖
返回顶部
快速回复
返回顶部
返回列表