页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

1 概述

双向筛选即双向交叉过滤,是Smarbi数据模型的一个新特性,它允许建模者使用表之间的关系来确定他们希望过滤器如何流动于数据这允许用户在一个筛选器中选择一个值时,同时影响其他相关的组件或数据; 使用双向交叉筛选,可以在表关系的两侧应用筛选器。 也可以通过将筛选器上下文传播到表关系另一侧的另一个相关表来应用筛选器。在Smartbi中,使用双向筛选可以帮助你更好地理解数据之间的关系,并快速识别有趣的洞察,它能够大大提高你的数据分析效率,并使你能够更快地做出更好的决策。

2 筛选方向

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

换句话说,在下图中,Customer表上的筛选器会自动传递至Sales表,然而Sales表上的筛选器不会传递到Product表上,更不会传递到Customer表。

Image Removed

这种情况普遍存在于大多数报表,在实际场景中,报表通常根据Customer或Product的属性划分销售量,根据销售量筛选Customer或Product是很少见的。

因此,启用筛选筛选器最普遍的原因是同步筛选器。

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

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

组件上的数量显示: 30。

Image Removed

当要查询地区为:华北,并且“产品”要显示与华北相关的选项。为了实现此行为,可以将 Product 与 Sales 表之间的关系配置为双向筛选。双向筛选本质要解决的是数据多维度分析。

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

信息

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

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


警告
title注意

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

  • 双向筛选与单向筛选相比,最大的区别是:双向可以在不同表的维度之间创建联动,有时候在报表层筛选器之间联动了而不自知,会以为数据少了;而单向,筛选器之间:是一方筛选多方,不能多方筛选一方。(如果是”多“方即事实表的指标筛选维度表的维度,不需要开启双向筛选也能正常筛选到数据)。
  • 如果创建多个潜在的查询路径,可能会无意中造成歧义,若要避免这两个问题,请规划使用单向和双向筛选器的组合。

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

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

特殊模型关系
特殊模型关系

1 特殊模型关系

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

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

同步筛选器
同步筛选器

2 同步筛选器值

信息

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

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

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

Image Added

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

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

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

Image Added

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

  • “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、看下现在显示的报表效果:

Image Added

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

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

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

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

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

Image Added

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

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

维度到维度分析
维度到维度分析

3 维度到维度分析

另一种涉及双向关系的场景是,将事实类型表视为桥接表。

通过这种方式,支持在不同维度类型表的筛选器上下文中分析维度类型表数据。

比如,基于上文示例模型数据,查询“每个产品在多少个区域进行过销售“?

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

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

Image Added

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

下面的组件显示了每种售出产品的统计信息。 “Quantity”列只计算数量值的总和,“区域销售量(唯一计数)"代表每个产品在多少个区域进行过销售,如下图所示:

Image Added


4 关于筛选方向

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

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

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

单向
双向

默认:单向

一对一

单向
双向

默认:双向

Image Added

信息
title双向筛选说明

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、双向筛选与单向筛选相比,最大的区别是:双向可以在不同表/查询的维度之间创建联动,而单向只能是:是一方筛选多方,不能多方筛选一方

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

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

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