报表系统的雄心

这周有朋自远方来,聊了对报表工具的看法,因此专门写篇文章来谈谈报表系统的未来。

笔者知道不可能有十全十美的报表系统,毕竟任何一个行业和企业受自身客观环境的限制,但表哥嘛,总要有点理想和追求,就好比到一定年纪会自问,我的人生追求到底是啥?表哥到了一定阶段也同样,我的终极目标是什么?

首先合适的就是最好的。

脱离了业务驱动的任何IT系统,没有价值,因此,从客户需求出发,打造出适合某个细分市场的报表系统,就是最好的报表系统。

现在报表工具市场百花齐放,自有存在的道理,所谓的大数据报表引擎,在相当长的时间内,对于很多企业来讲,是没有必要的,大炮打蚊子,那也是极其浪费的事情。

同时,大数据让客户的数据意识渐起,因此,即使针对的是小数据的报表工具,也能赶上一波红利。

但有一点是值得注意的,由于技术上没有特别的差异性,大家互抄也很容易,因此,客户服务能力就至关重要了,你卖的不仅是产品,更多卖的是服务。

接下来,我们切入正题。

任何代表趋势性的发明和系统,都来自最前沿的应用领域,报表系统最核心的是对于数据的处理和展现,因此,以大数据应用为核心,或者拥有海量大数据的企业,其对于报表系统的诉求和应用,应能代表这个技术的发展方向,互联网企业可以向BAT看齐,传统企业可以向运营商看齐,比如中国移动曾经打造了世界最大规模的数据仓库系统,在那个时候,引领了数据仓库建设的潮流。

那么,如何打造极致的报表系统?

首先,极致报表系统的打造,不是一个工具或系统就能单方面解决的,客户自身对于报表的认识和投入是至关重要的。

为什么?

因为报表系统能力不仅取决定于工具能力,也依赖企业的数据管理能力,而数据管理能力在各个企业的情况不同,同样的工具在不同的企业应用那也是千差万别,好马也要配好鞍。

数据管理能力除了数据质量,最重要的是数据标准化能力。

一个企业的报表成千上万,运维开发团队疲于奔命,这是有问题的,说明它的数据管理能力还未到达一定的水平,当然,这也是大多企业的常态。

产生这个问题的一个根本原因是标准化能力不足,报表由指标组成,一个企业的基本指标非常有限,但指标的组合可以无穷无尽,因此,报表可以无穷无尽,这是祸根。

大多数企业做不了报表标准化的事情,有两个根本原因:

一是IT报表团队本身的问题,BI领域一直有一个挑战,就是到底是以满足业务人员需求为主还是致力于打造一个平台,更致命的是,BI人员所谓的满足需求并不是在完成一个功能,而是价值也许只有几天的一段取数代码,其是无法实现很好的传承的。

但打造一个平台是何其艰难,因为这里的平台不仅仅指功能,不是搞个自助配置工具就算是了,还包括数据平台,你可以叫作数据中台,核心就是要打造一层标准化的数据层,对于报表来讲,就是指标。

有种技术叫SOA,其对于IT系统是何其重要,但报表系统却很少有类似的坚持的东西。

指标化当然很难,笔者这里不谈具体的实现方式,只是提醒每个企业的BI团队引领者应该思考这个问题,要相信企业大多数报表是可以指标化的,抓大放小搞定80%,就成功了,的确有部分报表难以指标化,比如有状态的指标,但这个很少且无关大局。

二是IT报表团队与业务人员的博弈,业务人员屁股决定脑袋很正常,但无论报表做的多急,要的多快,报表团队还是要注意控制节奏,因为大多数企业,业务人员提报表需求没有成本,决定了让业务人员自发减少需求是无解的,到了一定阶段,你做的再快,也无法带来满意度的提升。

报表团队总要预留些余粮和人力,规划一下自身的蓝图,研究下更高效的支撑方式,一个IT部门,大多时候,报表规划建设一笔带过,买个工具呗,更不会关注到标准化这种事情,你不提,谁都不会提。

报表标准化也不可能让业务人员提出来,只有自力更生了,而且,即使你提出来了,业务人员还可能不理解。

报表团队深陷事务型工作而难以抽身,很大程度反映了其视野的局限性,习惯用人力的投入解决一个无解的问题,报表管理者是需要反思的,我们总说表哥是老实人需要做老实事,但规划上绝不能含糊,大数据时代,数据创新恰恰应该放到报表团队的核心位置。

在说理想的报表工具前,笔者特意提了企业的环境,是为了说明,任何有牛逼报表产品的合作伙伴,在推广的时候,需要找到好的客户,有时产品营销失败不是你的错,而任何一个企业,在买报表工具前,首先要知道,工具仅仅是手段,不是买了就万事大吉了,你还需要在业务和技术上做些投入和努力,否则,可能也发挥不了工具的价值。

其次,速度是极致报表系统的一个基本要求。

笔者早几年接触到淘宝的数据魔方的时候,是非常惊讶的,它海量的数据、极致的速度,多维的展现,是多么的完美,后来到网上找了很多相关资料,才知道这个产品在数据处理上做了大量的定制改造,才使得它有这个表现。

那么能否有一个更加通用的报表后台引擎,在降低对于数据定制化处理要求的同时,提供极速的前台多维查询展现?

虽然我们用HBASE实现了指标库,后台指标数据几百亿,但其对于数据的定制要求太高,在很多场景难以适用,而且,似乎没有好的成熟前台能够适配,自己全套定制做也不大可能。

传统的报表工具引擎侧重展现,但对于后台数据大多时候仅仅起到一个接入的作用,它的设计理念,可以认为是以重前台,轻后台的方式,尽可能覆盖更多的后台数据的形式去满足市场需求,但带来的问题是,后台数据深度支撑能力太弱了,因此无法满足海量多维度数据的快速查询要求。

对于拥有海量数据的企业,需求已经在改变,有时,宁愿自己做报表,也不再愿意采购报表工具产品,这是有其原因的。

笔者已经知道当前市场上有不少新型的OLAP产品,诸如Kylin等产品的企业也在崛起,笔者没用过,无法做出评价,但这个的确代表了方向。

所以说速度越来越重要,还因为当前有一种趋势,分析型和清单级报表需要融合成一体,也就是说,从指标可以下钻到清单,这可以帮助实现分析执行一体化,而以前清单往往靠取数临时实现,造成了两者的不一致,降低了异动核查的效率。

比如运营商其实有两套报表,一套叫生产报表,一套叫经分报表,前者以满足一线生产为主,后者以满足管理者分析需要为主,以前很难有一种报表工具能同时支撑这两种数据查看模式。

海量,快速,多维,这应是未来报表引擎的要求吧。

再次,开放性是极致报表系统的一个根本诉求。

其实,所谓开放和封闭是相对的,如果你的封闭体验和性能做到了极致,客户可以牺牲一定的灵活性来适应你的产品。

现在诸如数据库一体机大行其道,因为好用嘛,暂时也没有好的替代品。

但是,在报表产品上,封闭可能成为不了趋势,笔者以前谈过,越是面向前端的产品,用户对于灵活性的诉求会剧烈增长,直到抵消产品封闭带来的价值。

报表工具有前端展现和后台数据引擎两个基本模块,假如你有强劲的后台数据引擎,就需要考虑,前端的展现是否可以开放接口,能否提供一套API?要知道,再牛逼的前台展现搞不过EXCEL,也搞不过PPT的组装,更搞不过各个企业复杂的业务管理、机制和流程要求,比如,报表展现要打个水印怎么办? 加入一段安全控制代码行不行?

当然,不仅仅是前台开放,后台也需要,比如报表数据的刷新,触发方式多种多样,总要有些定制化能力,提供更多的可配置性和开放性。

再次,适配性是极致报表系统的一个现实要求。

各类报表产品显然对于企业系统环境是有要求的,但不要为了极致性能而忽视现状和通用性,比如SPARK2.0刚刚推出,就不要说产品只支持2.0,假如是基于hadoop的,则需要尽可能兼容大多数版本。

一般来说,假如只是为了打造一个更快的报表系统,企业不会去改变它现有的技术架构体系,毕竟报表始终是IT的下游系统。报表系统更应该考虑的是如何尽可能的适应当前大多数企业的现状,与时俱进吧。

在大数据时代,产品的竞争力,很大程度是取决于你版本的更新速度,因为客户的需求变化很快,技术更迭也很快,必须要适配的足够快,已经有太多牛逼的公司由于缓慢的产品更迭速度而备受客户诟病,一旦口碑做坏了,就一去不复返了,报表工具不是一种容易硬捆绑的产品,而且这个圈子并不大。

再次,谈谈报表前台吧。

当前,很多报表产品都已经有拖拉钻取的功能,但建议的一个设计原则是,能简单就尽量简单点吧,一个报表产品前台,不要提供太多的选择,最好还能分一下用户层级。

大多企业一线人员,是报表的主要使用者,根本不会拖拉钻取,它如一个婴儿,报表是喂给它的,只要看得清楚,速度快就行了,不要奢望它会用到你哪怕30%的功能,给个搜素、收藏夹、导出功能就足够了,以前OLAP产品所以用不好,就在于使用门槛太高,很多使用人员,甚至不知道啥叫维度,啥叫指标,你让他拖什么?

高级的定制功能,设计步骤也要点到为止,配一张报表,最多是三步,选择后台表,选择指标和维度,报表设计(比如多表头啥的),生成报表,当然还有调度啥的,就不细谈了。

满足大多数人的需求,忽略部分高级用户的诉求,这应是一个设计原则吧,我记得以前做报表总是强调多表头啥的,但真实情况是有几个人真会用,而且马上审美疲劳,还不如拉到EXCEL里面搞搞更漂亮。

不过,话说回来,各个企业的情况不同,笔者这个判断肯定是有失偏颇的,且自己离开报表制作很多年了,权当参考吧。

最后,还是要提提报表企业的雄心吧。

不少报表企业被大企业收购了,很大原因是它形成不了生态链,一旦产品同质化,就只能依附于大系统的巨无霸生存,这种结合显然于双方都有利,一个将自身产品的价值链进一步延伸,一个依附于某个数据库或者某类系统,能够获得额外的性能提升,以此形成新的差异化竞争优势。

但是,弊端也很明显,跟着巨无霸往往意味着速度变慢,创新变慢,那么,报表企业到底如何才能施展自己更大的抱负呢?

单靠一款报表工具打天下其实风险很大,因为维度太单一,前段时间,吴伯凡在《日知录》中提企业竞争力的时候,谈到的降维打击是很有启发意义的。

笔者给一个建议,如果你的报表产品当前足够好,可以考虑下生态的扩展,看看除了工具,客户的报表真正的痛点是什么,比如前面提到的数据管理能力,从数据质量、数据管理、数据分析到数据挖掘,这是当下很多企业的短板,也是你进入的机会。

毕竟,大数据时代,工具诚可贵,数据价更高。


本文作者:傅一平

来源:51CTO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/394766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vuefullcalendar怎么判断切换上下月_房间太多、楼上楼下,终极解决家里wifi信号无缝切换问题...

相信不少人有我一样的烦恼,房间太多,或者楼上楼下,家里的wifi信号总是不能无缝切换。路由器放在配电箱,除了客厅信号不错外,一旦到了其他房间,掉线、网速慢等问题让人很苦恼。特别是和小伙伴一起玩游戏一边…

手把手教你 Spark 性能调优

0、背景 集群部分 spark 任务执行很慢,且经常出错,参数改来改去怎么都无法优化其性能和解决频繁随机报错的问题。 看了下任务的历史运行情况,平均时间 3h 左右,而且极其不稳定,偶尔还会报错: 1、优化思路 任…

pytorch线性回归代码_[PyTorch 学习笔记] 1.3 张量操作与线性回归

本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/linear_regression.py张量的操作拼接torch.cat()torch.cat(tensors, dim0, outNone)功能:将张量按照 dim 维度进行拼接tensors: 张量序列dim: 要拼接的维度代码示例&#…

《UNIXLinux程序设计教程》一2.1 UNIX 输入输出基本概念

2.1 UNIX 输入输出基本概念 在任何一种操作系统中,程序开始读写一个文件的内容之前,必须首先在程序与文件之间建立连接或通信通道,这一过程称为打开文件。打开一个文件的目的可能是要读其中的数据,也可能是要往其中写入数据&…

c语言编常见算法,5个常见C语言算法

5个常见C语言算法十进制转换为二进制的递归程序字符串逆置的递归程序整数数位反序&#xff0c;例如12345->54321四舍五入程序(考虑正负数)二分法查找的递归函数#include#include#include//十进制转换为二进制的递归程序voidDecimalToBinary(int n){if(n<0){printf("…

利用Kinect将投影变得可直接用手操控

Finally 总算是到了这一天了&#xff01;假期里算法想不出来&#xff0c;或者被BUG折磨得死去活来的时候&#xff0c;总是YY着什么时候能心情愉快地坐在电脑前写一篇项目总结&#xff0c;今天总算是抽出时间来总结一下这神奇的几个月。 现在回过头来看&#xff0c;上学期退出AC…

springboot自动配置的原理_SpringBoot自动配置原理

SpringBoot的启动入口就是一个非常简单的run方法&#xff0c;这个run方法会加载一个应用所需要的所有资源和配置&#xff0c;最后启动应用。通过查看run方法的源码&#xff0c;我们发现&#xff0c;run方法首先启动了一个监听器&#xff0c;然后创建了一个应用上下文Configurab…

Django first lesson 环境搭建

pycharm ide集成开发环境 &#xff08;提高开发效率&#xff09; 解释器/编译器编辑器调试环境虚拟机连接 设置VirtualBox端口 操作1 操作2 点击号添加&#xff0c;名称为SSH&#xff0c;其中主机端口为物理机的端口&#xff0c;这里设置为1234&#xff0c;子系统端口为虚拟机的…

《Drupal实战》——3.3 使用Views创建列表

3.3 使用Views创建列表 我们接着讲解Views的设置&#xff0c;首先做一个简单的实例。 3.3.1 添加内容类型“站内公告” 添加一个内容类型“站内公告”&#xff0c;属性配置如表3-1所示。 为该内容类型设置Pathauto的模式news/[node:nid]&#xff0c;并且我们在这里将节点类型…

idea mybatis generator插件_SpringBoot+MyBatis+Druid整合demo

最近自己写了一个SpringBootMybatis(generator)druid的demo1. mybatisgenerator逆向工程生成代码1. pom文件pom文件添加如下内容&#xff0c;引入generator插件org.mybatis.generator mybatis-generator-maven-plugin 1.3.5 mysql …

python isalnum函数_探究Python中isalnum()方法的使用

探究Python中isalnum()方法的使用 isalnum()方法检查判断字符串是否包含字母数字字符。 语法 以下是isalnum()方法的语法&#xff1a; str.isa1num() 参数 NA 返回值 如果字符串中的所有字符字母数字和至少有一个字符此方法返回 true&#xff0c;否则返回false。 例子 下面的例…

动态规划算法——最长上升子序列

今天我们要讲的是最长上升子序列&#xff08;LIS&#xff09;。【题目描述】给定N个数&#xff0c;求这N个数的最长上升子序列的长度。【样例输入】      【样例输出】7        42 5 3 4 1 7 6那么什么是最长上升子序列呢&#xff1f; 就是给你一个序列…

如何快速掌握一门新技术/语言/框架

IT行业中的企业特点是都属于知识密集型企业。这种企业的核心竞争力与员工的知识和技能密切相关。而如果你在企业中扮演的是工程师的角色的话&#xff0c;那么 你的核心竞争力就是IT相关的知识与技能的储备情况。而众所周知&#xff0c;IT行业是一个大量产生新知识的地方&#x…

c语言今天星期几问题,C语言输入今天星期几

满意答案迷茫03222015.07.24采纳率&#xff1a;55% 等级&#xff1a;9已帮助&#xff1a;665人123456789101112131415161718192021#include<stdio.h>int main(void){ enum weekday{ sun, mon, tue, wed, thu, fri, sat }; int n; printf("输入星期数(0-…

备忘录模式 详解

定义 在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态&#xff1b; 行为型模式 角色 发起人角色&#xff08;Originator&#xff09;&#xff1a;记录当前时刻的内部状态&#xff0c;负责定义哪些属于备份范围的状态&#xf…

dll oem证书导入工具_技术干货 | 恶意代码分析之反射型DLL注入

欢迎各位添加微信号&#xff1a;qinchang_198231 加入安全 交流群 和大佬们一起交流安全技术01技术概要这是一种允许攻击者从内存而非磁盘向指定进程注入DLL的技术&#xff0c;该技术比常规的DLL注入更为隐蔽&#xff0c;因为除了不需要磁盘上的实际DLL文件之外&#xff0c;它…

锐捷亮相GITC:请互联网企业为我点个赞!

【51CTO.com原创稿件】GITC全球互联网技术大会已成功举办四届&#xff0c;今年的会议现场依然是摩肩接踵围观者众。围绕互联网热点技术&#xff0c;众人根据云、大数据、安全、运维、基础架构的不同主题&#xff0c;各自聚成小圈子展开深入交流。 锐捷的展位在主会场的内侧&…

react.lazy 路由懒加载_React lazy/Suspense使用及源码解析

React v16.6.0已经发布快一年了&#xff0c;为保障项目迭代发布&#xff0c;没有及时更新react版本&#xff0c;最近由于开启了新项目&#xff0c;于是使用新的react版本进行了项目开发。项目工程如何搭建&#xff0c;如何满足兼容性要求&#xff0c;如何规范化等等这里不作为介…

c语言数据结构系统化,C语言数据结构+数据库+操作系统

http://cv.qiaobutang.com/post/55c419b20cf2009bd4607795第二部分是专业相关的C &#xff0c;数据库&#xff0c;操作系统&#xff0c;数据结构。http://c.biancheng.net/cpp/u/shuju/数据(Data)是信息的载体&#xff0c;它能够被计算机识别、存储和加工处理。它是计算机程序加…

c语言判断一个序列是不是另一个的子序列

1 #include <stdio.h>2 #include <string.h>//添加字符串头文件3 4 int Subsequence(char s[], char t[]) 5 {6 int m,n,i,j;7 n strlen(s); //n表示序列S的长度8 m strlen(t); //m表示序列T的长度9 i0; 10 j0; 11 if (m>…