1赞

回答

收藏

BI 工具不是可以直接拖拉拽取数吗 ?为什么还要写 SQL 取数 ?

派可动态 派可动态 1890 人阅读 | 0 人回复 | 2020-12-13

[md]![Ficq5Y8YXHbz4f1ct3XWHsEQI-5Z.jpg](data/attachment/forum/202012/13/133050nkgf9a82ac1ac1j6.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "Ficq5Y8YXHbz4f1ct3XWHsEQI-5Z.jpg")![](http://image.packingdata.com/FtfTTGU_znEo8uzNu5DcPAExVNu-)

BI 工具不是可以直接拖拉拽取数吗 ?为什么还要写 SQL 取数 ? 这是很多初次接触商业智能 BI 的朋友会提到的一个问题,因为在他们接触到一些 BI 市场或者产品宣传的时候,很多人就是这么来介绍 BI 的。

简单来说,这个问题背后的逻辑等同于:**拿着碗和筷子不是可以直接吃饭吗 ?为什么还要自己动手做饭 ?有没有想过,即使是直接吃饭,饭总是要有人来做的吧,无论这个人是自己还是别人,“做饭”这个过程并不会少。**

所以,从这个问题背后能看出来还是有很多人对于 BI 的理解还是存在一定的误区,我们可以从以下这几个角度来分析讲解一下。

可视化 ≠ BI

很多人对于 BI 的印象就停留在数据的可视化图表,但可视化图表只是 BI 的最终呈现,可视化的拖拉拽并不是 BI 的全部。

一个完整的商业智能 BI 解决的应该是端到端( End to End ) 的问题,需要从各个业务系统的数据源取数,通过 ETL ( Extract 抽取、Transformation 转换、Loading 加载 )的过程**将要分析的数据从规范的不可分析的、或不规范不可分析的数据最终变为规范的、可分析的形式**,最终通过 BI 可视化拖拉拽的方式将数据进行有效的、带有逻辑性的组织形成可视化分析报表。

![](http://image.packingdata.com/FuhjTh30vTmgBZlxhRrLqWfGZOS-)

派可数据大屏可视化分析

而大部分的 BI 工具如果重在强调前端可视化的能力,这类 BI 工具的定位就是解决数据可视化分析展现的问题,属于 BI 前端可视化报表工具,但并不能代表 BI 的全部。

如何形象的理解 BI

如果把 BI 可视化实现的过程比作到餐厅出菜的过程,那就是:

**数据源环节 vs 菜市场**

**从各个业务系统取数** —— 按照餐厅营业需求准备所需菜品的原材料,就需要到各个市场买菜。不同的业务系统对应不同的菜市场,不同的菜市场有不同的摊位对应的就是业务系统数据库中不同的数据表。摊位上的菜就可以理解为数据表中的数据,要分析什么就取什么样的基础数据。

**数据仓库 vs 后厨仓库**

**数据仓库环节** —— 从各个市场买回来的菜堆在哪里呢?后厨仓库。有的菜是今天要用的,有的菜是明天要用的,所以先买回来堆起来。从各个系统抽取上来的数据也是如此,这些数据有的来源于 Oracle 系统,有的来源于 MySQL 或者 SQL Server,按照分析需求从不同的数据库抽取之后放到自己的数据仓库中集中管理起来。

**ETL 过程 **——** **厨师做个猪肉炖粉条不可能把整扇猪肉、一颗一颗的大白菜扔到锅里,一定是猪肉切片,大白菜去除坏掉的叶子,菜该切切,肉该剁剁剁。同时,还会备好一些辅助的佐料等原材料,最后把所有的原材料放到操作台上,这个就是备菜( 择菜、洗菜、切菜 )的过程。

![](http://image.packingdata.com/FhOwbRIwu77epoKgn6d40lQ5DeKS)

数据也是如此,把数据从各个业务系统先**抽取( Extract )** 上来,等同于把放在不同仓库格子的菜拿过来。数据要做**转换( Transformation )** ,比如一些脏数据的处理、格式的转换、数据计算口径的统一、指标的计算等等,就如同洗菜、择菜、切菜的过程。最后将处理之后的数据按照一定的模型或者格式**加载( Loading )**到指定的可被前端调用的数据表中,就如同把所有备好的菜放到一起准备下锅。

报表可视化 Reporting vs 上菜

**
**

Reporting 报表可视化就是最后的呈现,也通常视为 BI 的前端,所以也叫做 BI 前端可视化。用户需要什么样的可视化报表,就如同用户点菜一样可以高度定制化,前提是基于已有的原材料(数据)。

![](http://image.packingdata.com/FuJumfovFIdw_ZQcK-0lN8vF5m1R)

```
                                                                                                  派可数据大屏可视化分析
```

所以,大家可以看到从业务系统数据取数到最后的报表呈现实际上经历了很多的阶段。**在商业智能 BI 开发过程中,80% 的时间在处理底层数据( 跑菜市场、买菜、运菜、择菜、洗菜、切菜到备好菜 ),20% 的时间在做可视化分析报表( 做菜 )。**底层数据的处理重点就是 ETL 过程,而实现 ETL 过程的主要方式就是通过 ETL 工具( 例如:Kettle、Informatica、Pentaho、IBM DataStage、Microsoft SSIS 等 )或其它 ETL 框架结合 SQL 查询语句、Stored Procedure 存储过程等方式来组织和管理数据处理的先后顺序。

特别是企业级 BI 项目建设,不仅仅是简单的 ETL 过程还需要涉及非常专业的数据架构设计、数据仓库建模、分层设计等数据仓库的构建,这里面最常用的开发语言就是 SQL。

BI 直接取数分析并不可行

很多 BI 工具会经常强调**直连取数**,这样就不需要写 SQL,直接通过表与表之间的关系进行表间建模,形成一个大宽表,文本类型的就是维度 Dimension,数值类型的变成度量 Measure,通过 BI 前端可视化进行拖拉拽操作形成很多 Ad-hoc Report 即席报表。

在实际演示案例的时候也是如此,最常见的就是一个标准的、数据格式极为标准规范的 EXCEL 表上传一下按照上面的方式来一遍;要么就是销售订单表和销售明细表关联一下,算算订单数量、订单金额等等。

其实验证一下 BI 工具的这种直连且拖拉拽的能力到底有多强非常简单,让业务部门提几个实际的分析需求,现场拿 BI 产品从实际的业务系统中取数来验证一下是否那么容易就明白了。

以下面一个小 DEMO 为例,可以使用任意的国内 BI 可视化分析工具尝试一下当直连到这张表的时候,是不是就可以直接、任意的进行拖拉拽分析。

**
**

案例:统计外包业务的人工效率(时长)

背景:某金融公司把一部分贷款业务外包出去给第三方公司,第三方公司业务人员每与客户联系一次,就会根据沟通的状态记录一下,形成了以下的业务数据表 DurationTime,有以下三个核心字段:

ID - 客户的身份证号,唯一标识 ID

Operation - 一个操作记录,重点节点有 0034、0036、0048

Date - 一个操作记录的时间日期(实际上是时间,为了简化用日期表示)

![](http://image.packingdata.com/FnuSDeWlWj-1V-yEjKUD5ROro1ia)

业务系统中的原始数据表

计算规则如下:

1) 计算0034-0036,0036-0048,0034-0048的时间间隔。
2) 如0036之前没有0034,不可单独计算0036-0048的时间间隔。
3) 如0036后跟着多个0048,则取到最晚的一个0048的时间间隔。
4) 如0034后跟着多个0048,则取到最早的一个0048的时间间隔。
5) ....

实际的计算规则多达 20 多种,就以上面 4 条计算规则为例,最后的计算结果是:

![](http://image.packingdata.com/FmhJcVUXurTykqEKRyCpfVHZ7gDi)

为了得到上面的最终结果,通常往往会创建一些中间转换表,用来记录转换的过程,便于检查和纠正逻辑,这种表我们通常叫做 Transformation 表。

业务系统中的原始数据表的数据规范吗 ?非常规范。但是适合分析吗 ?并不适合。所以在 BI 分析之前要做什么?**那就是写 SQL、ETL 取数,把这种在业务系统中规范的不可分析的、或不规范的不可分析的变成规范的、可分析的数据格式 —— 结果表。**

在实际的 BI 项目开发过程中,来自各个业务系统数据源的数据大部分情况下就是一种不可直接分析的状态,与分析思维不同,他们是描述业务过程的。

还会有一种说法是:可以直连业务数据源,通过写 SQL 查询一个数据集再通过前端 BI 可视化分析工具来呈现做可视化分析报表行不行? 我们的建议是,除了以下几种情况,不要这样做:

第一,这类可视化分析报表基本上就是一次性的,一年可能就改不了几回。

第二,本身数据量不大,使用频率也不会非常的高。

原因在于:**没有合理的建模、指标计算复用性太差、影响业务系统性能、无法应对后续日益增长和不断变化的业务分析需求,按照这种方式做的 BI 基本上不会超过两年就会面临推翻重做的风险。**

所以,在使用 BI 的时候,**不管是直连业务系统数据源的表进行表间关系建模,还是通过写 SQL 查询数据结果集的方式直连业务系统,在大多数情况下都不合理,BI 开发人员应极力避免采用这样的数据操作方式。**这些还都是在没有涉及到多异构数据源取数、主数据档案不一致、组织架构缺失补位、缓慢渐变维度等问题的前提下。

BI 直接取数分析什么样的情况下是可行的 ?

也有朋友说到,我们公司就是直连数据库取数做可视化分析的。我们让朋友回去问了一下,原来连接的是企业已经构建好的数据仓库。**在这种情况下,底层的数据模型相对比较标准,数据也经过了非常良好的格式转换,可以直接使用一些前端 BI 可视化分析工具进行快速的分析,这样的一种搭配就非常好。**

**
**

**更多的时候,我们对这类前端 BI 可视化分析工具的定位应该是服务于个人或者部门级的分析工具,而非企业级的 BI。个人或部门的分析基于数据格式相对良好的数据源来做日常业务的一些分析工作基本上就够用了,但是上升到企业级,面临的挑战就会很大。**

所以,BI 直连数据库不是不可行,但得分清楚直连的是业务系统的数据源数据库,还是直连的是已经通过 SQL 从业务系统的数据源取数和建模处理后的数据仓库、数据集市。

![](http://image.packingdata.com/FnQ9deVNk02H7EjgZYxC_HmVdw2b)

派可数据可视化自助分析平台

IT 和业务的边界就在这里,IT 负责底层数据建模、数据仓库的构建,业务基于已经建好的基础分析模型通过 BI 前端可视化分析工具来进行拖拉拽的可视化分析操作。**倘若是这样,也确实实现了不通过 SQL 取数使用 BI 前端工具就可以做报表的目标。但绝对不能认为,不通过 SQL 取数就可以对接任何业务系统数据源做任何 BI 可视化分析。**

所以,当一家企业底层已经有架构非常良好的数据仓库,这个时候使用一个轻量的 BI 前端可视化分析工具基本上就够用了。**但如果所在企业底层还没有良好的数据仓库系统,只寄希望单纯的使用一个 BI 前端可视化报表工具解决一切分析问题,这个时候就需要认真思考一下是否可行。**

( 全文完,作者:派可数据 吕品,编辑:派小可)

作者介绍:十五年 IT 行业经验,从事过大型软件项目与大型商业智能 BI 项目规划、设计、开发与项目管理。商业智能 BI 行业专家,数据架构师,对于企业 IT 业务信息化和数据信息化的建设有非常深厚的认知。如需对企业 IT 信息化建设、商业智能 BI 等相关话题交流,可通过下方 **派小友 **联系我们。
[/md]
Ficq5Y8YXHbz4f1ct3XWHsEQI-5Z.jpg
“锲而舍之,朽木不折;锲而不舍,金石可镂”。滴水可以穿石,不是因为其力量,而是因为其坚韧不拔、锲而不舍。用一丝不苟的心对待每一件事,只有把根基做深,墙才会筑的更高。
用我们的专业和诚信赢得您的信赖,让每一次合作总能超越期待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则