页面树结构
转至元数据结尾
转至元数据起始

双向筛选本质要解决的是数据多维度分析。

本文面向使用Smartbi 的数据建模者,它指导你何时创建双向模型关系。 

1、本文不涵盖对模型关系的介绍。 如果你对模型关系、其属性或配置方法并非完全熟悉,建议先阅读 设置查询关系 一文。

2、此外,还应了解星型架构设计,这一点也很重要。 有关详细信息,请参阅星型架构

注意

在创建双向交叉筛选时,请记住以下几点:

  • 在启用双向筛选器之前认真思考:如果在每个位置都启用双向筛选器,则你的数据可能会过度筛选,或者导致数据混乱,需要根据业务模型优化关系。

  • 如果创建多个潜在的查询路径,可能会无意中造成歧义,若要避免这两个问题,请规划使用单向和双向筛选器的组合。

  • 建议尽量减少使用双向关系, 此类关系可能会对数据模型查询性能产生负面影响。

双向筛选可以满足特定要求的场景有以下三种:

1 特殊模型关系

在创建以下特殊模型关系类型时,双向关系起着重要作用:

  • 一对一关系:所有一对一关系默认是双向的,可以手工改成单向,一对一关系,详参:设置查询关系

2 同步筛选器值

1、由于示例使用了 业务表 进行分析,在复现示例时,可以把数据先导入到模型中,详细请参考导入文件数据

2、示例下载数据:双向筛选.xls

1、双向关系可以将筛选器值限制为,显示与数据所在位置相关的项,为了帮助解释它的含义,先来看看下面的模型图。

表名字段名
Customer它包含以下三列:Region、Customer 和 CustomerCode。
Product它包含以下三列:Color、ProductName 和 SKU。
Sales它包含以下四列:CustomerCode、OrderDate、Quantity 和 SKU。

 Customer 和 Product 表是维度类型表,它们与 Sales 表之间都有一对多关系。 每个关系都是默认单向筛选。

为了帮助介绍双向筛选的工作原理,模型图已修改为显示表行。 当前示例都以此数据为依据。

下面介绍三个表 行 详细信息:

  • “Customer”表包含以下三行:
CustomerCode CustomerRegion
CUST-01 Customer-1华南
CUST-02Customer-2西北
  • “Product”表包含以下三行:
SKU ProductNameColor
BB-7421T-shirtGreen
BC-M005JeansBlue
BB-8107HatBlue


  • “Sales”表包含以下三行:
OrderDate CustomerCodeSKUQuantity 
2023/10/7CUST-01BB-742110
2023/10/8CUST-01BB-810720
2023/10/9CUST-02BB-742130

3、看下现在显示的报表效果:

报表中有2个筛选器,一个用于Customer的”区域“,它包含以下俩项:

第一个筛选器是“地区”,它包含以下两项:“华南”和“华北”,此筛选器当前值“华北”;
第二个筛选器是“产品”,它包含以下三项:“T-shirt”、“Jeans”和“Hat”,未选中任何项(即未按任何产品筛选);
组件上的数量显示: 30。

当要查询”地区“为:华北,并且“产品”要显示与华北相关的选项

为了实现此行为,可以将 Product 与 Sales 表之间的关系配置为双向筛选,如下图所示:

“产品”筛选器现在列出一个项,即“T-shirt”。 此项表示唯一销售给”华北“的产品”:

首先,建议仔细考虑这种设计是否适用于报表用户。 一些报表用户觉得这种体验令人困惑, 不理解为什么在自己与其他筛选器交互时,筛选器值会动态显示或消失。

此外, 双向关系需要更多处理,因此可能会对查询性能产生负面影响,尤其是在模型中的双向关系数量增加时。

3 维度到维度分析

另一种涉及双向关系的场景是,将事实类型表视为桥接表。 通过这种方式,支持在不同维度类型表的筛选器上下文中分析维度类型表数据。

比如,基于上文示例模型数据,查询“产品在不同国家/地区销售数量“?

由于事实类型表的行为类似于桥接表, 需要筛选器从一个维度类型表传播到另一个,关联两个维度类型表,需要配置至少一个双向筛选关系。

以设置Sales与Customer的方向为双向筛选,如下图:

在“产品在不同国家/地区销售数量”度量值表达式求值期间,Customer 与 Sales 表之间的关系为双向筛选。

下面的组件显示了每种售出产品的统计信息。 “数量”列只计算数量值的总和,“不同国家/地区销售数量”列显示所有已购买产品的客户的国家/地区值的非重复计数。


4 关于筛选方向

Smartbi数据模型视图界面,这个视图界面是用来搭建表之间的连接关系的,也就是一个多维的数据模型,搭建不同的多维数据模型可以在不同的表中取字段来看另外一张表中的值,这里所指的连接分为两个,一个是连接关系,另一个是连接方向,在线的两端的一和多是连接关系,另一个就是图中的小箭头,它是代表连接方向的,也称为筛选器方向,筛选器方向分为单项和双向的,例如上图的单箭头,它表示的含义就是一表筛选多表,不能多表筛选一表。

设置交叉筛选方向将决定筛选器的传播方向,可能的交叉筛选选项取决于基数类型。

基数类型交叉筛选选项
一对多(或多对一)

单向
双向

默认:单向

一对一

单向
双向

默认:双向

双向筛选说明

1、假设A与B表相关联:

  • A多对一B:默认B可以筛选A,A不能筛选B,如果要A筛选B,可以开启双向筛选。
  • A一对多B:默认A可以筛选B,B不能筛选A,如果要B筛选A,可以开启双向筛选。
  • A一对一B:默认(双向)A可以筛选B,B可以筛选A;如果是单向时,根据箭头方向判断,假设箭头由A指向B,代表A可以筛选B,B无法筛选A。

2、双向筛选与单向筛选相比,最大的区别是:双向可以在不同表/查询的维度之间创建联动,而单向只能是:是一表筛选多表,不能多表筛选一表

在一对多关系中,交叉筛选方向始终从“一”侧开始,也可以选择从“多”侧开始(双向);

在一对一关系中,交叉筛选方向始终同时从两个表开始。 

关系可设置为单向和双向;单向关系中,上下文筛选器可以从单侧传递到多侧,但不能反向传递。

  • 无标签