如何用外部程序优化SQL语句中的IN和EXISTS
IN 和 EXISTS 是 SQL 中常见的复杂条件,在将 SQL(存储过程)转换成库外计算获取高性能时也会面对这些问题。本文将以 TPC-H 定义的模型为基础,介绍如何用集算器的语法实现 IN、EXISTS 并做优化。TPC-H 是 TPC 事务处理性能委员会制定的用于 OLAP 数据库管理系统的测试标准,模拟真实商业应用环境,以评估商业分析中决策支持系统的性能。TPC-H 模型定义了
自动导出Excel的利器
有时我们需要用程序来自动生成 Excel 文件,但 Excel 本身带的 VBA 并不好用,而集算器作为数据处理工具实现这个需求就会方便很多。本文将介绍如何用集算器生成 Excel 文件,而集算器本身强大的数据计算能力不是本文重点,因此文中只是简单地用文本作为数据源举例,实际应用中可能会从各种各样的数据源中取数,再经过一系列运算得到需要导出的数据。 本文中用到的函数请参看集算器文档《函数参考》。
集算器实现可控报表缓存
使用缓存可以提升报表性能是不争的事实,一般高端报表工具都会提供报表缓存功能,可将整个报表计算结果缓存在文件系统中,以便用户下次访问相同参数的报表时可以快速读取缓存结果进行展现。但有些情况下报表开发人员还希望对缓存的内容进行更准确和灵活的控制,比如缓存的不是整个报表结果而是其中一部分、缓存内容可被其它报表或程序复用,以及对不同的缓存结果设置不同的超时时间,从而应对数据量和实时性方面的不同情况。这时,
集算器实现轻量级多维分析后台
问题的提出多维分析(BI)系统后台数据源通常有三种选择。一、普通数据库;二、专业数据仓库;三、BI 系统自带的数据源。但是,这三种选择都有各自的问题。普通数据库一般都是行式存储,很难获得多维分析希望的高性能,只适用较小数据量。专业数据仓库有不少是列式存储的,性能问题不大,但是价格都比较昂贵,建设、扩展和维护成本也都非常高。BI 系统自带的数据源都比较封闭,只能为自家的 BI 前端提供支持,无法为多
把 Excel 透视表搬到 WEB 上
提起 Excel 一定都不陌生,尤其是里面的数据透视表,对于需要进行聚合分析的情况,根据原始数据勾勾选选就能完成,用起来是倍儿爽吧。那么,操作起来这么省心的功能要是能移到 WEB 上,嵌入俺的应用程序里,是不是就完美了?so easy! 雷锋同志马上来教你做这事儿。主角登场——润乾报表多维分析!下面就先以 Excel 文件作为数据源,与各位小伙伴分享一下多维分析的应用案例,欢迎各位热烈围观,优雅吐
集算器实现计算路由优化 BI 后台性能
问题的提出BI 系统的常见结构是:前端是 BI 应用,负责多维分析的用户操作和结果呈现;后台是数据库 / 数据仓库,负责数据计算和存储。前端和后台之间用 SQL 作为接口。实际应用中,常常出现后台数据仓库压力过重的问题。问题表现为前端响应时间过长,数据仓库反应速度变慢。常见的解决方案是在数据仓库和应用之间再增加一个前置数据库。但是前置数据库和后台数据仓库之间很难实现数据的路由和混合计算,例如:访问
集算器优化多数据集关联报表性能
多数据集关联报表是很常见的报表形式,它允许开发者分别从不同的来源(表或数据库)分别准备数据形成不同的数据集,在报表端(模板)通过表达式描述数据集间的关系完成关联。这样可以避免在数据准备时写过于复杂的 SQL/ 存储过程,降低维护难度。尤其当报表数据来源于多个数据库时,多数据集的优势更加明显。凡事都有两面性,多数据集为开发带来方便的同时却对性能造成了极大的影响。在报表端进行多数据集关联时要计算关联表
趣味集算:八皇后问题
有关国际象棋的问题很多,八皇后问题就是其中相当著名的一个。在 8×8 的国际象棋棋盘中,放入 8 个皇后,使它们不互相攻击,共有多少种方法呢?国际象棋中皇后的威力巨大,攻击范围是同一行、同一列以及同一斜行,因此,符合条件的 8 个皇后必须都不在同一行、同一列或者同一斜行上。由于每一行中只能放入一个皇后,所以可以使用一个长度为 8 的序列,依次设入每行中皇后所在的列数,以此来表示皇后的放置状态。当某
集算器提升数据库JDBC取数性能
Java应用必须通过JDBC从数据库中取数,有时候我们会发现,数据库的负担一点也不重而且SQL很简单,但取数的速度仍然很慢。仔细测试会发现,性能瓶颈主要在JDBC上,比如MySQL的JDBC性能就非常差,Oracle也不好。但是,JDBC是数据库厂商提供的包,我们在外部没办法提高性能。可以想到的办法是利用多CPU手段采用并行方案来提速,但Java的并行程序非常难写,要考虑资源共享冲突等麻烦事务。下
分页汇总从未如此简单
嗨~everybody,还在为每页数据的计数求和发愁吗?还在为自己写长串代码加班到深夜而焦虑吗?还在为甲方不断变化的分页需求而抓狂吗?stop!从现在起,你会发现分页汇总从未如此简单,快来跟随小老师的脚步一探究竟。我们都知道,在业务系统中常常会有这样的业务需求:数据报表需要按实际纸张进行分页显示,在每页的最后对本页的数据进行汇总(例如,计数、求和)。下图显示的就是对每页的运货费进行求和小计:需求看
web报表轻松实现数据异常预警功能
在业务系统中,经常会看到这样的数据显示需求:一些特殊数据有规定的标准范围,超出标准范围的数据我们要标红预警显示,告知客户此数据有异常,也就是我们说的数据预警,效果如下图所示,红色显示了当运货费大于100时的预警。这种效果更加清晰的显示了异常数据,有助于用户对异常数据进行分析判断。如果不用报表工具,我们通常需要自己花点时间改页面样式,而通过报表工具我们就可以分分钟实现数据预警效果了。小老师这次教给大
报表工具如何实现“点击查看原图”
13在各种涉及图片的Web网站上,无论是搜图类、社交类、保险服务类,以及ERP或档案管理等内部系统,其中对于图片通常会提供一种点击图片查看原图的操作,也就是一开始呈现小图,点击后放大查看。这种操作我们能在报表中实现吗?如果可以的话,该怎么做?是不是需要许多关于前端页面的知识准备呢?下面我就对于上面抛出来的疑问一一解答下:润乾报表可以实现!通过Dashboard+超链接局部刷新就可以!不需知道很多前
浅谈集合与引用
在谈集合之前,需要先谈谈离散性的概念:所谓离散性,是指集合的成员可以游离在集合之外存在并参与运算,游离成员还可以再组成新的集合。从离散性的解释上可以知道,离散性是针对集合而言的一种能力,离开集合概念单独谈离散性就没有意义了。离散性是个很简单的特性,几乎所有支持结构(对象)的高级语言都天然支持,比如我们用Java时都可以把数组成员取出来单独计算,也可以再次组成新的数组进行集合运算(不过Java几乎没
报表工具轻松搞定卡片式报表
在我们日常生活或工作中,经常会看到这样一个个小卡片,上面记载着某件商品或者某个人的基本信息。如同名片一般,看起来简单明了。而在数据库中,这些信息实际上是密密麻麻的一条条记录,直接查看非常容易看错,如下图所示:那么我们怎样才能够将这些信息以卡片形式,一条记录一张卡片的来呈现呢 ?下面,我们一起来看一下怎样利用报表神器—润乾报表,来简单轻松地生成这类报表:首先(第一步),打开报表设计器,连接好数据源,
报表工具轻松搞定票据单据套打
实际项目开发中,很多情况会涉及到票据的打印。即在一张印刷好的空白票据上,准确无误地打印上票据的内容。用传统的报表工具,我们通常会用尺子量每一个数据区域的位置,然后在屏幕上根据尺子量出的尺寸设计每一个格子的位置,反复调试。不过,这样制作一张票据打印的报表费时费力,而且一旦票据格式发生变化,报表制作人员又要重新制作报表。接下来,小编给大家介绍一款可以轻松搞定套打问题的爆款神器 — 润乾报表 (别问小编
图形钻取
超链接钻取是一个非常实用的功能,在各种项目、应用中使用广泛,能够帮助数据分析用户清晰、直观地了解不同层级数据的上下级关系,并聚焦于自己感兴趣的内容。当然,润乾报表也支持这个功能,前面小编有介绍过列表钻取,今天小编主要介绍如何利用润乾报表设计器在报表中实现图形钻取。下面我们以订单分布为例,举例说明:实际的需求是要求我们首先以柱图呈现出每个人的总订单金额,并且点击任意一个柱子可以钻取呈现出这个人的详细
趣味集算:算二十四
算24点,是一种常见的智力游戏。它可以使用抽去大小王的扑克牌来玩,随便抽出4张牌,要求通过加、减、乘、除等四则运算,并使用所有的这4个数,将结果算为24。在玩这个游戏时,扑克牌中的JQK记为11,12和13。用集算器,可以比较方便地编写程序,根据随便给定的4个数,计算出游戏的解答,如下面的24points.dfx:ABCD1=arg1[+,-,*,/][][]2=to(0,255).([~\64+
列表钻取
超链接钻取是一个非常实用的功能,在各种项目、应用中使用广泛,能够帮助数据分析用户清晰、直观地了解不同层级数据的上下级关系,并聚焦于自己感兴趣的内容。当然,润乾报表也支持这个功能,今天小编主要介绍如何利用润乾报表设计器在报表中实现列表钻取。 下面我们以月订单分析为例,举例说明: 实际的需求是要求我们首先呈现出每个月的总订单情况,并且点击任意一个月份可以钻取呈现出这个月的详细订单信息。 首先,我们制作
报表中的地图怎么做?
参数使用小技巧