双向筛选本质要解决的是数据多维度分析。
本文面向使用Smartbi 的数据建模者,它指导你何时创建双向模型关系。
1、本文不涵盖对模型关系的介绍。 如果你对模型关系、其属性或配置方法并非完全熟悉,建议先阅读 设置查询关系 一文。 2、此外,还应了解星型架构设计,这一点也很重要。 有关详细信息,请参阅星型架构。 |
在创建双向交叉筛选时,请记住以下几点:
|
双向筛选可以满足特定要求的场景有以下三种:
在创建以下特殊模型关系类型时,双向关系起着重要作用:
1、由于示例使用了 业务表 进行分析,在复现示例时,可以把数据先导入到模型中,详细请参考:导入文件数据。 2、示例下载数据:双向筛选.xls。 |
1、双向关系可以将筛选器值限制为,显示与数据所在位置相关的项,为了帮助解释它的含义,先来看看下面的模型图。
表名 | 字段名 |
---|---|
Customer | 它包含以下三列:Region、Customer 和 CustomerCode。 |
Product | 它包含以下三列:Color、ProductName 和 SKU。 |
Sales | 它包含以下四列:CustomerCode、OrderDate、Quantity 和 SKU。 |
Customer 和 Product 表是维度类型表,它们与 Sales 表之间都有一对多关系。 每个关系都是默认单向筛选。
为了帮助介绍双向筛选的工作原理,模型图已修改为显示表行。 当前示例都以此数据为依据。
下面介绍三个表 行 详细信息:
CustomerCode | Customer | Region |
CUST-01 | Customer-1 | 华南 |
CUST-02 | Customer-2 | 西北 |
SKU | ProductName | Color |
BB-7421 | T-shirt | Green |
BC-M005 | Jeans | Blue |
BB-8107 | Hat | Blue |
OrderDate | CustomerCode | SKU | Quantity |
2023/10/7 | CUST-01 | BB-7421 | 10 |
2023/10/8 | CUST-01 | BB-8107 | 20 |
2023/10/9 | CUST-02 | BB-7421 | 30 |
3、看下现在显示的报表效果:
报表中有2个筛选器,一个用于Customer的”区域“,它包含以下俩项:
第一个筛选器是“地区”,它包含以下两项:“华南”和“华北”,此筛选器当前值“华北”;
第二个筛选器是“产品”,它包含以下三项:“T-shirt”、“Jeans”和“Hat”,未选中任何项(即未按任何产品筛选);
组件上的数量显示: 30。
当要查询”地区“为:华北,并且“产品”要显示与华北相关的选项。
为了实现此行为,可以将 Product 与 Sales 表之间的关系配置为双向筛选,如下图所示:
“产品”筛选器现在列出一个项,即“T-shirt”。 此项表示唯一销售给”华北“的产品”:
首先,建议仔细考虑这种设计是否适用于报表用户。 一些报表用户觉得这种体验令人困惑, 不理解为什么在自己与其他筛选器交互时,筛选器值会动态显示或消失。
此外,双向关系需要更多处理,因此可能会对查询性能产生负面影响,尤其是在模型中的双向关系数量增加时。
另一种涉及双向关系的场景是,将事实类型表视为桥接表。
通过这种方式,支持在不同维度类型表的筛选器上下文中分析维度类型表数据。
比如,基于上文示例模型数据,查询“每个产品在多少个国家进行过销售“?
由于事实类型表的行为类似于桥接表, 需要筛选器从一个维度类型表传播到另一个,关联两个维度类型表,需要配置至少一个双向筛选关系。
以设置Sales与Customer的方向为双向筛选,如下图:
“产品在不同国家/地区销售量”度量值表达式求值期间,Customer 与 Sales 表之间的关系为双向筛选。
下面的组件显示了每种售出产品的统计信息。 “Quantity”列只计算数量值的总和,“区域销售量(唯一计数)"代表每个产品在多少个国家进行过销售,如下图所示:
Smartbi数据模型视图界面,这个视图界面是用来搭建表之间的连接关系的,也就是一个多维的数据模型,搭建不同的多维数据模型可以在不同的表中取字段来看另外一张表中的值,这里所指的连接分为两个,一个是连接关系,另一个是连接方向,在线的两端的一和多是连接关系,另一个就是图中的小箭头,它是代表连接方向的,也称为筛选器方向,筛选器方向分为单项和双向的,例如上图的单箭头,它表示的含义就是一表筛选多表,不能多表筛选一表。
设置交叉筛选方向将决定筛选器的传播方向,可能的交叉筛选选项取决于基数类型。
基数类型 | 交叉筛选选项 |
---|---|
一对多(或多对一) | 单向 默认:单向 |
一对一 | 单向 默认:双向 |
1、假设A与B表相关联:
2、双向筛选与单向筛选相比,最大的区别是:双向可以在不同表/查询的维度之间创建联动,而单向只能是:是一表筛选多表,不能多表筛选一表。 |
在一对多关系中,交叉筛选方向始终从“一”侧开始,也可以选择从“多”侧开始(双向);
在一对一关系中,交叉筛选方向始终同时从两个表开始。
关系可设置为单向和双向;单向关系中,上下文筛选器可以从单侧传递到多侧,但不能反向传递。