【问题标题】:How to anonymize/mask part of string in PowerBI?如何在 PowerBI 中匿名/屏蔽部分字符串?
【发布时间】:2023-03-18 00:11:01
【问题描述】:

假设我正在为名为“Air Holland”的客户创建一个饼图,对于该客户,我想在饼图中显示与其他客户的重叠,包括名为“Air England”、“Air Ireland”和“冰岛航空”。由于我的客户的隐私规定,我只能显示部分名称,例如他们名字的前三个或四个字母。 'Air Holland' 因此更改为 'Air xxxxxxx'

现在为了在我的饼图中实现这一点,我创建了一个新的 CustomerNameMasked 列,它采用客户名称,并将除前四个字符之外的所有字符替换为“x”。理想情况下,我想在饼图中使用 CustomerName 作为图例,然后使用 CustomerNameMasked 作为标签,这样饼图是使用 CustomerName 创建的,但会显示被屏蔽的名称。

但是,据我所知,这样的标签是不可能的,所以现在我使用 CustomerNameMasked 作为我的图例列。但由于这些名称不是唯一的(例如,“匈牙利航空公司”和“荷兰航空公司”在 CustomerNameMasked 列中都是“航空公司 xxxxxxx”),因此会将不同的客户放在一起。

任何想法如何创建独特的蒙面客户名称?或者另一种解决方法,以确保我的饼图正确显示每个客户的数据,但图例显示被屏蔽的名称?

【问题讨论】:

  • 添加唯一索引/显示客户 ID 怎么样?

标签: powerbi


【解决方案1】:

防止匿名名称在可视化中合并的一种方法是确保它们不相同。


添加计算列:

Anonymised = "Airline " & RANKX('MyTable','MyTable'[CustomerName],,ASC,Dense)

结果:

Airline 1
Airline 2
Airline 3
...

如果你喜欢x的:

添加Anonymised_Name 表,

Name             Anonymised Name
"Air Holland"    "Air xxxxxxx"
"Air Hungary"    "Air xxxxxxx "
"Air Iceland"    "Air xxxxxxx  "

使用“假空间”(小键盘上的 alt+0160)来防止 PowerBI 将其吞噬。添加关系并在可视化中使用此列。

我更喜欢以前的选项,因为它更容易区分和跟踪单个客户。


如果你不在乎“x”的数量是否与真实姓名匹配:

Anonymised_Name_2 = "Air XXXXXXX" & REPT(" ", 
  RANKX('MyTable','MyTable'[CustomerName],,ASC,Dense))

(又是假空格 alt+0160)


根据您对报告的处理方式,真实客户姓名“泄露”的风险很大,因此理想情况下,您希望在导入数据之前对其进行匿名化处理。

【讨论】:

  • 您好@user5226582,感谢您的回答。但是,我已经设法创建了一个计算列,我的问题不是如何创建掩码。我的问题是:如何使用未屏蔽的列制作饼图,同时确保我只能看到屏蔽的客户名称
  • 不确定是否可以。我的回答解释了如何创建匿名名称,当您在可视化中使用它时不会“一起”。
  • 是的,我明白了,感谢您抽出宝贵时间。您描述的第一个选项(“航空公司 1”等)确实是独一无二的,但完全匿名,这是不想要的,我仍然想要一个部分面具,以便在您有内部知识时能够识别客户。然而,第二个选项并没有给我唯一的蒙面客户名称,所以我认为这无济于事!
  • 只需附加不同数量的空格,它将是唯一的。
  • 是的,我想到了这一点,虽然从美学的角度来看我不喜欢它,但它可能是最好的解决方法!谢谢!
猜你喜欢
  • 2013-06-27
  • 2017-10-27
  • 2016-12-06
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 2012-02-20
  • 2017-09-17
  • 1970-01-01
相关资源
最近更新 更多