性能优化技巧:有序分组
一、 问题背景与适用场景通常分组计算都采用hash方案,即先计算分组字段的hash值,hash值相同的记录被分拣到一个小集合里,然后在这个小集合中遍历找分组字段值相同的聚合成一组。分组的复杂度(比较次数),取决于hash函数的重码率。在hash空间比较小时,重码率就高,比较次数就会多,性能会受较大影响。为了提高性能,就需要分配较大的内存来存放 hash 表。另外,有些数据类型
集算器 SPL 抓取网页数据
集算器 SPL 支持抓取网页数据,根据抓取定义规则,可将网页数据下载到在本地进行统计分析。
高并发账户记录查询
面对高并发账户记录查询问题,按照本文的介绍一步一步操作,就能有效提升性能
Python 关联处理
将两个表或者多个表关联在一起是常见的运算,这时通常使用 SQL join 的方式进行关联并进行后续计算。但有时数据并不存储在数据库,而是以文件的形式存储在文件系统,单纯为了计算而把数据存储到数据库有点得不偿失。Python 的 Pandas 提供了丰富的关联运算函数,能更方便的完成文本文件间的关联计算,现在我们就一起来讨论下 Python 的关联处理。基础关联所谓关联是指两张数据表通过某个字段或者
性能优化技巧:后半有序分组
一、 问题背景与适用场景什么是后半有序?如果数据集T已经按字段a、b有序,现在我们要将T按b排序或分组时,因为在a值相同的段内,b都是有序的,这种要排序或分组的字段在分段内有序的情况就称为后半有序。我们知道,快速排序算法的原理就是一种递归的分段排序再归并的算法,对于后半有序这样的已经大体有序的数组,快速排序的速度已经能够很快。所以如果采用快速排序算法对T按b排序后,就可以使用
性能优化技巧:前半有序时的排序
一、 问题背景与适用场景在对数据集进行排序运算时,有时会遇到这样一种场景:数据集T已经按字段a有序,而字段b无序,现在我们要将T按a、b排序,我们称之为前半有序(a有序)的排序。此时我们能想到一种优化的排序方法:从T中先取出a值相同的一组记录,再这一组内对b排序。然后再依次取出下一组a值相同的记录,重复这个动作,直到完成T中所有记录的排序。这种方法的好处是不需要对T中所有记录
字符串和日期时间的处理
字符串和日期时间都是基础数据类型。虽然说是基础,使用起来却经常给我们带来麻烦。SPL 提供了丰富而简洁的函数,可以轻松解决字符串和日期时间的难题。
OLAP 服务器,空间换时间可行吗?
多维分析提供拖拽、旋转、切片、钻取等等人机交互操作,必须有秒级的响应速度。而这些操作对应的明细数据量非常巨大,如果在明细数据的基础上直接计算,速度会很慢,等待时间过长,是用户无法接受的。 图1:基于明细的OLAP响应时间过长 为了保证秒级甚至毫秒级的响应速度,一些OLAP产品事先将几千万甚至上
辅助 Excel 的数据计算 add-ins
Excel 中遇到较复杂的运算,数据分析师常会用 add-ins 辅助解决。本文考察了一些常见的 add-ins,从部署难度、开发难度、流畅程度等方面进行深度对比,并着重考察了数据计算能力,esProc 在这些 add-ins 中的表现相对出色。
SQL 有序计算
什么是有序计算 使用过 SQL 的朋友对计算字段都不会陌生,比如 firstname+lastname,year(birthday),这些计算字段属于行内计算,不管表达式里用到的是单个字段,还是多个字段,使用的数据都在当前记录行内。有行内计算,对应的也就有跨行计算,如:第一名和第二名的差距;从 1 月到当前月份累计的销售额。按
大文件上的结构化数据计算示例
本文分析大文件计算的实现原理,如过滤、聚合计算、添加计算列、排序、分组聚合、topN 等,以及利用并行计算来提高计算速度,并用 esProc SPL 举例说明如何用简洁的脚本实现大文件计算。
Excel 文件结构化解析示例
在数据分析业务中,经常要把Excel文件数据结构化解析以后再进行计算或导入关系数据库,但许多Excel文件的格式并不规整,而且文件结构也多种多样,导致编程进行结构化的工作量会比较大,而且很难通用,每次都要针对文件格式进行分析后再进行开发。本文将介绍如何进行各种格式的 Excel 文件结构化解析,如普通行式、复杂表头、自由格式、交叉表、主子表、大文件等,并提供用 esProc SPL 编写的代码示例
生成各种格式的 Excel 文件示例
本文介绍如何将经各种渠道得来的结构化数据自动生成各种格式的 Excel 文件,如单纯导出数据、导出大量数据、指定显示属性、固定行列填充、动态条件显示属性、分组带明细及统计、交叉统计表等,并用 esProc SPL 举例实现
合并资产负债表
本文介绍用 esProc SPL 实现合并资产负债表,包括不同时段合并和不同部门合并
SQL 的后计算脚本
大多数情况下,我们用SQL(存储过程)就可以完成数据库计算,但如果遇到SQL不擅长的某些复杂运算,就只能用其他程序语言把数据读出库外,然后在数据库外完成计算,这样的程序语言经常是以简单脚本的形式出现,我们在这里称为SQL的后计算脚本。SQL不擅长的运算主要包括复杂的集合计算、有序计算、关联计算、多步骤计算等。SQL集合化不够彻底,没有显式的集合数据类型,导致计算过程中产生的集合难以复用,比如分组后
Pandas 不擅长的结构化数据运算
Pandas 是 python 的一个数据分析包,是基于 NumPy 的一种数据分析工具,其中纳入了大量库和一些标准的数据模型,提供了快速便捷地处理数据的函数和方法,是高效地操作结构化数据集所需的工具,也是使 Python 成为强大而高效的数据分析环境的重要因素之一。但是相信经常使用 Pandas 的同学在处理结构化数据运算时也会遇到一些麻烦,这些问题要么使得问题解决很复杂(代码难写),要么使得运
文件数据去重示例
本文介绍小文件与大文件在进行数据去重时的几种处理办法,比如按整行或关键列去除重复数据或留下重复数据,并用 esProc SPL 举例实现
文本文件比对示例
在数据处理业务中,有时需要比较两个文本文件内容有哪些相同或不同的数据,本文将介绍文本文件比对的几种情况,如整行比对、关键列比对,同时又分小文件、大文件比对,并提供用 esProc SPL 编写的代码示例。esProc 是专业的数据计算引擎,SPL 中有一套完善的集合运算领域的函数库,做文件比对很方便,写出的代码非常简洁。 1. 小文件比对1.1 整行比
在文件上使用 SQL 查询的示例
本文介绍直接用 SQL 查询文件数据的各种情况,并用 esProc SPL 举例实现
如何利用历史数据提高营销成功率
我们在《利用历史数据做商业预测的全过程》(以下简称前文) 一文中介绍了如何使用历史数据进行商业预测的过程。不同的商业需求,还会有些各自的特殊性,本文将介绍如何使用预测技术来提升营销成功率。1. 准备历史数据在营销场景中,要预测的目标是客户的购买行为,需要搜集一些可能会影响购买行为的信息字段,比如客户的年龄、学历、工作、收入、家庭结构、生活习惯、购物偏好,以及产品的特点、促销力度等信息,收集到的相关