主题建设之主题表

亿信BI中的分析表大多数都是基于主题表而创建的。那什么是主题?什么是主题表?主题表分哪几种类型、何种场景下使用、又是如何创建的?不同类型的主题表有什么区别等等,这就是我们今天要分享的内容。

什么是主题表?

主题是来自于数据仓库中的一个概念。根据项目需求,数据仓库需要进行主题建模,即根据用户决策时所关心的重点进行源数据的抽取、聚集等,将分散在各个业务系统中的数据根据主题有效的集成,形成事实表。亿信BI根据事实表生成主题表,以方便用户定义分析报表时拾取维度和指标,这就是BI的主题表。

主题表的分类

亿信BI中定义了三种主题类型:物理主题、虚拟主题、引用主题

物理主题

我们最常用的主题一般是物理主题,每个物理主题都会对应一张数据库表;若考虑数据映射方案的情况,有可能对应多张数据库表。

主题表和对应数据库表的结构一一对应,每个字段在数据库表中都对应相应的字段。

物理主题又分为3类主题表,如下表所示:

虚拟主题

类似于数据库中的视图表,在数据库中以存储数据值集形式存在。作用相当于筛选,并且数据可以来自于一个或多个表。可用于复杂的报表模板取数。

在BI中虚拟主题为我们解决了:

1. 可以制作指标来自于多个物理主题表的拖拽式OLAP分析表;

2. 通过虚拟主题表可以定义较复杂、来源于多个物理主题的取数关系,报表模板直接取定义好的虚拟主题表指标,简化了报表模板的制作和维护。

说明:

1. 虚拟主题可拾取该主题集下的所有主题表的维度和指标。

2. 虚拟主题无需关联事实表,其数据来源于多个关联在一起的事实表。

引用主题

在本主题集下对其它主题集下主题表的引用。因为在亿信BI中不能跨主题集取数,因此引入了引用主题的概念。

引用主题仅仅是对其它主题集下主题表的一个引用,没有自己的结构和数据,我们只是把它当做跨主题集取数的一个桥梁而已,最终取数还是来自于它所引用的主题表。

引用主题可以引用除本主题集外,其它主题集下的任意类型的主题表。

如何创建主题表?

选中主题表,鼠标右键,选择“新建主题表”:

输入主题表的“名称”和“标题”,选择要定义的主题表类型,点击:

其中:

【名称】由字母、数字、下划线组成,通常为主题表标题的首字母;

【标题】根据需求定义主题表名称,辨识度高。

下面细说五大类型主题表是如何创建的。

创建物理主题

【使用场景】

1. 主题表上的字段只是后台某个数据库表的很小一部分,此时想直接在前台界面将主题表上手工一一创建相关指标;

2. 后台没有数据库表的结构,想通过前台创建主题表的方式即创建了主题表又创建了后台数据库表结构。

在这两种情况下,都可以直接用创建物理主题表的方式。

【创建步骤】

输入主题表的“名称”和“标题”之后,选择“创建物理主题”,点击“”:

点击“”,添加新节点:

其中:

【名称】通常与数据库表字段名称一致。

【别名】通常根据业务意义进行定义。当主题表的结构发生了变化, 只要别名没有改变,那么在分析表中使用别名引用的字段就不会发生变化或错误。别名可以为空,若不为空,则优先级高于名称。

【标题】对指标进行文字型描述,便于用户的理解和使用。

【是否维】定义是否与维表关联。

【对应维表】如果与维表关联,则选择对应维表。

【数据类型】字段的数据类型,包含6种类型:字符、整型、浮点、布尔、日期和大字段。不同的字段含义选择合适的数据类型。

【长度】字段的长度。

【小数】数值型字段小数点位数。

【允许为空】是否允许空值。

【是否唯一】是否允许数据重复存在。

定义好主题的字段之后,可切换至“树形”模型,通过“”调整字段的顺序:

若检查无问题,点击“”保存主题表,并设置关联数据库表。

保存后,在“主题表”下可看到已创建好的主题表:

在“数据库管理”中查询到“FACT_WLZT1”该张数据库表。

根据数据库表创建物理主题

【使用场景】

数据库已有一张事实表FACT_SRZC_NEW(医疗机构收支表),要求根据该事实表,在BI平台上创建一张主题表。

【创建步骤】

输入主题表的“名称”和“标题”之后,选择“根据数据库表创建物理主题”,点击“”:

在相应的“映射方案”中选择数据库表名“FACT_SRZC_NEW”,点击“”:

完成后,还可对主题表进一步修改,比如添加别名、标题,挂载维表等。

若检查无问题,点击“”保存主题表。

创建带表样的物理主题

【使用场景】

1. 在i@Report中有一张采集报表,现需要在BI中分析其指标,就可以根据采集表样设计带表样的物理主题;

2. 客户已给出分析表样,可根据需求设计带表样的物理主题。

【创建步骤】

比如我想创建一张下图图样的主题,怎么创建?

输入主题表的“名称”和“标题”之后,选择“创建带表样的物理主题”,点击“”:

根据需求设计表样:

给每个字段添加内容,比如“单位名称”,选中右侧表元,添加相应内容:

设置完成后,点击“”保存主题表。

若是这张表样在i@Report中存在采集报表,格式为NPF,可直接将此报表导入到亿信BI中并创建为带表样的主题表。共有2种方式:

第一种:主题表鼠标右键,选择“导入npf文件”:

注意:

此处需要将npf文件压缩上传,适合批量创建带表样的主题表。

第二种:新建带表样的物理主题,点击“”的小三角-》文件-》装入本地文件,适合创建单个带表样的主题表。

带表样的物理主题创建完成后,还缺少关键的一步:给主题表关联数据库。

选中主题表所在的主题集,鼠标右键-》属性:

在“数据表映射”中双击此物理主题,弹出“数据表映射属性”,下拉选择数据库表名:

添加完成后,点击“”即可。

创建虚拟主题

【使用场景】

1. 想分析的指标和维度来自多个主题表中,希望整合到一张主题表中。

2. 想分析的指标需要做再次“加工”且此指标经常被使用。(通过较复杂运算得到)

【创建步骤】

输入主题表的“名称”和“标题”之后,选择“创建虚拟主题”,点击“”:

切换至“树形”模式,在“”上右键选择“成批拾取”:

下方显示该主题集下的所有主题表,点击不同主题表的维度和指标可拾取到该虚拟主题中。

若需要对指标进行分组,可先进行分组,再拾取指标。

再给某个分组下拾取指标,指标还可进行各种运算:

若检查无问题,点击“”保存主题表。

创建引用主题

【使用场景】

1. 想分析的指标来源于不同主题域下的主题表;

2. 想分析的指标来源于不同的数据库连接池(即不同的数据库用户);

3. 想分析的指标来源于不同种类的数据库。

【创建步骤】

输入主题表的“名称”和“标题”之后,选择“创建引用主题”,点击“”:

下拉选择除本主题集以外,不同主题域下的各类型的主题表:

点击“”即可。

主题表编辑模型

主题表的编辑模型共有以下四种:

列表

主题表默认列表显示,可见字段名称,标题,类型等。

树型

该模式主要是层次比较清晰,可以增加分组,编辑查看起来也比较方便。

xml

主题表内容都保存在xml中,xml编辑器主要是针对那些需要从外部拷贝粘贴一些xml内容到编辑器中进行快速批量编辑的操作。

可视化

该模式给用户提供一种可视化的建模方法,通过简单的拖拽就能很快的定义出一张主题表;并且在可视化模式下,维表和事实表的关联直观表达给我们。

四种不同的模式具有不同的优缺点:

本文来自企鹅号 - 小亿资讯媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PHP在线

关系型数据库与NoSQL数据库场景说明

一个程序员很有必要熟悉或者精通一种数据库,MySQL无疑是首选。为什么使用MySQL呢,因为它是开源的,同时具备轻量、简单、稳定和高性能等特点,尤其是其学习成本...

3496
来自专栏SDNLAB

SDN实战团分享(三十一):Nutanix超融合之架构设计

超融合平台 针对于超融合的概念有着不同的理解,因为组件不同(虚拟化、网络等)而理解不同。然而,核心的概念如下:天然地将两个或多个组件组合到一个独立的单元 中。在...

3967
来自专栏Java架构师学习

通过 Java 线程堆栈进行性能瓶颈分析

2996
来自专栏H2Cloud

游戏服务器设计之任务系统

游戏服务器设计之任务系统 介绍 任务系统是游戏中最重要的系统之一,本文旨在设计一个轻量清晰的任务系统。通用易扩展是本系统关注的重点。任务系统中当角色的条件满足时...

7464
来自专栏LET

谈谈JavaScript代码优化

2366
来自专栏听雨堂

水晶报表的推模式

在一个多层结构中,水晶报表的使用往往比较繁琐:     1、在项目中添加数据集,形成xsd文件     2、利用xsd文件,在水晶报表环境中生成报表     3...

2195
来自专栏Java后端技术栈

面试必备:如何将一个长URL转换为一个短URL?

前几天整理面试题的时候,有一道试题是《如何将一个很长的URL转换为一个短的URL,并实现他们之间的相互转换?》,现在想起来这是一个绝对不简单的问题,需要考虑很多...

4312
来自专栏北京马哥教育

Python黑科技:利用Python实现微博监控小姐姐动态

? 0x00 前言: ? 前几个星期在写一个微博监控系统 可谓是一波三折啊 获取到微博后因为一些字符编码问题 导致心态爆炸开发中断 但是就在昨天发现了另外一个...

5905
来自专栏Python专栏

Python | 利用Python实现微博监控小姐姐动态

作者:奶权 来源:http://www.jianshu.com/p/9e7ba0a0a610

3402
来自专栏思考的代码世界

Python网络数据采集之创建爬虫|第00天

开始本系列的文章时,可能你需要了解一下Python的基础知识,熟悉Python的基本编程,了解一些网络知识等。如果不是特别了解,可以看看我的Python基础系列...

4285

扫码关注云+社区

领取腾讯云代金券