MicroStrategy报表开发流程

前言

最近接手的报表项目衍生的MicroStrategy初步开发流程,记录整体流程开发步骤,以防以后遗忘,会随着经验的累计而更新(大概)。

开发流程

1.前置

在项目开始之前,MSTR有几步很关键的前置需要确认,否则可能连启动项目源都无法顺利执行。

确认Server

通常情况直接在客户方开发时客户方服务器会提前准备好相关的环境(创建项目源等),但自己使用时需要提前确认相关项是否存在问题,以防后续开发工作不能顺利进行。

首先打开MicroStrategy Developer,Developer目前使用后初步定义为MSTR的主要编辑/开发场景,通过Developer对项目对应的项目源进行连接,连接时需要输入账号以及密码。

MicroStrategy Intelligence Server可以通过Service Manager管理。

若存在MSTR项目源无法启动,可通过日志文件查看具体原因所在,日志文件路径根据配置决定,文件名为DSSErrors.log

推测默认安装在
盘符:\Program Files (x86)\Common Files\MicroStrategy\Log判断日志文件可以根据文件最新的修改时间来确认。

报表项目初步开始时发现项目源已经创建,但无法启动相应服务,因此查看日志信息,获取以下信息。

--服务器未启动
[Error][0x80043705] 连接失败。可能的原因是 a)服务器不在运行 b)服务器正在载入项目 c)网络问题 d)服务器达到的连接数限制--服务未激活
[Fatal] Intelligence Server因为没有激活所以不能启动。请通过License Manager或者通过访问在https://licensing.microstrategy.com的激活网站来激活你的安装。

确认为激活问题,与客户方沟通后解决。

确认服务

MSTR在启动后会有一条叫做MicroStrategy Intelligence Server的服务需要手动启动(可能根据客户的设置来决定是手动/自动)。

--怎么打开服务?
开始菜单---->搜索框---->搜索'服务'---->齿轮图标的就是

项目初期我并没有启动成功,根据日志文件推测是客户方还未激活其测试机器上的Server,与客户方反馈后解决了该问题。

确认项目源

推测项目源基于Intelligence Server进行连接,Server不启动项目源也无法连接,如果两者都并未存在,则可能需要自己手动创建新项目源。

2.连接/创建项目

一个项目源底下可以有多个项目,在Developer中定义的MSTR对象隶属于项目。
Developer自带项目生成向导,选项栏:框架—->创建新项目,然后根据向导进行创建,创建过程并无太大难度。

3.创建数据库实例

数据库实例基于数据源建立,而数据源需要通过MicroStrategy Connectivity Wizard进行配置,所以在创建数据库实例之前需要先通过MicroStrategy Connectivity Wizard配置连接信息。

--MicroStrategy Connectivity Wizard所在位置
开始菜单---->MicroStrategy Tools---->connectivity Wizard--具体配置信息
目标数据库类型
目标数据库地址
目标数据库账号密码
····(与通常连接数据库填写的相关项相似)

数据源连接配置成功后,可以进行相关的数据库实例创建。

数据库实例位置:项目源—>管理—>配置管理器—>数据库实例,右键即可直接新建。

4.表格获取

数据库实例建立成功以后,还需要将本次报表开发相关的表导入项目,才能在后面的对象中被引用。

进入到对应的项目下,在工具栏选择:框架—->数据仓库(确认一下有没有开只读模式)。

然后就选择自己创建的数据库实例,将数据库中报表关联的数据表从左边移到右边,确认后点击保存并关闭,然后选择图标一栏最右边的更新框架。

5.创建实体

创建实体需要也需要根据实际的业务需求来决定,本次项目中并未需求多张表的同一字段/度量,所以创建过程相对简单。

1.在创建好的实体文件夹下,右键--->新建--->实体
2.这时候会弹出实体的编辑界面,会让你选择之前导入数据仓库的表、相应的字段,若对字段值无过多编辑,直接双击即可。另外还会有一个选项选择自动/手动获取映射关系,推荐手动。
3.完成以后进入第二个编辑页面,这个页面主要是关于实体对应的映射源表,以及对实体的一些属性配置,根据业务的情况来进行调整。
4.全部完成后进入第三个也是最后一个编辑界面,这个界面可以让你确认之前配置的一些重要信息,同时也可以配置父/子实体关系以及实体的展现形式。后面两者项目并未涉及,所以我直接进行了保存。
5.保存时命名需要规律,尽量避免重复,否则可能导致后面一些很低级的失误。

根据观察,每一个项目创建以后都会有一个公共对象,建议在其中创建子文件夹开发报表(也可以自己创建文件夹开发报表),创建以后,建议将实体、度量、报表等对象也建立子目录保存在对应目录下,并且创建时尽量不要创建多次,或者跨多级文件夹调用,以防出错,同时,创建完成后需要检查一次实体的配置,查看映射、对应表相关配置是否正常。
根据本次报表开发经验,由于主要展出为报表,可以将实体等对象建立在别的文件夹中,保证展示端只能看到报表。

另外需要注意一点,若需要用户账号可以查看报表,可能需要给报表以及实体手动设置账号的查看权限,否则会存在权限上的问题导致报表无法顺利展现。我第一张报表开发完成时,使用测试账号进入了Developer来进行测试账报表的完成度,但由于没有给实体赋予测试账号的查看权限,所以运行报表时会报错。

6.创建提示

提示相当于查询筛选,可以通过给报表添加提示,保证用户在查看报表时可以根据实体的元素(等对象元素(大概))来决定报表展现的内容。

提示同实体等对象创建方法相同,但是对象会基于实体元素等条件来进行创建,创建时可以对提示的进行一些相关配置。

例如:
是否可以多选
是否必须回答
筛选栏样式
最大、最小回答数
···

7.创建报表

一般来说,当报表相关对象开发完成以后,可以直接进行报表的开发,在创建报表以后找到相应对象所在文件夹,将对象拼接入报表。

本次项目我所使用的只有两个对象:实体以及提示。实体可以作为报表中的列,直接双击即可导入报表,可以通过光标拖拽进行调整,亦可以通过web端直接编辑报表列宽等格式。提示需要进行手动拖拽到筛选器栏,并且提示顺序的不同会影响到在web端的使用效果。

报表在完成对象导入以及编辑后,可直接运行查看效果,但不推荐,在数据量较大的情况下,直接在Developer中查看数据很可能回存在卡顿现象(根据服务器来决定),可以在报表开发完成后先进行保存,之后在web端通过最高权限账号进行效果的查看以及更改。

报表以及对象的每一次编辑保存后都需要手动进行更新框架的操作,保证改动同步至项目中,同时,报表每次查询默认会开启缓存机制,即当报表相关实体对应的数据表数据清空,报表依然会缓存上次运行的结果,所以如果需要进行实时数据展现,可能需要涉及关闭缓存机制。

8.账号赋权

报表确认展示效果无误后,可以进行用户账号的建立,用户账号通常只有查看权限,根据需求的不同,也需要对用户账号设置限制,使他们所获取的数据在限制范围内。

用户的创建也在项目—>管理下进行,管理下有一个关于用户管理的子选项,通过该选项可以查看到的各个用户组的信息,也可以选择手动创建用户组。

用户组下可以建立多个用户,在创建时除了基本的密码账号设置,亦可以设置用户在不同项目的权限。对报表以及实体的赋权可以通过右键其所在文件夹的属性中,递归赋予查看权限。

用户查询限制需要通过安全筛选器实现,也可以在编辑用户中针对不同项目创建不同的安全筛选器,安全筛选器与筛选器创建上并无太大区别,都是结合实体元素限制用户查询的范围在自定义的实体元素范围内,例如:一个实体含有A\B\C三个元素,我可以通过安全筛选器限制用户查询该实体只能显示A元素所对应的数据。安全筛选器启用后,不仅对实体,对报表以及提示均会生效(有时候亦可能不起作用)。

9.查看效果

用户账号的赋权以及对应项目的对象权限设置完成后,可以直接通过Web端来登陆访问项目,查看对应的报表效果是否可行。

10.Dossier

Dossier也叫文件集,在我的理解看来,它可以通过导入数据的形式对数据进行相应的展现,有点类似于报表的UI界面,相较于报表,Dossier具有更好的观赏性,并且结合Dossier亦可以做到报表的效果,对数据的展现以及筛选、图形化数据展现等等效果都可以实现,编辑上相较于报表亦略显简易,但存在一个问题,导入数据集后,Dossier的数据集有时候不会随着随着数据的更新而更新,因此推测,当Dossier数据导入后,数据就作为一个备份保存在了这个对象中,并不会收到实际数据变动的影响,因此,若需要效果会随数据的变动而自动改变,则使用报表更为稳定(不启动缓存)。

结尾

本次流程偏向初入门开发流程,并且由于我直接使用存储过程得到了需求所要的效果数据表,并未通过维度表结合MSTR的形式来进行展现,这一方面会在后期有机会接触时更新,写的或许很粗糙,请见谅。