# Hash256 - 脚本和图表功能

Hash256() 返回组合输入表达式值的 256 位哈希值。结果为 43 个字符的字符串。 哈希值可用于屏蔽个人身份信息 (PII)，如客户姓名、社会保障号码或帐号。

语法：

Hash256(expr{, expression})

返回数据类型： 字符串

参数

| 参数 | 描述 |
| --- | --- |
| expr | 要计算的字符串。 |

示例：图表表达式

| 示例 | 结果 |
| --- | --- |
| `Hash256( 'abc', 'xyz', '123' )` | 返回 ``MA&5]6+3=:>;>G%S<U*S2I:`=X*A.IO*8N\%Y7Q;YEJ`` |
| `Hash256( Region, Year, Month )`<br><br>Note: `Region`, `Year`, and `Month` are table fields. | 返回 ``G7*=6GKPJ(Z+)^KM?<$'AI.)?U$#X2RB[:0ZP=+Z`F:`` |

## 示例 - Hash256 基本原理

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Hash256.htm)

#### 图表表达式

概述

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 以下字段将用于创建 256 位哈希值：

  * `Region`

  * `Year`

  * `Month`

加载脚本

```
Example:
Load *
inline [
Region, Year, Month
abc, xyz, 123
EU, 2022, 01
UK, 2022, 02
US, 2022, 02
];
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* ` Region
                                   `

* `Year`

* `Month`

创建以下计算维度：

* `=Hash256(Region, Year, Month)`，用来计算 256 位哈希值。

结果表

| Region | Year | Month | Hash256(Region, Year, Month) |
| --- | --- | --- | --- |
| abc | xyz | 123 | MA&5]6+3=:&gt;;&gt;G%S&lt;U\*S2I:`=X*A.IO*8N\%Y7Q;YEJ |
| EU | 2022 | 01 | B40^K&[T@!;VB'XR]&lt;5=//\_F853?BE6'G&,YH\*T'MF) |
| UK | 2022 | 02 | O5T;+1?[B&"F&1//MA[MN!T"FWZT=4\#V`M%6_\0C>4 |
| US | 2022 | 02 | C6@#]4#\_G-(]J7EQY#KRW`@KF+W-0]`[Z8R+#'")=+0 |

对于每一行，将 `Region`、`Year` 和 `Month` 的哈希字符串连接在一起，并返回一个 43 个字符的字符串。

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Hash256.htm)

#### 加载脚本

以下代码显示了如何在加载脚本中使用该函数。

```
Hash_256:
Load *,
Hash256(Region, Year, Month) as Hash256_Region_Year_Month;
Load * inline [
Region, Year, Month
abc, xyz, 123
EU, 2022, 01
UK, 2022, 02
US, 2022, 02 ];
```

结果表

| Region | Year | Month | Hash256\_Region\_Year\_Month |
| --- | --- | --- | --- |
| abc | xyz | 123 | MA&5]6+3=:&gt;;&gt;G%S&lt;U\*S2I:`=X*A.IO*8N\%Y7Q;YEJ |
| EU | 2022 | 01 | B40^K&[T@!;VB'XR]&lt;5=//\_F853?BE6'G&,YH\*T'MF) |
| UK | 2022 | 02 | O5T;+1?[B&"F&1//MA[MN!T"FWZT=4\#V`M%6_\0C>4 |
| US | 2022 | 02 | C6@#]4#\_G-(]J7EQY#KRW`@KF+W-0]`[Z8R+#'")=+0 |

## 示例 - 含有复制条目的 Hash256 场景

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Hash256.htm)

#### 图表表达式

概述

此示例为每个产品条目创建了一个唯一的哈希值。哈希值作为一个唯一的标识符，使公司能够有效地检测和管理重复项。

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有以下字段：

  * `TransactionID`

  * `ProductID`

  * `ProductName`

  * `SupplierID`

加载脚本

```
Example:
Load *
inline [
TransactionID, ProductID, ProductName, SupplierID
1, 101, Widget A, S001, 100
2, 102, Widget B, S002, 200
3, 101, Widget A, S001, 50
];
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* ` Transaction ID
                                   `

* ` ProductID
                                   `

* `ProductName`

* `SupplierID`

创建以下计算维度：

* `=Hash256(ProductID, ProductName, SupplierID)`，用来计算一个 43 个字符的密钥。

结果表

| TransactionID | ProductID | ProductName | SupplierID | Hash256(ProductID, ProductName, SupplierID) |
| --- | --- | --- | --- | --- |
| 1 | 101 | ​Widget A ​ ​ | S001 | ​CY`&^(N,E/#`TJT4&]/7N1Q+\*T3K=35VDVQ&gt;&gt;;%+A0] |
| 2 | 102 | Widget B | S002 | O7(1;V1%MG;Z+A[/H)G5&`6RA0(`%6T?YZQ.+&gt;\*&\JF |
| 3 | 101 | Widget A | S001 | ​CY`&^(N,E/#`TJT4&]/7N1Q+\*T3K=35VDVQ&gt;&gt;;%+A0] |

比较 `Hash256` 函数的输出。请注意，第一条和第三条 `TransactionID` 记录具有重复的哈希值，因为 `ProductID`、`ProductName` 和 `SupplierID` 字符串的组合对于这些行是相同的。

## 示例 - Hash256 匿名化数据的场景

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Hash256.htm)

#### 图表表达式

概述

金融服务公司会处理敏感的客户信息，如信用卡号码、社会保险号码和客户姓名。为了保护隐私并确保遵守《通用数据保护条例》(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

创建以下计算维度：

* ​=Hash256(CustomerName)

* =Hash256(SSN)

结果表

| CustomerID | CustomerName | SSN | Hash256(CustomerName) | Hash256(SSN) |
| --- | --- | --- | --- | --- |
| 101 | ​John Doe | ​123-45-6789\| | GMD(\*B9\*!PQ&MTY2@$4A\KCL?[0@T%D@8C#6&UR8/95 | ​N&[PSH:I$M?OF&lt;5/9LV&N\*;`CZ((X'"9Y2FKJC6W04[​ |
| 102 | Jane Smith | ​987-65-4321 | ​EP@9]GSI)5G\I\*,B?H,C?A$%VG:SL#6I&gt;Q1:L&lt;0O7UW | ​HCFXMR'2=\3WF6?\_\6LN;.\*6:K?Y:%MZ#\*PP]WI`YS<​ |

输出生成具有以下优点的唯一密钥：

* 数据隐私：原始敏感数据不直接可见，但哈希值在不同记录之间保持一致。这允许进行分析，例如汇总客户活动，而不会暴露客户的实际身份。

* 合规性：通过对敏感字段进行哈希运算，公司确保遵守数据隐私法规。

* 安全性：哈希函数产生不可逆的固定大小的输出，为敏感数据添加额外的保护层。