计算&AI •
979 引用 •
1069 回帖 •
466 关注
博客
关注
-
【摘要】 SQL 虽然有集合概念,但对于集合运算、特别是有序集合运算,提供的支持却很有限,经常要采用很费解的思路才能完成,计算效率也不佳。而集算器 SPL 在方面则要直观许多,可以按自然思维习 ..
-
1544588349690 1、 对位分组 示例 1:按顺序分别列出使用 Chinese、English、French 作为官方语言的国家数量 ..
-
1543924808095 1、 生成连续整数序列 MySQL8: with recursive t(n) as ( select ..
-
1544002885810 窗口函数是 SQL2003 标准才开始有的一系列 SQL 函数,用于应付一些复杂运算是比较方便。但是普遍使用的 MySQL 数据库对窗口函数支持得却很不好,直到最近 ..
-
1544599473050 数据结构 IN 和 EXISTS 是 SQL 中常见的复杂条件,在将 SQL(存储过程)转换成库外计算获取高性能时也会面对这些问题。本文将以 TPC-H 定义的模型 ..
-
传统交易(TP)数据库不擅长分析计算,而专业 OLAP 数据库又过于沉重,经常需要集群,不仅成本高昂,也会使系统架构变得更复杂。 把不再变化的历史数据存储成轻量级的 esProc SPL 列存 ..
-
枚举字段的取值是有限几种值,针对枚举字段 f 的过滤条件写成 f =v1 or f=v2 or…或者 f !=v1 and f !=v2 and…,也可能写成 in 或者 not in。数据库 ..
-
大主子表之间进行 EXISTS 计算往往会导致较差的性能。这样的计算本质上是在做主键关联,如果能预先将主子表都按照主键有序存储,也可以使用有序归并算法有效提速。 esProc SPL 可以把主 ..
-
这一篇介绍主键关联的提速。 主表订单表和子表明细表的关联就是主键关联。SQL 中,这种关联仍用 JOIN 实现,在两个表都很大的情况下,常常出现计算速度非常慢的现象。 如果预先将主子表都按照主 ..
-
SQL 对关联的定义过于简单,就是两个表做笛卡尔积后再过滤,在语法上写成 A JOIN B ON …的形式。这样笼统处理多种关联,不体现关联运算本质,书写和优化都困难。 SPL 重新定义了关联 ..
-
SQL 中的去重计数 COUNT DISTINCT 一直比较慢。去重本质上是分组运算,需要把遍历过的分组字段值都保持住,用于后续的比对。结果集太大时,还要把数据写到硬盘上做缓存,性能低下。 如 ..
-
我们以订单表为例实现 esProc SPL 数据外置,提速常规过滤及分组汇总计算。 [图片] 我们使用 SPL 的 ETL 工具来生成脚本,实现数据的转储。在 [SPL 安装目录]\esPro ..
-
数据表枚举字段的取值是有限几种值,针对枚举字段 f 的过滤条件写成 f =v1 or f=v2 or…或者 f !=v1 and f !=v2 and…,也可能写成 in 或者 not in。 ..
-
数据库中,大主子表之间进行 EXISTS 计算往往会导致较差的性能。这样的计算本质上是在做连接,如果能预先将主子表都按照主键有序存储,就可以使用有序归并算法有效提速。这种算法只需要对两个表依次 ..
-
类似订单和明细表这样的主子表关联比较常见,在 SQL 中,这种关联用 JOIN 实现,在两个表都很大的情况下,常常出现计算速度非常慢的现象。 [图片] 如果预先将主子表都按照主键有序存储,就可 ..
-
在数据分析应用中,数据库多表关联的 SQL 语句很复杂,JOIN 性能也不理想,多表往往会被整合成宽表。比如图中订单表和多个维表就可能会被转换为宽表: [图片] 但是,宽表也存在很多问题,比如 ..
-
SQL 中的去重计数 COUNT DISTINCT 一直比较慢。 去重本质上是分组运算,需要把遍历过的分组字段值都保持住,用于后续的比对。结果集太大时,还要把数据写到硬盘上做缓存,性能低下。 ..
-
SQL 对关联的定义过于简单,关联就是两个表做笛卡尔积后再过滤,在语法上写成 A JOIN B ON …的形式。Python 关联基本上是延用 SQL 的方式,概念和方法都差不多。 esPro ..
-
业务数据经常存在层次关系,比如订单包含日期、客户和订单明细,订单明细又包含价格、数量、产品,产品则包含名称和分类。 json 的可嵌套结构很适合描述这种关系,比如订单数据: [ { 'orde ..
-
数据分析经常出现跨行计算,比如比上期、比同期、移动平均等等。针对有序数据集实现跨行计算,会涉及集合相邻成员引用的问题。 比如某商家某年 12 个月的销售额已经按月份次序准备好,现在要计算最大月 ..
-
针对数据集合的每个成员进行计算是很常见的任务,用循环语句当然能实现,但比较麻烦,算个简单的求和都要写很多句代码。 编程语言经常把这些运算封装成函数,比如 Python 的 sum 函数,求订单 ..
-
集合在计算机中一般都存储为数组形式,其成员天然会有个位置。数据表本质上是记录的集合,也会被存储成数组,作为成员的记录也有位置的概念。而实际应用中确实有很多分析计算都是位置相关的,但 SQL 把 ..
-
标准 SQL 中提供了五种最常用的聚合运算:SUM/COUNT/AVG/MIN/MAX,都是对集合计算出单值。 比如日志表中找出用户 1001 第一次登录的时间,SQL 很简单: SELECT ..
-
早期 SQL 对有序计算极端不适应,理论上可以写,但实际的麻烦程度基本上等同于不能用。 在引入窗口函数后,有序计算得到了一定的改善,但 SQL 的基础还是无序集合,即使打了窗口函数这样的补丁也 ..
-
分组是常见的结构化数据计算,SQL 和 Python 都有相应的语句和函数来处理。不过,和 esProc SPL 提供的分组运算相比,这些语言都弱得多了。 常规的分组一般都会伴随着聚合,比如要 ..