【已解决】SPL 使用过程中遇到的问题

 

1、IDE 脚本编辑网格界面问题

  • 不支持中英文字体分开设置,字体设置成英文字体后中文显示为方块,不可识别,不能使用常用的编程字体如 Consolas。[已解决]
  • IDE 代码网格里没有字体平滑,代码的阅读体验略差。但值网格、网格变量等里面却支持平滑的字体(版本是 20230117 更新后的 20231208)[无影响]
  • 双击网格横线,行高不会自适应,但双击网格竖线可以列宽自适应。[已解决]好像有行高自适应的配置

解决方案:1、字体不影响使用;2、锯齿不影响使用;3、行高自适应有配置项。

2、导入 Excel 字段名换行问题

  • 导入 Excel 数据时候,表字段名如果有换行,在导入的时候,字段名必须敲个回车进行物理换行,不能使用 \n 转义等方案,导致一行公式变成了多行。虽然 splx 支持,但另存为 spl 脚本重新打开会直接解析错误。[已解决]

比如 splx 中:

=file(A1).xlsimport@t(字段一,字段\\n二;"Sheet1",3).rename(字段\\n二:字段二)

只能写成(物理换行,且 spl 中不支持):

= file(A1).xlsimport@t(字段一,字段
二;"Sheet1",3).rename(字段
二:字段二)

解决方案:使用 #i+ 去掉 @t 来避免字段名换行问题。

3、自定义函数开发 API

  • 自定义函数的一些 API 没看到文档(也可能我没找到),对于不同优先级的参数的处理也很迷惑(比如:;, 的参数),没找到相关文档,看 Param 的使用也云里雾里,isleaf、getsub、getsubsize、getleafexpression 等 API 都不是很清晰,没有系统化的概念。[已解决]
  • 另外二次开发的自定义函数,**Cli 目录下的 jar 包里的其他静态方法不能使用 invoke 进行调用,不知道是不是因为有用不同的 classloader [无影响]

解决方案:1、已找到文档:SPL:自定义函数;2、无影响。

4、序表 select 筛选

  • 序表的 select 函数筛选条件似乎不支持 in 判断,比如:【姓名 in (“A”, “B”)】或【姓名 in [“A”, “B”]】的写法不支持,只能写 【姓名 ==“A” || 姓名 ==“B”】多条件或使用【[“A”, “B”].contain(姓名)】等不太直观的写法。 [已解决]

解决方案:使用 序列.contain(字段)

5、使用 SQL 查询序表的问题

  • 当在数据库连接配置中连接某个数据库后(比如 demo,不是使用 connect),会导致网格中【$select * from {序表}】这样的查询报错。[已解决]

解决方案:使用 $()select…

6、非规范数据的拆分支持

  • 有时候职场中收集的数据,某一列是不规范的,比如开发提交工作任务的时候,任务编号一列有多个任务编号拼接在一起,目前还没看到可以将数据拆分成多行的支持。目前是使用 regex 或 split 手工把复合字段拆成序列,再根据序列生成多行数据,插入到新表来解决。[已解决]

*解决方案:使用 news 进行笛卡尔积运算,参考:7.25 CrossApply 运算

7、httpfile 的 header 处理

  • httpfile 对 header 处理是以 K:V 的形式写在函数中的,但是 header 很多或 V 很长的时候(比如 jwt 的 token),函数看起来就非常的“肥胖”,目前通过先定义 record,将 record 转 json 字符串在去掉首尾 {},以宏的方式写到 httpfile 的函数里,但宏只能解析一次,是否 header 参数可以支持 record。[待定]