# Hash160 Функция скрипта и диаграммы

Hash160() возвращает 160-разрядное значение хэша для сочетания значений входного выражения. Результат — строка из 27 символов. Хеш-значения полезны для маскировки информации, позволяющей установить личность (Personally Identifiable Information, PII), такой как имена клиентов, номера социального страхования или номера счетов.

Синтаксис:

Hash160(expr{, expression})

Возвращаемые типы данных: строка

Аргументы

| Аргумент | Описание |
| --- | --- |
| expr | Текстовая строка для оценки. |

Пример: выражения диаграммы

| Пример | Результат |
| --- | --- |
| `Hash160( 'abc', 'xyz', '123' )` | Возвращает ``MA&5]6+3=:>;>G%S<U*S2I:`=X*`` |
| `Hash160( Region, Year, Month )`<br><br>Note: `Region`, `Year`, and `Month` are table fields. | Возвращает `G7*=6GKPJ(Z+)^KM?<$'AI.)?U$` |

## Пример. Основы использования функции Hash160

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

#### Выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, который загружается в таблицу данных под именем `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-битное хэш-значение.

Результирующая таблица

| Регион | Год | Месяц | Hash160(Регион, Год, Месяц) |
| --- | --- | --- | --- |
| abc | xyz | 123 | MA&5]6+3=:&gt;;&gt;G%S&lt;U\*S2I:`=X* |
| EU | 2022 | 01 | B40^K&[T@!;VB'XR]&lt;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 символов.

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

#### Скрипт загрузки

Следующий код показывает, как использовать эту функцию в скрипте загрузки.

```
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 ];
```

Результирующая таблица

| Регион | Год | Месяц | Hash160\_Регион\_Год\_Месяц |
| --- | --- | --- | --- |
| abc | xyz | 123 | MA&5]6+3=:&gt;;&gt;G%S&lt;U\*S2I:`=X* |
| EU | 2022 | 01 | B40^K&[T@!;VB'XR]&lt;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 с дубликатами записей

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

#### Выражение диаграммы

Обзор

В этом примере для каждой записи о продукте создается уникальное хэш-значение. Хэш-значение служит уникальным идентификатором, позволяя компании эффективно обнаруживать и обрабатывать дубликаты.

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, который загружается в таблицу данных под именем `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 символов.

Результирующая таблица

| ИдентификаторТранзакции | Идентификатор продукта | НазваниеПродукта | ИдентификаторПоставщика | Hash160(Идентификатор продукта, Название продукта, Идентификатор поставщика) |
| --- | --- | --- | --- | --- |
| 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 для анонимизации данных

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

#### Выражение диаграммы

Обзор

Компания, предоставляющая финансовые услуги, обрабатывает конфиденциальную информацию клиентов, такую как номера кредитных карт, номера социального страхования и имена клиентов. Для защиты конфиденциальности и обеспечения соответствия нормативным требованиям, таким как «Общий регламент по защите данных» (General Data Protection Regulation, GDPR) или «Закон о передаче и защите данных учреждений здравоохранения» (Health Insurance Portability and Accountability Act, 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 | Номер социального страхования | Hash160(Имя клиента) | Hash160(Номер социального страхования) |
| --- | --- | --- | --- | --- |
| 101 | ​John Doe | ​123-45-6789\| | ​GMD(\*B9\*!PQ&MTY2@$4A\KCL?[0 | ​N&[PSH:I$M?OF&lt;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?​ |

В выходных данных генерируются уникальные ключи, что обеспечивает следующие преимущества:

* Конфиденциальность данных: оригинальные конфиденциальные данные не раскрываются напрямую, но хеш-значение остается неизменным в разных записях. Это позволяет проводить анализ, например, агрегирование активности клиентов, не раскрывая их реальной личности.

* Соответствие нормам: благодаря хешированию конфиденциальных полей компания обеспечивает соблюдение правил обращения с конфиденциальными данными.

* Безопасность: функция хеширования создает выходные данные фиксированного размера, эту операцию нельзя обратить, что создает дополнительный уровень защиты конфиденциальных данных.