SPL 能否实现以周一为起始日期的周数统计

大佬们,有个需求得麻烦你们看一下,我想返回某个日期在其对应年度的第几周,或者对应月份的第几周,以周一为每周的第一天返回一个整数。目前,SPL 能返回以周日为每周第一天的周数,举例如下:


A B C D E
1 日期 2023/1/1 2023/1/2 2023/1/3 2023/1/4
2 2023/1/5 2023/1/6 2023/1/7 2023/1/8 2023/9/1
3 2023/9/2 2023/9/3 2023/9/4 2023/9/5 2023/9/6
4 2023/9/7 2023/9/8 2023/9/9 2023/9/10
5 =[A1:E4].(if(#>1,date(~,“yyyy/MM/dd”),~)).record(1) 返回日期对应年度的第几周和对应月份的第几周
6 =A5.derive(string( 日期,“E”): 星期,string(日期,“w”): 年度第几周 (周日),string(日期,“W”): 月度第几周 (周日))

可以看到,string(日期,“w"或者"W”)返回的年 (月) 度周数是以周日为每周的起始日期计算的:

imagepng

SPL 中的 string 函数能不能实现以每周一为开始日期返回年 (月) 度的周数,如下所示,我用了 interval@1 计算跟年初月初相隔了多少个周一,这样写不是很直接:

A
6 =A5.derive(string( 日期,"E"): 星期,1+interval@1(pdate@y( 日期), 日期 ): 年度第几周 ( 周一),1+interval@1(pdate@m( 日期), 日期 ): 月度第几周 ( 周一))

imagepng

EXCEL 里计算周数的时候,有个 WEEKNUM 函数,它的 2 参可以让用户选择每周起始于哪一天,如下:

imagepng

还有,SPL 的日期比较函数 deq@w,时间精确到周的比较,那什么样的算一周,这里也是有关系的。再有一个,pdate@w, 返回日期所在周的周日,视同每周的开始,而 pdate@we 返回的是周六,视同每周的结束,最好是有一个选项,也就是说,凡是精确到周的,都要有一个合适的对周的定义,起始日期是周一还是周日。

当然,我描述的不够全面,关于日期时间的维度分析,有点小复杂,比如按周统计时,跨年的时候咋弄,还有一些企业的财年也是不一样的,有按自然日历为财年的,也有 3 月 1 日开始到下年 2 月底为一个财年的,也有 7 月 1 日到下年 6 月底为一个财年的,五花八门。也就是说,对于财年或者会计年度,每年的第一天不一定是 1 月 1 日,每年的最后一天也不一定是 12 月 31 日,最好也有一个相关的选项。

以上需求,恳请 SPL 大佬们得闲时考虑一下,先谢为敬!!!