求助: pivot@r 列转行 /concat 聚合时 nulls 的显示问题

集算器中列转行对应的功能是 pivot@r,在市面上其它语言中也叫逆透视 unpivot。比如有以下数据想实现列转行的操作,第一行属于表头:

A B C D E
1 ID Criteria1 Criteria2 Criteria3 Criteria4
2 101 2
3 102 7
4 123 93
5 123 8
6 123 6
7 123 17
8 182 6
9 182 9
10 182 39
11 182 120
12 182 147

用 pivot@r 可以很简洁地实现列转行,比如在 Excel 插件中呈现的效果如下 (IDE 一样的效果):

imagepng

观察发现,有空值 (真空 null) 的行也会一一对应显示,如上图中右侧带底纹处所示。如果不想要这些空值所在的行,需多写一步,用 select 过滤选出,如下:

imagepng

这两种显示效果都可以,不能说哪种显示就一定更好,完全看当时的需求。

我想求助的是,在 pivot@r 时能否让用户自己选择显示空行或者不显示空行?

目前市面上能用 unpivot 的应用中,多数是默认不显示 null 值对应的行的,比如,在 Power Query 中 unpivot 之后显示的效果是这样的:

imagepng

此时如果需要 null 值对应的行,那必须在 unpivot 之前处理一下 null 值,把 null 变成假空。

在某些 SQL 中,倒是会提供是否包含 nulls 的关键词,比如以下 SQL 默认是忽略 nulls 的:

imagepng

如果要包含 nulls,要写上 unpivot include nulls,如下所示:

imagepng

没有说哪一种更好,完全看需求。我的想法是 SPL 在列转行时可否有一个让用户自己选择是否显示 nulls 的选项?pivot@r().select() 不能说不方便,只是多写了一步,总觉得有点不爽。

关于 null 值,我再补充一点,当用 concat 时,是否可以忽略 null 的问题,比如,用以下数据做 groups 聚合,此时 concat 是聚合函数,而数据源中包含了 null,合并之后是这样的:

imagepng

因为存在 null 值干扰,分隔符会重复出现。或者用 group,此时可以用 ~.fx() 可以用 select 过滤:

imagepng

如果 concat 时可以有选项让用户自行选择是否忽略 null,是不是会好一些?

恳请大佬们得闲时帮忙看看上述两种情况,这样的 request 是不是我又 tmd 多事了😄 🙏