# 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 )`<br><br>Note: `Region`, `Year`, and `Month` are table fields. | `G7*=6GKPJ(Z+)^KM?<$'AI.)?U$`를 반환합니다. |

## 예 - Hash160 기본 사항

[](https://help.qlik.com/en-US/sense/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(Region, Year, Month) |
| --- | --- | --- | --- |
| 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/sense/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\_Region\_Year\_Month |
| --- | --- | --- | --- |
| 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/sense/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자 키를 계산합니다.

결과 테이블

| 거래 ID | 제품 ID | 제품 이름 | SupplierID | Hash160(제품 ID, 제품 이름, 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 시나리오

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

#### 차트 표현식

개요

금융 서비스 회사는 신용 카드 번호, 주민등록번호, 고객 이름 등 중요한 고객 정보를 처리합니다. 개인 정보를 보호하고 일반 데이터 보호 규정(GDPR)이나 건강보험 양도성 및 책임법(HIPAA)과 같은 규정을 준수하려면 분석을 위한 보고서를 생성할 때 중요한 데이터를 익명화해야 합니다. 하지만 고객의 ID를 밝히지 않고도 다양한 데이터 집합에서 동일한 고객을 추적할 수 있도록 일관성을 유지해야 합니다.

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* 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)

결과 테이블

| 고객 ID | CustomerName | SSN | Hash160(고객 이름) | Hash160(SSN) |
| --- | --- | --- | --- | --- |
| 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?​ |

출력은 다음과 같은 이점이 있는 고유 키를 생성합니다.

* 데이터 개인정보 보호: 원래의 중요한 데이터는 직접 볼 수 없지만 해시 값은 여러 레코드에서 일관되게 유지됩니다. 이를 통해 고객의 실제 ID를 노출하지 않고도 고객 활동을 집계하는 등의 분석이 가능해집니다.

* 규정 준수: 회사는 중요한 필드를 해싱하여 데이터 개인정보 보호 규정을 준수합니다.

* 보안: 해시 함수는 되돌릴 수 없는 고정된 크기의 출력을 생성하므로 중요한 데이터에 대한 보호 계층을 추가합니다.