# alt — funkcja skryptu i funkcja wykresu

Funkcja alt zwraca pierwszy z parametrów o poprawnej reprezentacji liczbowej. Jeśli taki parametr nie zostanie znaleziony, wówczas zwrócony zostanie ostatni parametr. Można użyć dowolnej liczby parametrów.

Składnia:

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

Typ zwracanych danych: liczba całkowita

Argumenty

| Argument | Opis |
| --- | --- |
| expr1 | Pierwsze wyrażenie do sprawdzenia poprawnej reprezentacji liczbowej. |
| expr2 | Drugie wyrażenie do sprawdzenia poprawnej reprezentacji liczbowej. |
| expr3 | Trzecie wyrażenie do sprawdzenia poprawnej reprezentacji liczbowej. |
| else | Wartość do zwrócenia, jeśli żaden z poprzednich parametrów nie ma poprawnej reprezentacji liczbowej. |

Funkcja alt jest często używana z funkcjami interpretacji liczby lub daty. W ten sposób aplikacja Qlik Sense może sprawdzać różne formaty danych w kolejności opartej na priorytetach. Można jej także użyć do obsługi wartości NULL w wyrażeniach liczbowych.

Przykład: wyrażenia wykresu

| Przykład | Wynik |
| --- | --- |
| `alt( date#(<br>						dat , 'YYYY/MM/DD' ),` `date#( dat<br>						, 'MM/DD/YYYY' ),` `date#( dat<br>						, 'MM/DD/YY' ),` `'No valid<br>						date' )` | To wyrażenie sprawdzi, czy pole date zawiera datę zgodną z dowolnym z trzech określonych formatów. Jeśli tak, zostanie zwrócona wartość podwójna zawierająca pierwotny ciąg znaków i poprawną reprezentację liczbową daty. Jeśli dopasowanie nie zostanie znalezione, zostanie zwrócony tekst `No valid date` (bez żadnej poprawnej reprezentacji liczbowej). |
| `alt(Sales,0) + alt(Margin,0)` | To wyrażenie dodaje pola `Sales` i `Margin`, zastępując wszelkie brakujące wartości (NULL) wartością `0`. |

## Przykład — podstawy alt

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

#### Wyrażenie wykresu

Przegląd

Kontener zawiera niekompletne dane dotyczące sprzedaży i prognozy. Brakujące wartości należy zastąpić prawidłowymi wartościami alternatywnymi, aby wypełnić luki.

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych załadowany do tabeli o nazwie `Example`.

* Tabela zawiera następujące pola:

  * `ID`

  * `Sales`

  * `Forecast`

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `ID`

* `Sales`

* `Forecast`

Utwórz następującą miarę:

* `=Sum(alt(Sales, Forecast))`, aby zwrócić prawidłową reprezentację liczby poprzez zastąpienie brakujących wartości prawidłowymi wartościami alternatywnymi.

Tabela wynikowa

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

Funkcja `alt` zwraca wartość `Forecast` w obliczeniach miary dla wierszy `ID` z brakującymi wartościami `Sales`. Zastępując brakujące wartości prawidłowymi wartościami alternatywnymi, można wygenerować wypełniony zbiór danych.

## Przykład — użycie alt do zastąpienia brakujących wartości

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

#### Wyrażenie wykresu

Przegląd

Firma zbiera dane dotyczące temperatury z wielu czujników. Brakujące dane z jednego czujnika mają zostać zastąpione danymi z drugiego czujnika.

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych załadowany do tabeli o nazwie `Example`.

* Tabela zawiera następujące pola:

  * `Time`

  * `Temp_Sensor1`

  * `Temp_Sensor2`

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `Time`

* `Temp_Sensor1`

* `Temp_Sensor2`

Utwórz następującą miarę:

* `=Sum(alt(Temp_Sensor1, Temp_Sensor2))`, aby zwrócić prawidłową reprezentację liczbową.

Tabela wynikowa

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

Patrząc na wyniki, funkcja `alt` zastąpiła brakujące dane z czujnika poprawnymi alternatywnymi wynikami z drugiego czujnika. Wypełnia to luki w zestawie danych.

## Przykład — zastosowanie alt

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

#### Wyrażenie wykresu

Przegląd

To zastosowanie pokazuje różne sposoby użycia funkcji `alt` do zastąpienia brakujących lub zerowych wartości.

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych załadowany do tabeli o nazwie `Example`.

* Tabela zawiera następujące pola:

  * `ProductID`

  * `ProductName`

  * `SalesAmount`

  * `ReturnAmount`

  * `Profit`

  * `Discount`

  * `Category`

  * `Year`

  * `Region`

  * `CustomerRating`

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:

* `ProductID`

Utwórz następujący wymiar wyliczany:

* `=Coalesce( ProductName,  'Unknown Product')`, aby zapewnić opis `Unknown Product` do wszystkich produktów, które nie mają wartości `ProductName`.

Utwórz następujące miary:

* `=Sum(alt(SalesAmount, ReturnAmount, Profit))`, aby zwrócić prawidłową liczbę, jeśli nie znaleziono `SalesAmount`.

* `=avg(alt(CustomerRating, 3))`, aby zwrócić prawidłową standardową ocenę klienta, jeśli żadna nie została pierwotnie podana.

* `=Sum(alt(Discount, SalesAmount * 0.05))`, aby zwrócić ważną zniżkę.

* `=Sum(alt(Profit, SalesAmount * 0.1))`, aby zwrócić prawidłową wartość zysku.

* `=Sum(alt(SalesAmount, avg(TOTAL SalesAmount)))`, aby zwrócić prawidłową wartość sprzedaży.

* `=Sum(alt(Discount, avg(TOTAL Discount)))`, aby zwrócić prawidłową wartość zniżki.

Tabela wynikowa

| ProductID | Coalesce( ProductName, 'Unknown Product') | Sum(alt(SalesAmount, ReturnAmount, Profit)) | avg(alt(CustomerRating, 3)) | Sum(alt(Discount, SalesAmount \* 0.05)) | Sum(alt(Profit, SalesAmount \* 0.1)) | Sum(alt(SalesAmount, avg(TOTAL SalesAmount))) | Sum(alt(Discount, avg(TOTAL Discount))) |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Sumy |  | 6200 | 3.6 | 310 | 2030 | 7500 | 410 |
| 101 | Laptop | 1200 | 3 | 60 | 500 | 1200 | 41 |
| 102 | Tablet | 800 | 4 | 50 | 300 | 500 | 50 |
| 103 | Smartphone | 1500 | 5 | 100 | 600 | 800 | 100 |
| 104 | Printer | 400 | 3 | 20 | 40 | 400 | 20 |
| 105 | Unknown Product | 1000 | 4 | 30 | 100 | 1000 | 30 |
| 106 | Monitoruj | 150 | 5 | 0 | 250 | 750 | 41 |
| 107 | Keyboard | 200 | 2 | 5 | 80 | 200 | 5 |
| 108 | Mouse | 50 | 3 | 0 | 0 | 750 | 41 |
| 109 | Unknown Product | 600 | 4 | 30 | 60 | 600 | 41 |
| 110 | Headphones | 300 | 3 | 15 | 100 | 300 | 41 |

Funkcja `alt` zapewnia, że gdy brakuje wartości, mogą zostać obliczone i zwrócone alternatywne wartości. Zwróć uwagę na następujące wyniki:

* Kolumna 2 używa funkcji `Coalesce`, aby zwrócić wartość `Unknown Product` dla wszystkich wartości null. Funkcja `Alt` nie może być używana, ponieważ dotyczy tylko wartości liczbowych.

* Kolumna 3 zwraca wartość dla `SalesAmount`. Jeśli nie zostanie znaleziona żadna wartość, zwrócona zostanie wartość `ReturnAmount`. Jeżeli żadna wartość `ReturnAmount` nie zostanie znaleziona, zwracana jest wartość `Profit`. Pomaga to zapewnić, że kolumna zostanie wypełniona wartością, jeśli `SalesAmount` nie będzie mieć wartości.

* Kolumna 4 zwraca `CustomerRating`. Jeśli nie zostanie znaleziona żadna wartość, domyślnie przyjmuje ona wartość `3`. Na przykład produkt `Laptop` nie ma oceny klientów, więc zwracane jest `3`. Następnie miara oblicza średnią dla kolumny.

* Kolumna 5 zwraca wartość zniżki. Jeśli wartość nie jest dostępna, jest ona obliczana jako 5% wartości `SalesAmount`.

* Kolumna 6 zwraca wartość `Profit`. Jeśli żadna wartość nie jest dostępna, zwraca 10% z `SalesAmount`.

* Kolumna 7 zwraca `SalesAmount`. Jeśli nie podano żadnej wartości, zwracana jest średnia wartość `SalesAmount` dla całego zestawu danych. Na przykład produkty `Monitor` i `Mouse` nie mają wartości dla `SalesAmount`, więc oba zwracają `750`, co jest średnią wszystkich wartości `SalesAmount`.

* Kolumna 8 zwraca wartość `Discount`. Jeśli nie zostanie znaleziona żadna wartość, system oblicza i zwraca średnią zniżkę w całym zestawie danych.