开发图表最关键的点在于选择准确的图表类型展示准确的数据,而准确的数据往往依赖于一个强大的取数模型,因此设计一个好的取数模型不仅可以解决数据安全的问题,更可以帮助每个访问者高效触达自己想要的数据,开发者可以通过使用Quick BI建立起多层次多粒度的取数模型。

在构建取数模型前,简单介绍一下数据集的概念。Quick BI 目前已经支持为20多种数据库建立连接,建立连接后我们会在系统内为每个连接生成一个逻辑实体称之为数据源。通过预览数据源可以查看对应数据库下面的物理表信息,并能够基于这些物理表创建数据集, 每个数据集都是基于物理表加工和建模后的标准OLAP模型。在Quick BI 中, 对用户表数据的读取和加工一般都是基于数据集模型的。

目前,Quick BI中的取数模型包括如图1所示的两层:

图1 Quick BI中的取数模型

第一层:

数据集过滤器,在Quick BI中数据集可以被多个仪表板的多个图表所引用,通过将过滤器设置在某个数据集上,空间内的数据开发人员可以确保所有引用该数据集的图表分析人员访问到的数据都受到范围限制。

根据过滤器的作用范围可以划分为全局过滤器和行级权限过滤器。

1、全局过滤器

顾名思义是会影响到所有引用该数据集的图表和用户,设置定后可以通过刷新预览功能来核对过滤后的数据,通过图2的方式可以设置全局过滤器。

图2 数据集全局过滤器

2、行级权限

可以让数据开发人员根据图表访问者的账号、标签或所属的用户组来定制其可以访问的数据范围,设置在用户级的过滤器会以“or”的方式继承其所属用户组的过滤器,通过图3的方式在数据集列表上可以设置行级权限过滤器。注意,使用这两种方式设置在度量上的过滤器都是明细级的过滤器,未做任何聚合。

图3 行集权限过滤器

第二层:

图表级过滤器,这类过滤器在设定时会指定作用的图表范围,只有选中的图表显示数据时才会受到影响。在此基础上,还可以根据作用的方式分为设定式和触发式。

1、设定式过滤器

由仪表板开发者在编辑模式下设置,预览模式下用户无法改变过滤器的设置,作用范围内的图表也会一直受到过滤器的限制,设定式过滤器包含了内部过滤器和全局参数。

1.1内部过滤器

只会作用于当前图表,当被设置成度量过滤器时还可以选择聚合方式,聚合方式支持sum、 cnt、max、min、avg、cntd, 它的设定方式是在仪表板编辑模式下通过拖拽数据集字段来设定如图4所示。

图4 内置过滤器

1.2全局参数

需要生成参数名并设置作用范围,其作用机制是通过拼接url参数来完成条件的注入的,拼接格式如下:

param=[{"paramKey":"moci","joinType":"and","conditionList":[{"operate":"=","value":"华北"}]}]

,用户可以直接修改url参数内容来达到数据控制,也可以在邮件订阅和图表跳转功能中快捷引用, 它的设定方式是在顶部菜单中选择全局参数来设定如图5所示。

图5 内置过滤器

2、触发式过滤器

能够在编辑模式设置初始值,在预览模式下也可以通过特定的操作来改变关联图表的显示数据,查询条件和联动参数属于触发式过滤器。

2.1查询条件功能非常强大,它支持让报表开发者自由的选择字段,选择聚合方式,设置作用图表,设置过滤初始值以及设置待选范围,而预览者可以在开发者限定的范围内自由切换过滤条件,其设定方式如图6所示。

图6 查询条件

2.2联动参数是建立在图表之间的一种作用关系,在可配置联动图表上配置了联动字段和作用图表后,预览者可以通过点击联动图表的某些区块来达到为被联动图表同步注入过滤条件的目的,其设定方式是先选择要联动的图表,然后在高级区域进行配置,如图7所示。

图7 联动参数

上述几种过滤器应用的场景各不相同,他们是通过AND的方式相互叠加的,仪表板编辑模式下图表菜单里有一个强大的查看SQL功能,可以看到当前取数模型生成的SQL语句,方便开发者对当前的取数模型进行调整。在真实的业务场景中的往往要组合他们中的一到多种才能建立起完成的取数模型,以一家销售公司为例,通过使用全局过滤器过滤掉无效数据,通过使用行级权限来控制每个销售团队只能看到自己辖区的销售结果汇总,通过使用全局参数来生成不同的链接给每个预览者看到关注产品的销售汇总,通过查询条件和过滤器来控制和切换不同客户的销售数据,通过联动参数来方便预览者直接关联其他图表查看某个客户的具体信息。

图8 查询条件