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
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
switch(
condition-expression
,label-1
,return-expression-1
[,label-n
,return-expression-n
...],default-expression
)
Argumentos
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, comoUnknown
, u otra función escalar, comotoString(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, comoUnknown
, u otra función escalar, comotoString(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, comoUnknown
, u otra función escalar, comotoString(salesAmount)
. default-expression debe tener el mismo tipo de datos que todos los argumentos de return-expression.
Tipo de retorno
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
En el ejemplo siguiente se devuelve el código de Región de AWS 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
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
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.
