# Hash128 Skript- och diagramfunktion

Hash128() returnerar ett 128-bitars hashvärde av de kombinerade indatauttrycksvärdena. Resulterar i en 22-teckensträng. Hashvärden är användbara för att maskera personliga identitetsuppgifter (PII), t.ex. kundnamn, personnummer eller kontonummer.

Syntax:

Hash128(expr{, expression})

Returnerad datatyp: sträng

Argument

| Argument | Beskrivning |
| --- | --- |
| expr | Sträng som ska utvärderas. |

Exempel: diagramuttryck

| Exempel | Resultat |
| --- | --- |
| `Hash128( 'abc', 'xyz', '123' )` | Returnerar `MA&5]6+3=:>:>G%S<U*S2+` |
| `Hash128 ( Region, Year, Month )`<br><br>Note: `Region`, `Year`, and `Month` are table fields. | Returnerar `G7*=6GKPJ(Z+)^KM?<$'A+` |

## Exempel – grunderna i Hash128

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

#### Diagramuttryck

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som läses in i en datatabell som heter `Example`.

* Följande fält som kommer att användas för att skapa ett 128-bitars hashvärde:

  * `Region`

  * `Year`

  * `Month`

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* ` Region
                                   `

* `Year`

* `Month`

Skapa följande beräknade dimension:

* `=Hash128(Region, Year, Month)` för att beräkna 128-bitars hashvärde.

Resultattabell

| Region | År | Månad | Hash128(Region, År, Månad) |
| --- | --- | --- | --- |
| abc | xyz | 123 | MA&5]6+3=:&gt;;&gt;G%S&lt;U\*S2+ |
| EU | 2022 | 01 | B40^K&[T@!;VB'XR]&lt;5=/$ |
| UK | 2022 | 02 | O5T;+1?[B&"F&1//MA[MN! |
| US | 2022 | 02 | C6@#]4#\_G-(]J7EQY#KRW0 |

För varje rad sammanfogas hashsträngarna för `Region`, `Year` och `Month` och returnerar en sträng med 22 tecken.

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

#### Laddningsskript

Följande kod visar hur du använder funktionen i ett laddningsskript.

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

Resultattabell

| Region | År | Månad | Hash128\_Region\_År\_Månad |
| --- | --- | --- | --- |
| abc | xyz | 123 | MA&5]6+3=:&gt;;&gt;G%S&lt;U\*S2+ |
| EU | 2022 | 01 | B40^K&[T@!;VB'XR]&lt;5=/$ |
| UK | 2022 | 02 | O5T;+1?[B&"F&1//MA[MN! |
| US | 2022 | 02 | C6@#]4#\_G-(]J7EQY#KRW0 |

## Exempel – Hash128-scenario med kopior av poster

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

#### Diagramuttryck

Översikt

I det här exemplet skapas ett unikt hashvärde för varje produktpost. Hashvärdet fungerar som en unik identifierare, vilket gör att företaget kan upptäcka och hantera kopior på ett effektivt sätt.

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som läses in i en datatabell som heter `Example`.

* Följande fält i datatabellen:

  * `TransactionID`

  * `ProductID`

  * `ProductName`

  * `SupplierID`

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* ` Transaction ID
                                   `

* ` ProductID
                                   `

* `ProductName`

* `SupplierID`

Skapa följande beräknade dimension:

* `=Hash128(ProductID, ProductName, SupplierID)`, för att beräkna en nyckel med 22 tecken.

Resultattabell

| Transaktions-ID | Produkt-ID | Produktnamn | Leverantörs-ID | Hash128(ProduktID, Produktnamn, LeverantörsID) |
| --- | --- | --- | --- | --- |
| 1 | 101 | ​Widget A ​ ​ | S001 | ​CY`&^(N,E/#`TJT4&]/7N% |
| 2 | 102 | Widget B | S002 | ​O7(1;V1%MG;Z+A[/H)G5&0 |
| 3 | 101 | Widget A | S001 | ​CY`&^(N,E/#`TJT4&]/7N% |

Jämför utdata från `Hash128`-funktionen. Lägg märke till att den första och tredje posten `TransactionID` har kopierade hashvärden eftersom kombinationen av strängarna `ProductID`, `ProductName` och `SupplierID` är densamma för dessa rader.

## Exempel – Hash128-scenario för att anonymisera data

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

#### Diagramuttryck

Översikt

Ett företag inom finansiella tjänster hanterar känsliga kunduppgifter, till exempel kreditkortsnummer, personnummer och kundnamn. För att skydda integriteten och säkerställa efterlevnad av bestämmelser som allmänna dataskyddsförordningen (GDPR) eller lagen om rätt till sjukförsäkring och ersättning (HIPAA) måste de anonymisera känsliga data när de skapar rapporter för analys. Men de måste också vara konsekventa, så att de kan spåra samma kund i olika datauppsättningar utan att avslöja kundens identitet.

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som läses in i en datatabell som heter Example.

* Följande fält i datatabellen:

  * CustomerID

  * CustomerName

  * SSN

Laddningsskript

```
Example:
Load *
inline [
CustomerID, CustomerName, SSN
101, John Doe, 123-45-6789|
102, Jane Smith, 987-65-4321
];
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* CustomerID

* CustomerName

* SSN

Skapa följande beräknade dimensioner:

* ​=Hash128(CustomerName)​

* =Hash128(SSN)

Resultattabell

| Kund-id | Kundnamn | Personnummer | Hash128(Kundnamn) | Hash128(Personnummer) |
| --- | --- | --- | --- | --- |
| 101 | ​John Doe | ​123-45-6789\| | ​GMD(\*B9\*!PQ&MTY2@$4A\+ | ​N&[PSH:I$M?OF&lt;5/9LV&N# ​ |
| 102 | Jane Smith | ​987-65-4321 | ​EP@9]GSI)5G\I\*,B?H,C?) | ​HCFXMR'2=\3WF6?\_\6LN;$​ ​ |

Utdata genererar unika nycklar som har följande fördelar:

* Datasekretess: känsliga originaldata är inte direkt synliga, men hashvärdet förblir konsekvent mellan olika poster. Detta möjliggör analys, till exempel aggregering av kunders aktiviteter, utan att avslöja kundens faktiska identitet.

* Efterlevnad av regler: genom att hasha känsliga fält säkerställer företaget att man följer reglerna för datasekretess.

* Säkerhet: hashfunktionen producerar en fastställd storlek på icke-reversibla utdata , vilket ger ett extra skikt av skydd för känsliga data.