1. 准备工作

 

1.1 下载与安装

使用 SPL 的免费桌面版就可以了。

下载地址:https://www.raqsoft.com.cn/download/desktop-download

下载后按照向导操作安装即可,安装完毕,运行 SPL IDE,界面如下:

点击 Tool/Options, 配置主目录

配置完主目录后,本文档中用到的所有数据文件和脚本文件只要放置于主目录下,则脚本中引用时均可不必指定目录名,脚本更简洁易读。

1.2 网格式编程

在 SPL IDE 主界面上点击 File/New,可以看到一个类 Excel 的网格式界面如下:

SPL 采用类 Excel 的网格式编程,这是一种创新的数据计算方式,它将传统的文本代码编写方式转变为直观的二维网格布局。这种编程模式特别适合处理复杂的数据计算任务,具有以下显著特点:

  • 直观可视:计算逻辑以网格形式展现,每个单元格独立又相互关联
  • 模块化设计:每个单元格可视为独立计算单元,便于维护和复用
  • 顺序可控:通过网格布局自然体现计算顺序,逻辑清晰可见
  • 即时反馈:每个单元格计算结果即时显示,调试过程直观高效

1.2.1 所见即所得的计算界面

在 SPL 的网格界面中,每个单元格的代码和计算结果可以同时呈现。编写代码后无需运行整个程序,可以只计算并显示当前单元格的结果。这种即时反馈机制极大提升了开发效率。

如上图,在 A1 单元格中键入 =3+5 ,然后选中 A1 单元格,点鼠标右键,点击 Calculate active cell 或键 Alt+Enter,即可计算当前选中的单元格。

这里的表达式 =3+5 和 Excel 比较像,常规 Excel 支持的四则运算在这里都可以直接运行。不妨尝试一下其它的四则运算,体会一下两者的相似之处。

界面查看结果:在网格中,每个单元格右侧会直接显示该单元格的计算结果,包括标量值、表格数据或图形输出,可以一目了然地掌握每个计算步骤的输出状态。

知识点:Excel 和 SPL 的异同

相同点:

  • 都是网格式界面
  • 支持常规四则运算表达式
  • 可以只计算单个单元格

不同点:

  • Excel 在单元格中键入完表达式按回车或鼠标离开,即会自动计算当前单元格;SPL 则必须选中当前单元格点鼠标右键,点击 Calculate active cell 或键 Alt+Enter 才会计算。
  • Excel 单元格的计算结果直接显示在单元格中,SPL 则显示在界面的右侧。

1.2.2 单元格命名与变量化使用

单元格命名

SPL 采用与 Excel 类似的网格坐标系统来标识和引用单元格,每个单元格由其列标(字母)和行号(数字)唯一确定

示例:

  • A1:第 A 列第 1 行的单元格
  • B3:第 B 列第 3 行的单元格
  • AA100:第 AA 列第 100 行的单元格

单元格引用:

1. 直接坐标引用

在 A2 单元格中引用 A1 的值

知识点:

单元格可在其他单元格中作为变量被引用或赋值,从而少了很多为变量命名的烦恼,对于一些有规律的数据或者变量,直接引用单元格而不需要另外命名会非常方便。

2. 区域引用

计算 A1 到 B4 这片单元格的和

知识点:Excel 和 SPL 的异同

相同点:

  • 单元格的命名规则一致
  • 用 A1:B4 表示 A1 到 B4 这片矩形单元格区域
  • 可以用 sum 函数对单元格片区进行聚合运算

不同点:

  • Excel 中对单元格片区求和的表达式语法为 =sum(A1:B4),SPL 中为 =sum([A1:B4]) 或 [A1:B4].sum()

1.2.3 独立的计算单元

每个单元格都是独立的计算单元,支持:

  • 简单计算
  • 复杂数据处理
  • 条件分支
  • 循环处理

单元格计算结果会自动传递给依赖它的下游单元格,形成完整的数据流。

1.2.4 单元格计算顺序

SPL 网格的计算顺序遵循从左到右、从上到下的规则:

从上图中 [A1:B4] 的返回值可以看出,单元格的计算顺序是从左到右、从上到下。

知识点:Excel 和 SPL 的不同

Excel 中不能在单元格中单独显示 A1:B4 这样的数据集合,必须聚合成单个值才可以展现;SPL 中可以在单元格里展现 =[A1:B4] 这样的数据集合,且该数据集合是有次序的,上图红框里的 Index 列就是数据的序号,在 SPL 中将这样有序的数据集合称为序列

SPL 的网格式编程重新定义了数据处理的体验,将编程的精确性与电子表格的直观性完美结合,为您提供了一种更高效、更可控的数据计算解决方案。

1.3 本文档用到的数据文件

点击下载

1.4 一个最简单的分析案例

从 sales.csv 中读取销售数据,按销售员分组统计销售数量,并按结果排序,结果写回 salesGroupSum.csv 文件中

A
1 =file(“sales.csv”).import@tc(sales,quantity)
2 =A1.groups(sales;sum(quantity):totalQuantity)
3 =A2.sort(totalQuantity:-1)
4 =file(“salesGroupSum.csv”).export@tc(A3)

A1 从 sales.csv 文件中读取 sales、quantity 列的数据。

A2 将 A1 中读取的数据按 sales 分组汇总统计 quantity。

A3 将 A2 中的分组结果按 totalQuantity 逆序排序。

A4 将 A3 中的排序结果写出到 salesGroupSum.csv 文件中。

可以暂时不去理解这些代码的含义,只是抄过来执行感受一下 SPL 程序。我们在后续章节中会逐步讲述相关的语法。

上述代码在网格中运算后,可以直接在网格的右侧看到 A3 单元格的值:

打开主目录,可以看到主目录下多了 salesGroupSum.csv 文件,打开此文件,可以看到:

csv 文件中看到的结果,和界面上看到的 A3 单元格的结果一致。