企业的经营,无论大小,都离不开数据的支撑。由于需要数据,因此必须检索数据。谁将检索数据以及如何检索数据?可能是销售人员使用Excel检索数据,DBA可能正在检查生产数据库,或者数据开发人员可能正在编写SQL或从数据仓库中获取程序。作为一名多年从事数据相关工作的开发者,曾饱受“临时数据抽取”之苦。这里总结一下这些年访问数据的一些方法(更多的是有自己数据团队的公司),大致包括以下几个方面:固定报表;联机分析系统;自助分析系统;自助服务访问系统;临时数据提取要求;fixedreport固定报告是获取数据最常见和最简单的方法。通常,需求方在调研数据后形成固定的数据报表需求,然后提交给数据开发团队,由数据开发团队安排资源实施。报告形成后,定期更新数据。报表一般通过WEB界面呈现(自行开发或使用开源),也有部分每天定时通过邮件(Excel)发送。OLAP系统然而,需求方的数据需求并不总是固定的格式。他们希望从所有可能的维度去挖掘数据,因为很多时候,他们自己一开始并不知道自己想要的最终数据。这时候,依靠固定报表显然不能满足需求。OLAP系统开始发挥自己的长处。数据开发团队根据业务和数据在OLAP系统中设计了相应的CUBE,并定期更新。需求方可以根据OLAP系统中设计好的CUBE来选择查询的维度。、指标、条件等,进行探索、分析和查询。一个更好的OLAP系统需要依赖以下几个方面:一个正规的数据仓库模型(事实表,维度表),一个好的OLAP引擎,以及Nice的OLAP前端工具。为了进一步减少数据开发的工作量,自助分析系统让需求方更加自助自主地完成一些数据检索。用户可以自行上传Excel和文本,访问数据仓库的数据,访问自己的数据库数据,自建模型(相当于定义Cube),进而对数据进行探索和分析。此外,该系统也适用于没有数据开发团队的小公司。慢慢地,自助门禁系统又遇到了问题。OLAP系统和自助分析系统都需要定义CUBE,而CUBE对数据模型(事实表、维表)有一定的要求。对于一些数据需求,很难固化成一个数据模型来支持查询。一开始直接提供SQL接口供需求方提交SQL查询,但问题是他们对SQL不是很在行,即使会,提交的SQL执行性能也很成问题。因此,我想增加一个功能,让需求方只对接口进行操作,后台会根据接口操作转换成SQL执行。这个问题看似简单,但是我想做的事情更加灵活和简单。数据开发人员配置自助访问模板。模板的核心由一段SQL和一些变量组成。变量分为三种类型:维度、指标和常量。数据开发者定义模板后,需求方可以在自助取数任务页面使用该模板提交取数任务。在抓取任务页面,常量为必填字段,维度和指标可以随意组合选择,也可以添加过滤条件。选择后,后台会根据任务条件替换模板中的变量,生成SQL,生成结果供下载。这个过程更像是一个动态的虚拟CUBE。虽然离线运行SQL并生成结果需要一段时间,但它更灵活并且收到了更好的结果。临时数据抽取需求虽然我们为满足数据检索需求,减少数据开发工作量做了很多努力,但仍有少量需求需要数据开发人员完成。其实靠平台化、系统化、自动化解决80-90%的数据需求已经很好了。
