# alt Función de script y de gráfico

La función alt devuelve el primero de los parámetros que tiene una representación numérica válida. Si no se encuentra tal condición, devolverá el último parámetro. Se puede utilizar cualquier número de parámetros.

Sintaxis:

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

Tipo de datos que devuelve: Entero

Argumentos

| Argumento | Descripción |
| --- | --- |
| expr1 | La primera expresión para comprobar si hay una representación numérica válida. |
| expr2 | La segunda expresión para comprobar si hay una representación numérica válida. |
| expr3 | La tercera expresión para comprobar si hay una representación numérica válida. |
| else | Valor que se ha de devolver si ninguno de los parámetros anteriores tiene una representación numérica válida. |

La función alt se utiliza a menudo con funciones de interpretación de números o fechas. De esta manera, Qlik Sense puede probar distintos formatos de fecha en un orden priorizado. También se puede utilizar para manejar valores NULL en expresiones numéricas.

Ejemplo: Expresiones de gráfico

| Ejemplo | Resultado |
| --- | --- |
| `alt( date#(<br>						dat , 'YYYY/MM/DD' ),` `date#( dat<br>						, 'MM/DD/YYYY' ),` `date#( dat<br>						, 'MM/DD/YY' ),` `'No valid<br>						date' )` | Esta expresión comprobará si el campo date contiene una fecha conforme a cualquiera de los tres formatos de fecha especificados. Si es así, devolverá un valor dual con la cadena original y una representación numérica válida de una fecha. Si no se encuentra correspondencia alguna, devolverá el texto `No valid date` (sin ninguna representación numérica válida). |
| `alt(Sales,0) + alt(Margin,0)` | Esta expresión añade los campos `Sales` y `Margin`, sustituyendo cualquier valor que falte (NULL) por un `0`. |

## Ejemplo: fundamentos de alt

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

#### Expresión de gráfico

Descripción general

Un conjunto de datos contiene datos incompletos sobre ventas y previsiones. Desea sustituir los valores que faltan por valores alternativos válidos para rellenar los huecos.

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos que se carga en una tabla de datos denominada `Example`.

* Los siguientes campos de la tabla de datos:

  * `ID`

  * `Sales`

  * `Forecast`

Script de carga

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

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `ID`

* `Sales`

* `Forecast`

Cree la siguiente medida:

* `=Sum(alt(Sales, Forecast))` para devolver una representación numérica válida sustituyendo los valores que faltan por valores alternativos válidos.

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

La función `alt` devuelve el valor de `Forecast` en el cálculo de la medida para las filas de `ID` con valores de `Sales` que faltan. Sustituyendo los valores que faltan por valores alternativos válidos puede generar un conjunto de datos completamente poblado.

## Ejemplo: uUtilización de alt para sustituir los valores que faltan

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

#### Expresión de gráfico

Descripción general

Una empresa recoge datos de temperatura procedentes de múltiples sensores. Desea sustituir los datos que faltan de un sensor por los del otro.

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos que se carga en una tabla de datos denominada `Example`.

* Los siguientes campos de la tabla de datos:

  * `Time`

  * `Temp_Sensor1`

  * `Temp_Sensor2`

Script de carga

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

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `Time`

* `Temp_Sensor1`

* `Temp_Sensor2`

Cree la siguiente medida:

* `=Sum(alt(Temp_Sensor1, Temp_Sensor2))` para devolver una representación numérica válida.

Tabla 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 los resultados, la función `alt` ha sustituido los datos que faltaban del sensor por resultados alternativos válidos del otro sensor. Esto completa el conjunto de datos rellenando lagunas.

## Ejemplo: uso de alt

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

#### Expresión de gráfico

Descripción general

Este caso muestra diferentes formas en las que puede utilizar la función `alt` para sustituir valores omitidos o nulos.

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos que se carga en una tabla de datos denominada `Example`.

* Los siguientes campos de la tabla de datos:

  * `ProductID`

  * `ProductName`

  * `SalesAmount`

  * `ReturnAmount`

  * `Profit`

  * `Discount`

  * `Category`

  * `Year`

  * `Region`

  * `CustomerRating`

Script de carga

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

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión:

* `ProductID`

Cree la siguiente dimensión calculada:

* `=Coalesce( ProductName,  'Unknown Product')`, para proporcionar la descripción `Unknown Product` para todos los productos que no tengan valor para `ProductName`.

Cree las siguientes medidas:

* `=Sum(alt(SalesAmount, ReturnAmount, Profit))`, para devolver un número válido si no se encuentra `SalesAmount`.

* `=avg(alt(CustomerRating, 3))`, para devolver una valoración estandarizada válida del cliente si no se suministra ninguna originalmente.

* `=Sum(alt(Discount, SalesAmount * 0.05))`, para devolver un descuento válido.

* `=Sum(alt(Profit, SalesAmount * 0.1))`, para devolver un valor de beneficio válido.

* `=Sum(alt(SalesAmount, avg(TOTAL SalesAmount)))`, para devolver un valor de venta válido.

* `=Sum(alt(Discount, avg(TOTAL Discount)))`, para devolver un valor de descuento válido.

Tabla 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))) |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Totals |  | 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 | Monitor | 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 |

La función `alt` garantiza que, cuando falten valores, se puedan calcular y devolver valores alternativos. Observe los siguientes resultados:

* La columna 2 utiliza la función `Coalesce` para devolver el valor `Unknown Product` en todos los valores nulos. La función `Alt` no puede utilizarse ya que solo se aplica a valores numéricos.

* La columna 3 devuelve el valor de `SalesAmount`. Si no se encuentra ningún valor, devuelve el valor `ReturnAmount`. Si no se encuentra ningún valor `ReturnAmount`, devuelve el valor `Profit`. Esto ayuda a garantizar que la columna se rellene con un valor si `SalesAmount` no tiene ningún valor.

* La columna 4 devuelve el `CustomerRating`. Si no se encuentra ningún valor, el valor por defecto es `3`. Por ejemplo, el producto `Laptop` no tiene valoración de los clientes, por lo que devuelve `3`. A continuación, la medida calcula la media de la columna.

* La columna 5 devuelve el valor de descuento. Si no hay ningún valor disponible, se calcula como un 5% del valor de `SalesAmount`.

* La columna 6 devuelve el valor `Profit`. Si no hay ningún valor disponible, devuelve 10% del `SalesAmount`.

* La columna 7 devuelve el `SalesAmount`. Si no se proporciona ningún valor, se devuelve la media de `SalesAmount` en todo el conjunto de datos. Por ejemplo, los productos `Monitor` y `Mouse` no tienen ningún valor para `SalesAmount`, por lo que ambos devuelven `750`, que es la media de todos los valores de `SalesAmount`.

* La columna 8 devuelve el valor `Discount`. Si no se encuentra ningún valor, el sistema calcula y devuelve el descuento medio de todo el conjunto de datos.