开发图表最关键的点在于选择准确的图表类型展示准确的数据,而准确的数据往往依赖于一个强大的取数模型,因此设计一个好的取数模型不仅可以解决数据安全的问题,更可以帮助每个访问者高效触达自己想要的数据,开发者可以通过使用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 查询条件

Quick BI取数模型深度剖析的更多相关文章

  1. 阿里云Quick BI——让人人都成为分析师

    在3月29日深圳云栖大会的数据分析与可视化专场中,阿里云产品专家潘炎峰(陌停)对大数据智能分析产品 Quick BI 进行了深入的剖析.大会现场的精彩分享也赢得观众们的一直认可和热烈的反响. Quic ...

  2. Quick BI助力云上大数据分析---深圳云栖大会

    在3月29日深圳云栖大会的数据分析与可视化专场中,阿里云产品专家陌停对大数据智能分析产品 Quick BI 进行了深入的剖析.大会现场的精彩分享也赢得观众们的一直认可和热烈的反响. 大数据分析之路的挑 ...

  3. Objective-C类成员变量深度剖析--oc对象内存模型

    目录 Non Fragile ivars 为什么Non Fragile ivars很关键 如何寻址类成员变量 真正的“如何寻址类成员变量” Non Fragile ivars布局调整 为什么Objec ...

  4. Quick BI 的模型设计与生成SQL原理剖析

    一.摘要 随着物联网的告诉发展,数据量呈现井喷式的增长,如何来分析和使用这些数据,使数据产生商业价值,已经变得越来越重要.值得高兴的是,当前越来越多的人已经意识到了用数据分析决定商业策略的重要性,也都 ...

  5. BW ON HANA 业务模型关系与数据取数

    在接到业务需求之后,我认为重要的是理清楚自己该做什么.来实现业务.由于不了解业务,还是走了很多弯路.本可以不用这么做,还是这么做了.自然你最傻瓜的按照用户的方式去实现是没有问题的. 会使后面的人难以维 ...

  6. Quick BI的复杂系统为例:那些年,我们一起做过的性能优化

    背景 一直以来,性能都是技术层面不可避开的话题,尤其在中大型复杂项目中.犹如汽车整车性能,追求极速的同时,还要保障舒适性和实用性,而在汽车制造的每个环节.零件整合情况.发动机调校等等,都会最终影响用户 ...

  7. Objective-C类成员变量深度剖析

    目录 Non Fragile ivars 为什么Non Fragile ivars很关键 如何寻址类成员变量 真正的“如何寻址类成员变量” Non Fragile ivars布局调整 为什么Objec ...

  8. 大众点评开源分布式监控平台 CAT 深度剖析

    一.CAT介绍 CAT系统原型和理念来源于eBay的CAL的系统,CAT系统第一代设计者吴其敏在eBay工作长达十几年,对CAL系统有深刻的理解.CAT不仅增强了CAL系统核心模型,还添加了更丰富的报 ...

  9. LCD深度剖析

    LCD 深度剖析 来源:http://blog.csdn.net/hardy_2009/article/details/6922900 http://blog.csdn.net/jaylondon/a ...

随机推荐

  1. sql不用拼接语句实现动态查询条件

    DECLARE @oFrom INT SELECT * FROM baseinfo AND ( ( and Type = 'Breakfast') ) or的条件可自由添加,尤其适用互斥条件的查询.

  2. nginx源码分析——数组

    ngx_array.h /* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */ #ifndef _NGX_ARRAY_H_INCLU ...

  3. 用docker部署zabbix

    官方文档 https://www.zabbix.com/documentation/3.4/zh/manual/installation/containers 1 启动一个空的Mysql服务器实例 d ...

  4. GC 案例收集整理

    1.数组动态扩容  现象:系统一直在做cms gc,但是老生代一直不降下去,但是执行一次jmap -histo:live之后,也就是主动触发一次full gc之后,通过jstat -gcutil来看老 ...

  5. ubuntu 更新国内源

    1.备份原有源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 2. 修改文件并添加国内源 vi /etc/apt/sourc ...

  6. mysql数据库创建数据库创建用户授权

    Liunx下登录数据库 >mysql -u 用户名 -p 创建myblog用户,本地登录,口令是myblog create user 'myblog'@'localhost' identifie ...

  7. HtmlHelper1

    <div> @using(Html.BeginForm("Test","Default")) { 4 @Html.TextBox("nam ...

  8. 06-6-es6模板字符串

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. pandas一些基本操作(DataFram和Series)_1

    ##生成一个一维数组import numpy as np;nb7 = np.arange(0,100,2);print(nb7)print("======================== ...

  10. 更新CM版本

    照着这个文章搭建的 https://blog.csdn.net/sinat_32176947/article/details/79597073 需要注意问题有 离线需要自己配置yum 地址base地址 ...