举个栗子!Tableau 技巧(294):如何动态屏蔽敏感数据
每年高考分数公布时,总有一个话题很热:为什么高考成绩前 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 到了吗?