Hash160 - 脚本和图表函数
Hash160() 返回组合输入表达式值的 160 位哈希值。结果为 27 个字符的字符串。 哈希值可用于屏蔽个人身份信息 (PII),如客户姓名、社会保障号码或帐号。
语法:
Hash160(expr{, expression})
返回数据类型: 字符串
参数 | 描述 |
---|---|
expr | 要计算的字符串。 |
示例 | 结果 |
---|---|
Hash160( 'abc', 'xyz', '123' ) | 返回 MA&5]6+3=:>;>G%S<U*S2I:`=X* |
Hash160( Region, Year, Month ) Note: Region, Year, and Month are table fields. |
返回 G7*=6GKPJ(Z+)^KM?<$'AI.)?U$ |
示例 - Hash160 基本原理
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
-
加载到名为 Example 的数据表中的数据集。
-
以下字段将用于创建 160 位哈希值:
-
Region
-
Year
-
Month
-
加载脚本
Example:
Load *
inline [
Region, Year, Month
abc, xyz, 123
EU, 2022, 01
UK, 2022, 02
US, 2022, 02
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
-
Region
-
Year
-
Month
创建以下计算维度:
-
=Hash160(Region, Year, Month),用来计算 160 位哈希值。
Region | Year | Month | Hash160(Region, Year, Month) |
---|---|---|---|
abc | xyz | 123 | MA&5]6+3=:>;>G%S<U*S2I:`=X* |
EU | 2022 | 01 | B40^K&[T@!;VB'XR]<5=//_F853 |
UK | 2022 | 02 | O5T;+1?[B&"F&1//MA[MN!T"FWZ |
US | 2022 | 02 | C6@#]4#_G-(]J7EQY#KRW`@KF+W |
对于每一行,将 Region、Year 和 Month 的哈希字符串连接在一起,并返回一个 27 个字符的字符串。
以下代码显示了如何在加载脚本中使用该函数。
Hash_160:
Load *,
Hash160(Region, Year, Month) as Hash160_Region_Year_Month;
Load * inline [
Region, Year, Month
abc, xyz, 123
EU, 2022, 01
UK, 2022, 02
US, 2022, 02 ];
Region | Year | Month | Hash160_Region_Year_Month |
---|---|---|---|
abc | xyz | 123 | MA&5]6+3=:>;>G%S<U*S2I:`=X* |
EU | 2022 | 01 | B40^K&[T@!;VB'XR]<5=//_F853 |
UK | 2022 | 02 | O5T;+1?[B&"F&1//MA[MN!T"FWZ |
US | 2022 | 02 | C6@#]4#_G-(]J7EQY#KRW`@KF+W |
示例 - 含有复制条目的 Hash160 场景
概述
此示例为每个产品条目创建了一个唯一的哈希值。哈希值作为一个唯一的标识符,使公司能够有效地检测和管理重复项。
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
-
加载到名为 Example 的数据表中的数据集。
-
数据表中有以下字段:
-
TransactionID
- ProductID
-
ProductName
-
SupplierID
-
加载脚本
Example:
Load *
inline [
TransactionID, ProductID, ProductName, SupplierID
1, 101, Widget A, S001
2, 102, Widget B, S002
3, 101, Widget A, S001
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
- TransactionID
-
ProductID
-
ProductName
-
SupplierID
创建以下计算维度:
-
=Hash160(ProductID, ProductName, SupplierID),用来计算一个 27 个字符的密钥。
TransactionID | ProductID | ProductName | SupplierID | Hash160(ProductID, ProductName, SupplierID) |
---|---|---|---|---|
1 | 101 | Widget A | S001 | CY`&^(N,E/#`TJT4&]/7N1Q+*T3 |
2 | 102 | Widget B | S002 | O7(1;V1%MG;Z+A[/H)G5&`6RA0( |
3 | 101 | Widget A | S001 | CY`&^(N,E/#`TJT4&]/7N1Q+*T3 |
比较 Hash160 函数的输出。请注意,第一条和第三条 TransactionID 记录具有重复的哈希值,因为 ProductID、ProductName 和 SupplierID 字符串的组合对于这些行是相同的。
示例 - Hash160 匿名化数据的场景
概述
金融服务公司会处理敏感的客户信息,如信用卡号码、社会保险号码和客户姓名。为了保护隐私并确保遵守《通用数据保护条例》(GDPR) 或《健康保险流通与责任法案》(HIPAA) 等法规,他们在生成分析报告时需要匿名处理敏感数据。然而,他们还需要保持一致性,以便他们可以在不同的数据集中跟踪同一客户,而不会泄露客户的身份。
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
-
加载到名为 Example 的数据表中的数据集。
-
数据表中有以下字段:
-
CustomerID
-
CustomerName
-
SSN
-
加载脚本
Example:
Load *
inline [
CustomerID, CustomerName, SSN
101, John Doe, 123-45-6789|
102, Jane Smith, 987-65-4321
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
-
CustomerID
-
CustomerName
-
SSN
创建以下计算维度:
-
=Hash160(CustomerName)
-
=Hash160(SSN)
CustomerID | CustomerName | SSN | Hash160(CustomerName) | Hash160(SSN) |
---|---|---|---|---|
101 | John Doe | 123-45-6789| | GMD(*B9*!PQ&MTY2@$4A\KCL?[0 | N&[PSH:I$M?OF<5/9LV&N*;`CZ( |
102 | Jane Smith | 987-65-4321 | EP@9]GSI)5G\I*,B?H,C?A$%VG: | HCFXMR'2=\3WF6?_\6LN;.*6:K? |
数据隐私:原始敏感数据不直接可见,但哈希值在不同记录之间保持一致。这允许进行分析,例如汇总客户活动,而不会暴露客户的实际身份。
合规性:通过对敏感字段进行哈希运算,公司确保遵守数据隐私法规。
安全性:哈希函数产生不可逆的固定大小的输出,为敏感数据添加额外的保护层。