# alt Skript- och diagramfunktion

alt-funktionen returnerar den första av parametrarna som har ett giltigt numeriskt värde. Om ingen av parametrarna har ett giltigt numeriskt värde, returneras den sista parametern. Det finns inga begränsningar vad gäller antalet parametrar.

Syntax:

alt(expr1[ , expr2 , expr3 , ...] , else)

Returnerad datatyp: heltal

Argument

| Argument | Beskrivning |
| --- | --- |
| expr1 | Det första uttrycket som ska kontrolleras om det har ett giltigt numeriskt värde. |
| expr2 | Det andra uttrycket som ska kontrolleras om det har ett giltigt numeriskt värde. |
| expr3 | Det tredje uttrycket som ska kontrolleras om det har ett giltigt numeriskt värde. |
| else | Värde som ska returneras om ingen av de föregående parametrarna har ett giltigt numeriskt värde. |

Funktionen alt används ofta tillsammans med funktioner för tal- eller datumtolkning. På så vis kan Qlik Sense testa olika datumformat i en prioriterad ordningsföljd. Den kan även användas för att hantera NULL-värden i numeriska uttryck.

Exempel: diagramuttryck

| Exempel | Resultat |
| --- | --- |
| `alt( date#(<br>						dat , 'YYYY/MM/DD' ),` `date#( dat<br>						, 'MM/DD/YYYY' ),` `date#( dat<br>						, 'MM/DD/YY' ),` `'No valid<br>						date' )` | Uttrycket testar om fältet date innehåller ett datum enligt något av de tre angivna datumformaten. Om så är fallet, returneras ett dualt värde som innehåller den ursprungliga strängen och ett giltigt numeriskt värde som motsvarar ett datum. Om ingen matchning hittas returneras texten `No valid date` (utan giltig numerisk representation). |
| `alt(Sales,0) + alt(Margin,0)` | Det här uttrycket lägger till fälten `Sales` och `Margin`, och ersätter eventuella saknade värden (NULL) med `0`. |

## Exempel – grunderna i alt

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

#### Diagramuttryck

Översikt

En datauppsättning innehåller ofullständiga försäljnings- och prognosdata. Du vill ersätta saknade värden med giltiga alternativa värden för att fylla i luckorna.

Ö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:

  * `ID`

  * `Sales`

  * `Forecast`

Laddningsskript

```
Example:
LOAD * INLINE [
ID, Sales, Forecast
1, 500, 450
2, , 300
3, 200, 250
4, , 400
5, 350,
];
```

Resultat

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

* `ID`

* `Sales`

* `Forecast`

Skapa följande mått:

* `=Sum(alt(Sales, Forecast))` för att returnera en giltig talrepresentation genom att ersätta saknade värden med giltiga alternativa värden.

Resultattabell

| ID | Sales | Forecast | Sum(alt(Sales, Forecast)) |
| --- | --- | --- | --- |
| Totals |  |  | 1750 |
| 1 | 500 | 450 | 500 |
| 2 |  | 300 | 300 |
| 3 | 200 | 250 | 200 |
| 4 |  | 400 | 400 |
| 5 | 350 |  | 350 |

Funktionen `alt` returnerar `Forecast`-värdet i måttberäkningen för `ID`-raderna med saknade `Sales`-värden. Genom att ersätta saknade värden med giltiga alternativa värden kan du generera en fullständigt ifylld datauppsättning.

## Exempel – Använda alt för att ersätta saknade värden

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

#### Diagramuttryck

Översikt

Ett företag samlar in temperaturdata från flera sensorer. Du vill ersätta saknade data från en sensor med data från den andra sensorn.

Ö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:

  * `Time`

  * `Temp_Sensor1`

  * `Temp_Sensor2`

Laddningsskript

```
Example:
LOAD * INLINE [
Time, Temp_Sensor1, Temp_Sensor2
08:00, 23.5, 24.0
09:00, , 23.8
10:00, 24.1,
11:00, , 24.5
12:00, 23.9, 24.1
];
```

Resultat

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

* `Time`

* `Temp_Sensor1`

* `Temp_Sensor2`

Skapa följande mått:

* `=Sum(alt(Temp_Sensor1, Temp_Sensor2))` för att returnera en giltig talrepresentation.

Resultattabell

| Time | Temp\_Sensor1 | Temp\_Sensor2 | Sum(alt(Temp\_Sensor1, Temp\_Sensor2)) |
| --- | --- | --- | --- |
| Totals |  |  | 119.8 |
| 08:00 | 23.5 | 24.0 | 23.5 |
| 09:00 |  | 23.8 | 23.8 |
| 10:00 | 24.1 |  | 24.1 |
| 11:00 |  | 24.5 | 24.5 |
| 12:00 | 23.9 | 24.1 | 23.9 |

Om man tittar på resultaten har funktionen `alt` ersatt saknade sensordata med giltiga alternativa resultat från den andra sensorn. Detta kompletterar datauppsättningen genom att fylla i luckor.

## Exempel – alt-scenario

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

#### Diagramuttryck

Översikt

Det här scenariot visar olika sätt att använda funktionen `alt` för att ersätta saknade värden eller nollvärden.

Ö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:

  * `ProductID`

  * `ProductName`

  * `SalesAmount`

  * `ReturnAmount`

  * `Profit`

  * `Discount`

  * `Category`

  * `Year`

  * `Region`

  * `CustomerRating`

Laddningsskript

```
Set NullInterpret = '';
Example:
LOAD * INLINE [
ProductID, ProductName, SalesAmount, ReturnAmount, Profit, Discount, Category, Year, Region, CustomerRating
101, "Laptop", 1200, 200, 500, , "Electronics", 2023, "North",
102, "Tablet", 800, , 300, 50, "Electronics", 2023, "South", 4
103, "Smartphone", 1500, , 600, 100, , 2022, "East", 5
104, "Printer", 400, , , 20, "Accessories", 2021, , 3
105, , 1000, 100, , 30, "Electronics", 2023, "West", 4
106, "Monitor", , 150, 250, , "Accessories", 2022, "North", 5
107, "Keyboard", 200, , 80, 5, , 2022, "South", 2
108, "Mouse", , 50, , , "Accessories", , "East",
109, , 600, , , , "Electronics", 2023, , 4
110, "Headphones", 300, 30, 100, , "Accessories", 2021, "West", 3
];
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:

* `ProductID`

Skapa följande beräknade dimension:

* `=Coalesce( ProductName,  'Unknown Product')`, för att tillhandahålla beskrivningen `Unknown Product` för alla produkter som inte har något värde för `ProductName`.

Skapa följande mått:

* `=Sum(alt(SalesAmount, ReturnAmount, Profit))`, för att returnera ett giltigt nummer om ingen `SalesAmount` hittas.

* `=avg(alt(CustomerRating, 3))`, för att returnera ett giltigt standardiserat kundbetyg om inget sådant ursprungligen angetts.

* `=Sum(alt(Discount, SalesAmount * 0.05))`, för att returnera en giltig rabatt.

* `=Sum(alt(Profit, SalesAmount * 0.1))`, för att returnera ett giltigt vinstvärde.

* `=Sum(alt(SalesAmount, avg(TOTAL SalesAmount)))`, för att returnera ett giltigt försäljningsvärde.

* `=Sum(alt(Discount, avg(TOTAL Discount)))`, för att returnera ett giltigt rabattvärde.

Resultattabell

| Produkt-ID | Coalesce( Produktnamn, 'Okänd produkt') | Summa(alt(Försäljningsbelopp, Returbelopp, Vinst)) | medel(alt(Kundbetyg, 3)) | Summa(alt(Rabatt, Försäljningsbelopp \* 0.05)) | Summa(alt(Vinst, Försäljningsbelopp \* 0.1)) | Summa(alt(Försäljningsbelopp, medel(TOTALT Försäljningsbelopp))) | Summa(alt(Rabatt, medel(TOTAL Rabatt))) |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Totalvärden |  | 6200 | 3.6 | 310 | 2030 | 7500 | 410 |
| 101 | Bärbar dator | 1200 | 3 | 60 | 500 | 1200 | 41 |
| 102 | Surfplatta | 800 | 4 | 50 | 300 | 500 | 50 |
| 103 | Smarttelefon | 1500 | 5 | 100 | 600 | 800 | 100 |
| 104 | Skrivare | 400 | 3 | 20 | 40 | 400 | 20 |
| 105 | Okänd produkt | 1000 | 4 | 30 | 100 | 1000 | 30 |
| 106 | Övervaka | 150 | 5 | 0 | 250 | 750 | 41 |
| 107 | Tangentbord | 200 | 2 | 5 | 80 | 200 | 5 |
| 108 | Mus | 50 | 3 | 0 | 0 | 750 | 41 |
| 109 | Okänd produkt | 600 | 4 | 30 | 60 | 600 | 41 |
| 110 | Hörlurar | 300 | 3 | 15 | 100 | 300 | 41 |

Funktionen `alt` säkerställer att alternativa värden kan beräknas och returneras när värden saknas. Observera följande resultat:

* I kolumn 2 används funktionen `Coalesce` för att returnera värdet `Unknown Product` för alla null-värden. Funktionen `Alt` kan inte användas eftersom den endast gäller för numeriska värden.

* Kolumn 3 returnerar värdet för `SalesAmount`. Om inget värde hittas returneras värdet `ReturnAmount`. Om inget `ReturnAmount`-värde hittas returneras värdet `Profit`. Detta bidrar till att säkerställa att kolumnen fylls i med ett värde om `SalesAmount` inte har något värde.

* Kolumn 4 returnerar `CustomerRating`. Om inget värde hittas är standardvärdet `3`. Eftersom produkten `Laptop` t.ex. inte har någon kundbedömning returneras `3`. Måttet beräknar sedan genomsnittet för kolumnen.

* Kolumn 5 returnerar rabattvärdet. Om inget värde finns tillgängligt beräknas det som 5% av värdet på `SalesAmount`.

* Kolumn 6 returnerar värdet för `Profit`. Om inget värde finns tillgängligt returneras 10% av `SalesAmount`.

* Kolumn 7 returnerar `SalesAmount`. Om inget värde anges returneras det genomsnittliga `SalesAmount` för hela datauppsättningen. Till exempel har produkterna `Monitor` och `Mouse` inget värde för `SalesAmount`, så båda returnerar `750`, som är genomsnittet av alla `SalesAmount`-värden.

* Kolumn 8 returnerar värdet för `Discount`. Om inget värde hittas beräknar och returnerar systemet den genomsnittliga rabatten för hela datauppsättningen.