Funciones lógicas
La siguiente lista muestra las funciones lógicas que se pueden utilizar en expresiones.
Función | Descripción |
---|---|
Case | La declaración case tiene dos formas distintas. Sencilla: case Arg1 when Arg2 then Arg3 else Arg4 end La expresión Arg1 se evalúa, y si Arg1 es igual a Arg2, se devuelve Arg3. Se pueden introducir varias expresiones when/then, que se evalúan de izquierda a derecha. De búsqueda: case when Arg1 then Arg2 else Arg3 end Devuelve Arg2 si Arg1=true, y Arg3 si Arg1=false. Múltiple Si pueden introducirse expresiones, se evalúan de izquierda a derecha. Consulte la información correspondiente más abajo. Ejemplo: case when 1 < 2 then "a" when 1 < 3 then "b" else "c" end case [Column] when 3 then "a" when 2 then "b" else "c" end Para obtener más ejemplos, consulte la información a continuación y Columnas calculadas basadas en condiciones. |
If(Arg1,Arg2,Arg3) | Devuelve Arg2 si Arg1=true, y Arg3 si Arg1=false. Dado que Arg1 es booleano, el resultado suele ser una comparación. Arg2 y Arg3 pueden ser de cualquier tipo, pero deben coincidir en esto o ser nulos. El segundo y tercer argumento solo procesan subconjuntos de las filas, lo cual afecta a todos los métodos de acumulación y basados en columnas. Consulte la información correspondiente más abajo. Ejemplos: If([Count] > 3, "many", "few") If(true, null, null) -> (Vacío) If(true, 1, null) -> 1 If(false, null, 2) -> 2 If(null, 1, 2) -> (Vacío) If(1 < 2, "Small", "Big")-> Small If([Column] Is Null,"0","has value") Para obtener más ejemplos, consulte la información a continuación y Columnas calculadas basadas en condiciones. |
Is Not Null | Se usa en declaraciones con If o Case para determinar si una expresión produce un valor vacío o nulo. Ejemplo: If([Column] Is Not Null, "value was not null", "value was null") Si una expresión incluye valores vacíos (nulos), puede usar la función SN (consulte Funciones de conversión) para sustituir los valores nulos por el valor especificado. |
Is Null |
Se usa en declaraciones con If o Case para determinar si una expresión produce un valor vacío o nulo. Ejemplo: If([Column] Is Null, "value was null", "value was not null") Si una expresión incluye valores vacíos (nulos), puede usar la función SN (consulte Funciones de conversión) para sustituir los valores nulos por el valor especificado. |
Más información sobre el uso de "if" en expresiones:
Cuando utiliza una declaración con "If" en una expresión, la condición del primer argumento limita los valores para su evaluación en el tercer argumento. Para comprender su funcionamiento, escoja una columna de número entero sencillo como ejemplo:
Introduzca una columna calculada con la siguiente expresión:
if(Col1 < 2, Max(Col1), Max(Col1))
Esta acción provocará una columna nueva con dos valores diferentes; uno para el caso en el que el máximo de todos los valores inferiores a 2 y otro que muestra el valor máximo para los demás valores (que también es el máximo de toda la columna):
La función If está diseñada para dividir la columna en dos grupos y, después, continuar con la evaluación de la expresión en los grupos nuevos.
Si en cambio utiliza una expresión Percentile, obtendrá distintos resultados en la misma expresión de percentil en función de cómo haya dividido la primera condición la columna:
Introduzca dos columnas con las dos expresiones siguientes:
if (Col2 < 4, 0, Percentile(Col2, 70))
if (Col2 < 6, 0, Percentile(Col2, 70))
A continuación, obtendrá este resultado:
Como puede ver, el valor del percentil cambiará en función de cómo haya agrupado los datos la declaración "If".Más información sobre el uso de Case en expresiones:
Al trabajar con expresiones Case, la condición posterior a "when" se calcula en toda la columna. El argumento posterior a "then" se calcula en las filas definidas por la condición "when". Si hay varios pares "when- then" incluidos en la expresión, un "then" queda limitado por todas las condiciones anteriores, así como por la última.
A continuación, se muestra un ejemplo con una columna de números enteros sencillos:
Introduzca dos columnas calculadas (llamadas Case Min y Case Max) con las siguientes expresiones:
Case Min:
case when [Col1]<Avg([Col1]) then Min([Col1]) when [Col1]<(Avg([Col1]) + 1) then Min([Col1]) else Min([Col1]) end
Case Max:
case when [Col1] < Avg([Col1]) then Max([Col1]) when [Col1] < (Avg([Col1]) + 1) then Max([Col1]) else Max([Col1]) end
El resultado será el siguiente: