Java 嵌入 SPL 轻松实现数据分组

2018-12-06
阅读 7 分钟
2.3k
要在 Java 代码中实现类似 SQL 中的 GroupBy 分组聚合运算,是比较繁琐的,通常先要声明数据结构(Java 实体类),然后用 Java 集合进行循环遍历,最后根据分组条件添加到某个子集合中。Java 8 有了 Lambda(stream)代码简洁了许多,分组后往往还要跟着聚合操作,仍然需要单写聚合函数 sum(),count(*),topN()等。这些还...

如何用外部程序优化SQL语句中的IN和EXISTS

2018-11-28
阅读 13 分钟
1.7k
IN 和 EXISTS 是 SQL 中常见的复杂条件,在将 SQL(存储过程)转换成库外计算获取高性能时也会面对这些问题。本文将以 TPC-H 定义的模型为基础,介绍如何用集算器的语法实现 IN、EXISTS 并做优化。

自动导出 Excel 的利器

2018-11-28
阅读 6 分钟
2.6k
有时我们需要用程序来自动生成 Excel 文件,但 Excel 本身带的 VBA 并不好用,而集算器作为数据处理工具实现这个需求就会方便很多。本文将介绍如何用集算器生成 Excel 文件,而集算器本身强大的数据计算能力不是本文重点,因此文中只是简单地用文本作为数据源举例,实际应用中可能会从各种各样的数据源中取数,再经过一...

给一句SQL就能做多维分析

2018-11-28
阅读 7 分钟
1.8k
【摘要】多维分析程序支持对任何数据库做 SQL 数据集多维分析,只需先把数据源配置好,然后程序猿啪啪几下敲下需要进行多维分析的 SQL 语句就可以,灵活便捷,去乾学院看个究竟:给一句 SQL 就能做多维分析!

实现报表的可控缓存

2018-11-28
阅读 4 分钟
1.7k
【摘要】使用缓存可以提升报表性能是不争的事实,一般高端报表工具都会提供报表缓存功能,可将整个报表计算结果缓存在文件系统中,以便用户下次访问相同参数的报表时可以快速读取缓存结果进行展现。但有些情况下报表开发人员还希望对缓存的内容进行更准确和灵活的控制,比如缓存的不是整个报表结果而是其中一部分、缓存...

轻量级可嵌入多维分析后台

2018-11-28
阅读 10 分钟
1.6k
但是,这三种选择都有各自的问题。普通数据库一般都是行式存储,很难获得多维分析希望的高性能,只适用较小数据量。专业数据仓库有不少是列式存储的,性能问题不大,但是价格都比较昂贵,建设、扩展和维护成本也都非常高。BI 系统自带的数据源都比较封闭,只能为自家的 BI 前端提供支持,无法为多个不同厂家的前端提供数...

用计算路由的方法优化BI后台性能

2018-11-27
阅读 15 分钟
1.5k
BI 系统的常见结构是:前端是 BI 应用,负责多维分析的用户操作和结果呈现;后台是数据库 / 数据仓库,负责数据计算和存储。前端和后台之间用 SQL 作为接口。

如何优化多数据集关联报表

2018-11-21
阅读 15 分钟
2.4k
【摘要】关联计算在集合运算中的复杂度无出其右,在报表业务中经常引发查询性能问题,如何优化是大家经常面临的难题!这里《如何优化多数据集关联报表》尝试列举各种报表关联情况,并给出优化方案,提升多数据集关联报表性能看这一篇就够了!多数据集关联报表是很常见的报表形式,它允许开发者分别从不同的来源(表或数...

数据计算中间件技术综述

2018-11-13
阅读 5 分钟
2.3k
  上图是大家都很熟悉的基于 Hadoop 体系的开源大数据架构图。在这个架构中,大致可以分成三层。最下一层是数据采集,通常会采用 kafka 或者 Flume 将 web 日志通过消息队列传送到存储层或者计算层。对于数据存储,目前 Apache 社区提供了多种存储引擎的选择,除了传统的 HDFS 文件和 HBase,还提供了 Kudu、ORC、Parque...

让Birt报表脚本数据源变得既简单又强大

2018-11-13
阅读 7 分钟
2.3k
总所周知,有些数据库没有强大的分析函数(eg. Mysql), 有些数据库没有存储过程(eg. Vertica),当遇到复杂的数据计算,往往只能通过 Python,R 等外部脚本来实现,但这些脚本语言和主流工程语言(Java)集成性不好,如果直接用工程语言实现类似 SQL 函数和存储过程的功能,经常只是针对某个计算需求编写冗长的代码,代...

跨库数据表的运算

2018-11-13
阅读 12 分钟
2.4k
跨库数据表的运算,一直都是一个说难不算太难,说简单却又不是很简单的、总之是一个麻烦的事。大量的、散布在不同数据库中的数据表们,明明感觉要把它们合并起来,再来个小小的计算,似乎也就那么回事……但真要做起来,需要这又忘了那的,却又不像仅仅就那么回事?        想要给这些小麻烦们,来一个快刀斩乱麻式的、嘁...

文本导出的方方面面

2018-11-13
阅读 4 分钟
1.2k
TXT文本文件是我们常用的在应用之间传递数据的途径之一,因为它具有通用、灵活、易维护等诸多优点。不过并不是所有应用都提供了生成txt文件的功能,往往需要额外的程序设计和开发工作才能获得。这时如果能够有一个通用的工具软件,灵活地根据需要生成目标格式的文本,将能够极大地助力我们的业务工作。本文介绍的集算器...

跨库多维分析后台的实现

2018-11-09
阅读 6 分钟
1.5k
例如:从性能和成本考虑,往往会限制生产库的容量,同时将历史数据分库存放,由ETL定期把生产库中新产生的数据同步到历史库中,同步周期根据数据的生成量,可能是1天、一周或者一个月。如果多维分析系统仅仅连上历史库取数,那么用户就只能对历史数据做分析,也就是实现T+1、T+7、T+30的多维分析。如果想要实现T+0的实时...

轻松应对多层JSON数据计算与入库

2018-11-07
阅读 4 分钟
2.3k
JSON作为一种轻量级的数据交换格式,因其易于读写和交互的特点,已逐渐成为主流的数据类型之一。常见的编程语言大多都对 JSON 的读取与解析提供了接口,但是接下来如何把多层 JSON 数据经过筛选、计算并展开成二维数据,就需要开发人员去头疼了。本文就为大家分享一下如何利用集算器 SPL(结构化处理语言)轻松解决 JSON...

如何处理报表中的舍位平衡

2018-11-07
阅读 9 分钟
1.6k
在报表的数据统计中,常常会根据精度呈现或者单位换算等要求,需要对数据执行四舍五入的操作,这种操作称为舍位处理。简单直接的舍位处理有可能会带来隐患,原本平衡的数据关系可能会被打破。

如何协助 MySQL 实现 Oracle 高级分析函数

2018-11-07
阅读 4 分钟
2.7k
Oracle 支持一些独特的语法和函数,在移植到 MySQL 上时或多或少给程序员造成了困扰,下面我们针对 Oracle 的一些特殊用法举例并讲解如何用集算器来完成同样功能。这些方法当然也不限于针对 MySQL,对于所有其它数据库也能支持。

10 行代码,集算器实现写诗机器人

2018-10-30
阅读 1 分钟
1.7k
集算器不仅有大数据计算,还有诗和远方。最近看到不少写诗机器人的新闻,于是尝试用集算器简单地实现一个。这个实现真的很简单,简单到只有10几行代码,请看实现步骤:

百万级分组大报表开发与呈现

2018-10-30
阅读 4 分钟
2.5k
在《秒级展现的百万级大清单报表怎么做》中,我们介绍了无论 RDB 还是非 RDB,润乾报表都能够通过异步线程实现秒级海量大清单报表(以下简称:大报表)。实际业务中,除了查询明细,有时还要展现全量汇总数据,或者查询分组明细和计算分组汇总。本文就将介绍这些带有汇总和分组的大报表的开发方法。

多层科目任意组合汇总报表的性能优化 (下)

2018-10-30
阅读 7 分钟
1.6k
在充分利用遍历一次的特点进行优化后,可能我们还会觉得计算性能有点慢,希望有进一步优化的空间。由于每次只需要取出总数据量的很小一部分 (100 个指标涉及的所有科目号大概几百个,即在几百万记录中取几百条),这时我们通常能想到的是:如果能利用数据有序直接进行有序查找(若源数据有序,可以快速定位到这几百条记录...

多层科目任意组合汇总报表的性能优化 (上)

2018-10-30
阅读 7 分钟
1.8k
这是一个典型的中国式复杂报表格式,其复杂并不在于布局,而在于其中“期末余额”的每个单元格都是一个需要独立计算的指标,互相之间几乎没有关系,事实上就是一个各种指标的汇总清单,而这些指标往往会有上百个之多。

多行日志合并处理的内外存方法

2018-10-18
阅读 3 分钟
1.3k
上一讲中,我们介绍了如何用SPL将一行日志结构化为一条记录,今天则要说一下多行日志对应一条记录的情况,我们称之为不定行日志。 事实上,集算器自己的输出日志就是这种不定行日志,我们来看一下集算器节点机下的一个日志文件rqlog. log,同样摘录两段日志: [2018-05-14 09:20:20] DEBUG: 临时文件过期时间为:12小时...

超大数据下大批量随机键值的查询优化方案

2018-10-18
阅读 12 分钟
2.2k
键值查询是很常见的查询场景,在数据表上建有索引后,即使表中数据记录数巨大(几亿甚至几十亿行),用键值查询出单条记录也会很快,因为建立索引后的复杂度只有 logN(以 2 为底)次, 10 亿行数据也只要比较 30 次(10 亿约等于 2^30),在现代计算机上也只需要数十毫秒而已。

数据分析用它就够了 | 37 个场景你要用集算器

2018-10-18
阅读 4 分钟
2.5k
将冷热数据分离,仅将当期热数据存放在数据库中,冷数据存储在文件系统或数据库中,通过集算器完成跨源(库)计算,完成多源数据汇总、复杂计算,实现 T+0 全量数据实时查询

优化Join运算的系列方法(3)

2018-10-12
阅读 4 分钟
1.4k
5 综合案例 实际业务中,多表关联运算十分常见,外键表、同维表、主子表这几种关联类型可能会混合出现。下面我们来看一个综合案例。 5.1 表结构和查询目标 某电商平台中和订单编号这个字段相关的有6个表,主要表结构如下: 订单表 订单明细表 订单优惠表 订单发货表 订单支付表 订单评价表 订单编号 订单编号 订单编号 ...

优化 Join 运算的系列方法(2)

2018-10-11
阅读 7 分钟
1.3k
如果只是事实表很大,而维表仍然可以全部装入内存,那么仍然可以采用上面的外键指针化方法处理,只要修改一下对事实表的访问,使用游标的方式取从集文件里分批取数进行处理即可。不过因为这种指针是在游标取数时才临时建立的,所以就不象全内存时那样可以复用已经建立过的指针了。

优化 Join 运算的系列方法(1)

2018-10-11
阅读 6 分钟
2.3k
JOIN是关系数据库中常用运算,用于把多个表进行关联,关联条件一般是判断某个关联字段的值是否相等。随着关联表的增多或者关联条件越来越复杂,无论理解查询含义、实现查询语句,还是在查询的性能方面,可以说JOIN都是最具挑战的SQL运算,没有之一。

秒级展现的百万级大清单报表怎么做

2018-10-11
阅读 5 分钟
2.6k
数据查询业务中,有时会碰到数据量很大的清单报表。由于用户输入的查询条件可能很宽泛,因此会从数据库中查出几百上千万甚至过亿行的记录,常见的包括银行流水记录,物流明细等。呈现时如果等着把这些记录全部检索出来再生成报表,那会需要很长时间,用户体验自然会非常恶劣。而且,报表一般采用内存运算机制,大多数情...

简单几行程序轻松分析Excel

2018-10-11
阅读 4 分钟
2k
随着互联网的快速发展,大数据时代的到来,数据资源的处理成了各行各业都面临的热点问题。除了通过特别专业、特别特别昂贵、特别特别特别复杂的分析平台来处理特别 x4 海量的数据外,我们还常常会遇到 Excel(xls,xlsx)文件这样手边能够即时获得的数据文件。使用 Excel 记录、处理和交换数据,是因为这个软件的简单方...

有了金刚钻,不惧瓷器活 | 在数据文件上轻松使用 SQL

2018-10-11
阅读 8 分钟
1.5k
SQL,在数据处理和分析领域基本上类似“普通话”的地位,几乎是一项必备的能力,但是要使用 SQL,又离不开关系数据库系统,也就是 RDBMS,这就好比普通话主要还是得在中国说才管用。当然,如果为了去英国美国,学个英语还算值,这就像学个 Python、Hadoop,出去找工作也算是个技能。但是如果要在一般的文本数据,或者 Exce...

浅解比 SQL 更好用的 SPL(二)

2018-10-11
阅读 5 分钟
6.9k
上一篇我们针对单表的情形了解了如何把数据计算从 SQL 查询迁移到集算器,或者更准确地说,迁移到集算器所使用的SPL集算语言。这个迁移过程,既有相同的概念,也有不同的思路。