7.11 同类数据不连续时使用相邻行相邻区间计算 (有数据缺失的比上期、比去年同期)
有年季度销售数据如下:
数据中缺失了 2020 年第一季度的数据,计算比上期时直接跳过和 2019 年第四季度比,计算比去年同期时把 2020 年第一季度的数据当零(在 D1 中计算):
=spl("=E(?1).new(Sales-Sales[-1]:LinkRelative,Sales-~[:-1].select@z1(Year==get(1,Year)-1 && Quarter==get(1,Quarter)).Sales:YOY)",A1:C20)
get(1,Year) 表示取上一层函数的当前成员的 Year 列值
~[:-1] 表示从第一个成员到上一个成员为止的集合
帮你早下班 - esProc 桌面版与 Excel 数据处理
7.10 同类数据连续时使用相邻行相邻区间计算 (比上期、比去年同期)
7.12 同类合并
大佬,此文中 SPL 语句里的这部分 "~[:-1].select@z1()" 能改一下写法吗?
~[:-1] 这部分会越来越多,数据行数一多就会很慢,即使用 select@z1 减少了遍历次数,也会很慢。
数据量大再说别的办法,这些示例是教人用这些基本方法的。会碰到大数据量场景的用户,通常已经是熟手了,自己想得出其它办法了。
我能想出的办法只有缩小这个滑动窗口,减少遍历量,如下所示,这样写在 excel 里 90 多万行是没有问题的,回车敲完 5 秒左右:
或者用 group@o 分组,这样的话上一个同期那个窗口比较好找:
用序表自己跟自己 join 也行。
大神,你有心情的时候能不能指点一下数据量再大一些时怎么写?🙏 🙏
E(?).derive(Sales-Sales[-1]:LR, 0:YOY).sort( Quarter,Year).run(YOY=Sales-if(Quarter==Quarter[-1] && Year==Year[-1]+1, Sales[-1],0)).sort(Year,Qarter)
😂 😂 谢谢老贼出手,牛👍 👍 👍 我学习一下。