从 SQL 到集算器的基本查询语法迁移(一)单表操作
数据库和数据分析领域,有一个强大的存在,大名 SQL,全名结构化查询语言 (Structured Query Language)。从字面上看,这个语言的目标就是把数据“查询”出来,而查询这个词给人的感觉并不是很难。但实际上,为了支持貌似简单的查询,需要进行大量的计算动作,甚至整个过程就是一个多步骤的计算,前后步骤之间还有很强的依赖关系,前面计算的结果要被后面使用,而后面的输出有可能需要我们对前面的计算进行调整。
打个比方,这有点类似于去各类网点办事,填表递交后,相关办事人员开始在窗口后忙忙碌碌,时不时还会甩回来几个问题要求澄清,等到最后拿到回复,还有可能根本不是自己期望的结果!这时候,坐在办事窗口外的我们,抓狂之余,往往会产生一个念头,如果我们能够看到,甚至参与到过程中,应该能够大大地提高办事效率。
没错,你应该能想到,下面要介绍的集算器,和 SQL 相比对于我们这些过程控来说,就是一个可以轻松把玩和控制的计算(不止是查询)工具。
我们要做的,就是“照猫画虎”地把习惯中的 SQL 操作迁移到集算器中,用小小的习惯改变,换来大大的效益提升。
首先,我们需要把数据从传统的数据源中“搬迁”到集算器中,这样后续的操作就可以完全在集算器中进行了。
我们最常用的数据源一般就是关系数据库 RDB。这里使用的样例数据,就是数据库中的两个数据表:
订单信息表(order,主键 orderId),包括订单编号orderId、客户代码customerId、雇员编号employeeId、订单日期orderDate、发送日期sendDate以及金额money****:
orderId customerId employeeId orderDate sendDate money10248 VINET 2 2011-02-04 2011-02-16 440
10249 TOMSP 9 2011-02-05 2011-02-10 1863
10250 HANAR 9 2011-02-08 2011-02-12 1813
10251 VICTE 9 2011-02-08 2011-02-15 670
订单明细表(orderDetail,主键 orderId,productId),包括订单编号orderId、产品编号productId、价格price、数量amount、折扣discount:
orderId productId price amount discount11059 17 39 12 0.85
11059 60 34 35 0.9
11060 60 34 4 1
11060 77 13 10 0.95
“搬迁”,或者说导入数据的过程非常简单,如下图所示:
集算器A1 =connect(“hsqlDB”)
2 =A1.query(“select * from order”)
3 >A1.close()
首先建立数据库连接(网格 A1),然后直接通过单表全量查询的 SQL 语句从数据库中读取数据(网格 A2),最后清理现场,关闭数据库连接(网格 A3)。
在执行了脚本后,我们可以选中网格 A2,在结果区中看看搬过来的数据,同时,order 表在集算器中也换了个身份,我们称之为“序表”,用网格名称 A2 代表。序表是集算器中一个非常重要的概念,现在我们可以简单地把它理解成对应数据库中的一张表:
其实,在集算器中,任何一个有计算结果的网格(一般是用等号“=”开始),都可以在执行脚本后,随时选中并查看结果,并通过网格名称 A7、B8 等随时引用,从而满足我们随时监控的欲望……
接下来,我们以 SQL 中 select 语句的各个子句为线索,看看集算器中是如何操作的:
第一个:SELECT 子句用来选择需要查询的字段,也可以通过表达式来对字段进行计算,或者重命名字段。与之对应的,集算器里有 new、derive、run 三个函数。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。