# alt - Função de script e de gráfico

A função alt retorna o primeiro parâmetro que tiver uma representação numérica válida. Se nenhuma correspondência for encontrada, o último parâmetro será retornado. É possível usar qualquer número de parâmetros.

Sintaxe:

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

Tipo de dados de retorno: inteiro

Argumentos

| Argumento | Descrição |
| --- | --- |
| expr1 | A primeira expressão na qual se buscará uma representação numérica válida. |
| expr2 | A segunda expressão na qual se buscará uma representação numérica válida. |
| expr3 | A terceira expressão na qual se buscará uma representação numérica válida. |
| else | Valor que será retornado, caso nenhum dos parâmetros anteriores tenha uma representação numérica válida. |

A função alt é frequentemente usada com funções de interpretação de número ou data. Dessa forma, o Qlik Sense pode testar diferentes formatos de data em ordem de prioridade. Também pode ser usado para manipular os valores NULL em expressões numéricas.

Exemplo: expressões de gráfico

| Exemplo | Resultado |
| --- | --- |
| `alt( date#(<br>						dat , 'YYYY/MM/DD' ),` `date#( dat<br>						, 'MM/DD/YYYY' ),` `date#( dat<br>						, 'MM/DD/YY' ),` `'No valid<br>						date' )` | Essa expressão testa se o campo de data contém uma data de acordo com qualquer um dos três formatos de data especificados. Se sim, será retornado um valor duplo que contém a string original e uma representação numérica válida de data. Se nenhuma correspondência for encontrada, o texto `No valid date` será retornado (sem nenhuma representação numérica válida). |
| `alt(Sales,0) + alt(Margin,0)` | Esta expressão inclui os campos `Sales` e `Margin`, substituindo qualquer valor ausente (NULL) por `0`. |

## Exemplo - Fundamentos de alt

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

#### Expressão de gráfico

Visão geral

Um conjunto de dados contém dados incompletos de vendas e previsões. Você deseja substituir os valores ausentes por valores alternativos válidos para preencher as lacunas.

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela de dados denominada `Example`.

* Os campos a seguir na tabela de dados:

  * `ID`

  * `Sales`

  * `Forecast`

Script de carregamento

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

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `ID`

* `Sales`

* `Forecast`

Crie a seguinte medida:

* `=Sum(alt(Sales, Forecast))` para retornar uma representação numérica válida, substituindo os valores ausentes por valores alternativos válidos.

Tabela de resultados

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

A função `alt` retorna o valor `Forecast` no cálculo da medida para as linhas `ID` com valores `Sales` ausentes. Ao substituir os valores ausentes por valores alternativos válidos, você pode gerar um conjunto de dados totalmente preenchido.

## Exemplo – Usando alt para substituir valores ausentes

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

#### Expressão de gráfico

Visão geral

Uma empresa coleta dados de temperatura de vários sensores. Você deseja substituir os dados ausentes de um sensor pelos dados do outro sensor.

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela de dados denominada `Example`.

* Os campos a seguir na tabela de dados:

  * `Time`

  * `Temp_Sensor1`

  * `Temp_Sensor2`

Script de carregamento

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

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `Time`

* `Temp_Sensor1`

* `Temp_Sensor2`

Crie a seguinte medida:

* `=Sum(alt(Temp_Sensor1, Temp_Sensor2))` para retornar uma representação numérica válida.

Tabela de resultados

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

Observando os resultados, a função `alt` substituiu os dados ausentes do sensor por resultados alternativos válidos do outro sensor. Isso completa o conjunto de dados preenchendo as lacunas.

## Exemplo - Cenário de alt

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

#### Expressão de gráfico

Visão geral

Esse cenário mostra diferentes maneiras de usar a função `alt` para substituir valores ausentes ou nulos.

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela de dados denominada `Example`.

* Os campos a seguir na tabela de dados:

  * `ProductID`

  * `ProductName`

  * `SalesAmount`

  * `ReturnAmount`

  * `Profit`

  * `Discount`

  * `Category`

  * `Year`

  * `Region`

  * `CustomerRating`

Script de carregamento

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

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esse campo como uma dimensão:

* `ProductID`

Crie a seguinte dimensão calculada:

* `=Coalesce( ProductName,  'Unknown Product')`, para fornecer a descrição `Unknown Product` de todos os produtos que não têm valor para `ProductName`.

Crie as seguintes medidas:

* `=Sum(alt(SalesAmount, ReturnAmount, Profit))`, para retornar um número válido se não for encontrado nenhum `SalesAmount`.

* `=avg(alt(CustomerRating, 3))`, para retornar uma classificação de cliente padronizada válida se nenhuma for fornecida originalmente.

* `=Sum(alt(Discount, SalesAmount * 0.05))`, para retornar um desconto válido.

* `=Sum(alt(Profit, SalesAmount * 0.1))`, para retornar um valor de lucro válido.

* `=Sum(alt(SalesAmount, avg(TOTAL SalesAmount)))`, para retornar um valor de vendas válido.

* `=Sum(alt(Discount, avg(TOTAL Discount)))`, para retornar um valor de desconto válido.

Tabela de resultados

| 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))) |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Totais |  | 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 | Impressora | 400 | 3 | 20 | 40 | 400 | 20 |
| 105 | Produto desconhecido | 1000 | 4 | 30 | 100 | 1000 | 30 |
| 106 | Monitorar | 150 | 5 | 0 | 250 | 750 | 41 |
| 107 | Teclado | 200 | 2 | 5 | 80 | 200 | 5 |
| 108 | Mouse | 50 | 3 | 0 | 0 | 750 | 41 |
| 109 | Produto desconhecido | 600 | 4 | 30 | 60 | 600 | 41 |
| 110 | Fones de ouvido | 300 | 3 | 15 | 100 | 300 | 41 |

A função `alt` garante que, quando faltarem valores, valores alternativos poderão ser calculados e retornados. Observe os seguintes resultados:

* A coluna 2 usa a função `Coalesce` para retornar o valor `Unknown Product` para todos os valores nulos. A função `Alt` não pode ser usada, pois se aplica apenas a valores numéricos.

* A coluna 3 retorna o valor para `SalesAmount`. Se nenhum valor for encontrado, isso retornará o valor de `ReturnAmount`. Se nenhum valor `ReturnAmount` for encontrado, isso retornará o valor de `Profit`. Isso ajuda a garantir que a coluna seja preenchida com um valor se `SalesAmount` não tiver valor.

* A coluna 4 retorna o `CustomerRating`. Se nenhum valor for encontrado, o valor padrão será `3`. Por exemplo, o produto `Laptop` não tem classificação de clientes, portanto, `3` é retornado. Em seguida, a medida calcula a média da coluna.

* A coluna 5 retorna o valor do desconto. Se nenhum valor estiver disponível, ele será calculado como 5% do valor `SalesAmount`.

* A coluna 6 retorna o valor `Profit`. Se nenhum valor estiver disponível, ele retorna 10% do `SalesAmount`.

* A coluna 7 retorna `SalesAmount`. Se nenhum valor for fornecido, será retornada a média de `SalesAmount` em todo o conjunto de dados. Por exemplo, os produtos `Monitor` e `Mouse` não têm valor para `SalesAmount`, portanto, ambos retornam `750`, que é a média de todos os valores de `SalesAmount`.

* A coluna 8 retorna o valor `Discount`. Se nenhum valor for encontrado, o sistema calcula e retorna o desconto médio em todo o conjunto de dados.