举个栗子!Tableau 技巧(294):如何动态屏蔽敏感数据

发布于: 2025-02-14

每年高考分数公布时,总有一个话题很热:为什么高考成绩前 50 名的分数看不到呢?其实,这是教育部门出于考生隐私保护及教育公平性的考虑,刻意做的数据屏蔽。

实际业务中,企业也会有很多类似的数据屏蔽需求。对于一些必须向组织内外公示的数据看板,做必要的数据屏蔽非常重要!

那么,在 Tableau 中如何实现动态屏蔽敏感数据呢?今天的栗子,一睹为快吧!

期《举个栗子》,我们要给大家分享的 Tableau 技巧是:如何动态屏蔽敏感数据。

为方便学习,栗子使用一份自拟的数据源(如下图)。掌握栗子方法后,数据粉可尝试使用其他数据源。

示例数据的屏蔽规则:

- 如果单个分区的总数低于某个阈值,则屏蔽该分区的每个单元格、该分区的小计和总计;

- 由于某个类别特别敏感,因此,如果该敏感类别的某个单元格与该分区的小计仅相差 X,则屏蔽该分区的每个单元格、该分区的小计和总计。

具体步骤如下:

1.创建计算字段

打开 Tableau Desktop,连接栗子数据源,新建工作表。首先,需要创建计算字段,由于这些计算基于可视化项中的分区和筛选,示例使用 LOD 计算来实现。

再次明确一下需求:需要对总和小于 5000 的每个部门/年份组合进行屏蔽(沿绿色水平线计算);如果“零售”渠道与部门/年份组合的总和相差小于 3000,则需要进行屏蔽(黄色的两列之间的差异)。

➤ 创建计算字段:规则一,键入函数

if SUM({EXCLUDE [渠道]:SUM([规模(亿)])}) <5000

then -66666

else sum([规模(亿)])

end

Tips:如果行总和低于 5000,则我们将此值设置为 -66666。

➤ 创建计算字段:规则二,键入函数

if SUM({ EXCLUDE [渠道]:SUM([规模(亿)])})

-

sum({ EXCLUDE [渠道]:SUM(zn(if [渠道]='零售' then [规模(亿)] end))})<3000

then -66666

else SUM([规模(亿)])

End

Tips:计算零售列与行的总和之间的差异。如果此差异小于 3000,则我们将此值设置为 -66666。

➤ 创建计算字段:整合规则,键入函数

if SIZE()=1

then

(if MIN({ EXCLUDE [渠道]:ZN([规则一])})<0

or MIN({ EXCLUDE [渠道]:ZN([规则二])})<0

then -66666

else SUM([规模(亿)])

end )

ELSE

(if ZN([规则一])<0

or ZN([规则二])<0

then -66666

else SUM([规模(亿)])

end )

End

Tips:组合前两个计算,并检查其中一个是否触发

2.创建工作表

将字段“部门”和“年份”分别拖放至行,右键单击“年份”胶囊,下拉菜单勾选:离散。将字段“渠道”拖放至列,将字段“规模(亿)”拖放至“标记”卡的文本中。

单击顶部菜单栏“分析”,下拉菜单选择:合计-添加所有小计,并勾选:显示行总和、显示列总和。

然后,用计算字段“整合规则”替换“标记”卡上的“规模(亿)”胶囊,并设置计算依据为单元格。

如果希望被屏蔽的数值显示为其它,也可以右键单击“整合规则”胶囊,下拉菜单选择:设置格式。将数字格式设置为:自定义-0;(/);0。

如此,就实现了我们想要的数据动态屏蔽~

今天的 Tableau 技巧,你 Get 到了吗?