一文带你看懂为什么Smartbi V10要打造全新的数据模型?

ByteCodeTrail
• 阅读 1150

首先,要搞清楚什么是“数据模型”?

现实世界中的事物要让计算机进行管理,必须通过“数据模型”对其进行抽象、模拟,然后再存放在数据库系统里面。

数据模型有不同的建模方法,最常见的就是“范式建模”。业务数据库、数据仓库通常都会采用这种建模方法。

但是,面向数据分析的数据集市一般会采用“多维建模”。

这也是源于日常数据分析的场景。

例如,一个企业在考虑产品的销售情况时,通常从时间、地区和产品的不同角度来深入观察产品的订单数、销售金额、同环比增长。

从这个例子中,可以抽象出两部分的内容:维度和度量。

维度有时间、地区、产品,是观察数据的一种角度。

度量有订单数、销售金额、同环比增长,是数据聚合运算的结果。

这种以维度和度量来组织数据的方法,叫做“多维模型”,包括维度表和事实表。

维度表储存维度的描述,信息比较固定,且数据量小。

事实表储存维度和度量,度量通常是数值类型,且记录数会不断增加。

数据集市是用来做数据分析的,采用“多维建模”的方法,再合适不过了。

一文带你看懂为什么Smartbi V10要打造全新的数据模型?

一、数据模型的多维建模

虽然数据集市已经做好多维建模,但是需要专门的数据人员来设计,对于整个BI系统的开发来说,敏捷性和灵活性都不够。

如果BI产品把“多维建模”的能力也整合进来,BI技术人员可以按照需求随时进行可视化建模,效率将得到极大提升。同时,通过产品构建的多维模型,可以和上层应用做更好的协同,产品功能将得到全面增强。

这就是Smartbi V10实现多维建模的初衷。

Smartbi V10的多维建模支持星型模型、雪花模型、星座模型等多种模型:

一文带你看懂为什么Smartbi V10要打造全新的数据模型?

例如,一家零售企业要看全国商店的盈利明细,还有各城市“每平盈利”排行榜以及分布。

在Smartbi V10数据模型中,把相关的事实表(销售、商店)、维度表(产品类别、产品信息)用鼠标拖进来,并根据表之间的关系(多对一、一对多、内连接、外连接)做好关联:

一文带你看懂为什么Smartbi V10要打造全新的数据模型?

在“度量”区域通过简单操作生成各种指标:

一文带你看懂为什么Smartbi V10要打造全新的数据模型?

然后在“自助仪表盘”里面基于这个数据模型,即可快速生成以下仪表盘:

一文带你看懂为什么Smartbi V10要打造全新的数据模型?

二、数据模型的多种查询类型

数据模型需要解决一个关键的问题:源数据怎么取?

数据的来源多种多样,在Smartbi V10之前版本中也存在多种数据集,包括SQL、存储过程、即席查询、Excel文件和JavaScript脚本等。而在Smartbi V10中,只有“数据模型”一个入口,可以查询各种类型的数据,并且支持跨库数据整合:

一文带你看懂为什么Smartbi V10要打造全新的数据模型?

查询的多样化,可以让数据模型的构建更加灵活。

例如,要统计银行各营业部,近5天购买金融产品金额超过1万的客户数,这里涉及到二次汇总的问题。在Smartbi V10数据模型里面,用“即席查询”把满足条件的客户先查询出来:

一文带你看懂为什么Smartbi V10要打造全新的数据模型?

然后对查询出来的结果(事实表)创建“客户数”的度量即可:

一文带你看懂为什么Smartbi V10要打造全新的数据模型?

多种查询类型也可以联合使用。例如,一名业务员需要分析销售数据,但是有关数据都放在不同的地方,部分数据是放在个人电脑的Excel上:

一文带你看懂为什么Smartbi V10要打造全新的数据模型?

这个时候怎么办呢?下面做了演示:

一文带你看懂为什么Smartbi V10要打造全新的数据模型?

三、强大的计算能力

Smartbi V10数据模型具有强大的计算能力,体现在两个方面:ETL数据处理和多维计算。

在建模过程中,融合ETL的强大数据处理能力对源数据进行预处理,包括筛选、去重、拆分列等。数据模型里面的表、SQL、存储过程、即席查询等都可以直接转ETL高级查询,从而实现复杂数据场景的处理,并且解决大表关联的问题,避免系统崩溃。

例如,订单表里“订单编号”字段存在重复的值,我们可以在查询订单表的ETL流程中,利用“去除重复值”的功能节点进行去重,也可以拆分字段:

一文带你看懂为什么Smartbi V10要打造全新的数据模型?

Smartbi V10数据模型同时具有多维复杂计算能力,支持自定义成员和自定义命名集。

自定义成员指基于原有维度成员的基础上创建新的维度成员,成员可以是单个对象,也可以是成员的集合。

例如要新建一个“一线城市”的维度,在“新建计算成员”页面下把对应的城市拖进来即可:

一文带你看懂为什么Smartbi V10要打造全新的数据模型?

然后在上层应用就可以直接使用“一线城市”这个维度了:

一文带你看懂为什么Smartbi V10要打造全新的数据模型?

自定义命名集可以包含固定的维成员集,也可以包含能解析为集合的表达式。

例如要新建一个“销量排名前3的城市”,在“新建命名集”页面下,选择系统提供的MDX函数和对应的维度和度量,后续在应用里面就可以直接使用了:

一文带你看懂为什么Smartbi V10要打造全新的数据模型?

四、灵活的数据加载

Smartbi V10数据模型提供“直连”和“抽取”两种数据加载模式。

当企业出于数据安全考虑,不允许数据加载到其他系统;或者数据频繁变化,又要求看到最新的数据;或者数据量大且客户本身的存储性能很高时,适合用直连模式。

导入文件、脚本查询、ETL高级查询、存储过程查询必须用抽取模式。如果原始数据性能慢,希望提升查询速度;或者数据变化频率不高的情况下,也适合用抽取模式。

此外,Smartbi V10数据模型也支持“按次抽取”。例如需要实时数据,但又无法使用直连方式(如模型含存储过程);或者模型中的一部分数据和用户有关(如权限),同时又不能使用直连方式。这些情况下,Smartbi后台的缓存库按session 、查询的参数组合进行抽取存储,当环境发生变化时就重新抽取。

正如一部汽车的动力取决于引擎,Smartbi V10通过打造全新的数据模型,封装更多的操作并进行优化,从“引擎”上提高效率,为上层应用(自助仪表盘、电子表格等)输出更澎湃的“动力”,全面提升产品的功能性和便捷性。

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
javaBean为什么要implements Serializable
一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的。因此如果要序列化某些类的对象,这些类就必须实现Serializable接口。而实际上,Serializable是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化。    什么情况下需要序列化:    1.     当
Stella981 Stella981
3年前
PhoneGap设置Icon
参考:http://cordova.apache.org/docs/en/latest/config\_ref/images.html通过config.xml中的<icon标签来设置Icon<iconsrc"res/ios/icon.png"platform"ios"width"57"height"57"densi
可莉 可莉
3年前
18个常用 webpack插件,总会有适合你的!
!(https://oscimg.oschina.net/oscnet/71317da0c57a8e8cf5011c00e302a914609.jpg)来源| https://github.com/Michaellzg/myarticle/blob/master/webpack/Plugin何为插
Wesley13 Wesley13
3年前
MySQL总结(十一)子查询
!(https://oscimg.oschina.net/oscnet/upa344f41e81d3568e3310b5da00c57ced8ea.png)子查询1\.什么是子查询需求:查询开发部中有哪些员工selectfromemp;通
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
API 小达人 API 小达人
2年前
为什么要 API 优先?
最近关于APIFirst(API优先)作为设计和开发方法的讨论很多,虽然通向APIFirst的途径有很多,但通常推动APIFirst的一般都是API架构师、API设计师和API平台负责人等,很好理解,因为他们对组织中API的效率、互操作性和质量最感兴趣。
达里尔 达里尔
1年前
给数组添加新数据,判断数据是否重复
多选要进行数组拼接,希望判断往原数组里添的新数据是否重复,封装个简易方法languageconstdataArrayname:'aaa',id:1,name:'bbb',id:2;constnewDataname:'ccc',id:2;//要添加的新数
taskbuilder taskbuilder
8个月前
创建学员信息数据模型
3、创建学员信息数据模型使用TaskBuilder开发应用的第一步就是先创建数据模型,数据模型是用来存储应用数据结构的文件,可以定义各项业务数据有哪些字段,每个字段的数据类型、长度、是否为空等,TaskBuilder提供了一个可视化的数据模型设计器,可以不