

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# switch
<a name="switch-function"></a>

`switch` compara *condition-expression* con las etiquetas literales, dentro de un conjunto de combinaciones de etiquetas literales y *return-expression*. A continuación, devuelve la expresión *return-expression* correspondiente a la primera etiqueta literal que es igual a la expresión *condition-expression*. Si ninguna etiqueta es igual a la expresión *condition-expression*, `switch` devuelve la expresión *default-expression*. Todas las expresiones *return-expression* y *default-expression* deben tener el mismo tipo de datos.

## Sintaxis
<a name="switch-function-syntax"></a>

```
switch(condition-expression, label-1, return-expression-1 [, label-n, return-expression-n ...], 
        default-expression)
```

## Argumentos
<a name="switch-function-arguments"></a>

`switch` requiere uno o más pares de expresiones *if*, *then* y requiere exactamente una expresión para el argumento *else*. 

 *condition-expression*   
La expresión que se va a comparar con los literales de etiqueta. Puede ser un nombre de campo, como `address`, un valor literal, como `Unknown`, u otra función escalar, como `toString(salesAmount)`. 

 *etiqueta*   
El literal que se va a comparar con el argumento de *condition-expression*. Todos los literales deben tener el mismo tipo de datos que el argumento *condition-expression*. `switch` acepta hasta 5000 etiquetas. 

 *return-expression*   
La expresión que se devolverá si el valor de su etiqueta es igual al valor de la expresión *condition-expression*. Puede ser un nombre de campo, como `address`, un valor literal, como `Unknown`, u otra función escalar, como `toString(salesAmount)`. Todos los argumentos de *return-expression* deben tener el mismo tipo de datos que *default-expression*.

 *default-expression*   
La expresión que se devolverá si ningún valor de ningún argumento de la etiqueta es igual al valor de *condition-expression*. Puede ser un nombre de campo, como `address`, un valor literal, como `Unknown`, u otra función escalar, como `toString(salesAmount)`. *default-expression* debe tener el mismo tipo de datos que todos los argumentos de *return-expression*.

## Tipo de devolución
<a name="switch-function-return-type"></a>

`switch` devuelve un valor del mismo tipo de datos que los valores de *return-expression*. Todos los datos que devolvieron las expresiones *return-expression* y *default-expression* deben ser del mismo tipo de datos o estar convertidos al mismo tipo de datos. 

## Ejemplos generales
<a name="switch-function-example"></a>

El siguiente ejemplo devuelve el Región de AWS código del nombre de la región de entrada. 

```
switch(region_name, 
               "US East (N. Virginia)", "us-east-1", 
               "Europe (Ireland)", "eu-west-1", 
               "US West (N. California)", "us-west-1", 
               "other regions")
```

Los siguientes son los valores de los campos.

```
"US East (N. Virginia)"
        "US West (N. California)"
        "Asia Pacific (Tokyo)"
```

Para estos valores de campo, se devuelven los siguientes valores.

```
"us-east-1"
        "us-west-1"
        "other regions"
```

## Uso del cambio para reemplazar `ifelse`
<a name="switch-instead-of-ifelse"></a>

El siguiente caso de uso `ifelse` es equivalente al ejemplo anterior. En el caso de `ifelse`, para evaluar si los valores de un campo son iguales a valores literales diferentes, es una mejor opción usar `switch` en su lugar.

```
ifelse(region_name = "US East (N. Virginia)", "us-east-1", 
               region_name = "Europe (Ireland)", "eu-west-1", 
               region_name = "US West (N. California)", "us-west-1", 
               "other regions")
```

## Expresión como valor devuelto
<a name="switch-expression-as-return-value"></a>

En el siguiente ejemplo se utilizan expresiones en *return-expressions*:

```
switch({origin_city_name}, 
               "Albany, NY", {arr_delay} + 20, 
               "Alexandria, LA", {arr_delay} - 10,
               "New York, NY", {arr_delay} * 2, 
               {arr_delay})
```

En el ejemplo anterior se cambia el tiempo de retraso previsto para cada vuelo desde una ciudad concreta.

![\[Imagen de los resultados del ejemplo de la función, que se muestra en forma de tabla.\]](http://docs.aws.amazon.com/es_es/quick/latest/userguide/images/switch-function-example.png)
