Fórmulas en Consultas
Vision permite obtener nuevas columnas de datos como resultado de la definición de fórmulas, mediante el uso de una sintaxis o lenguaje sencillo. Cada fórmula tiene asociado un tipo, el cual no es necesario definir: Vision lo determina automáticamente en función de lo que indique la gramática. Las fórmulas se pueden añadir de dos formas: En el editor de fórmulas hay un espacio donde se escribe la expresión de la misma. El usuario puede escribirla directamente si conoce el lenguaje y así lo desea, pero para facilitar la tarea el editor cuenta con algunos recursos útiles: La pestaña Funciones contiene todas las operaciones y cálculos que se pueden llevar a cabo en el diálogo de fórmulas. Hay varias categorías, en función de la entrada/salida de la función, cada una con su bloque asociado en la lista de funciones: Editor de fórmulas mostrando las clases de funciones Nota: En caso de usar cadenas de texto con caracteres especiales, como Añadir Fórmulas

$SQ_subqueryName_columnName__N"".$FILTER_columnName__N"".$shifterName"".Usar Funciones

"",+,% u otros, como argumentos de las funciones, se han escribir precedidos por la barra backslash \ para que se interpreten como parte de la cadena de texto y no como símbolos especiales.
Arrays
Estas funciones son especiales ya que manejan arrays o conjuntos ordenados de datos como argumentos. Se usan principalmente para manejar los resultados de las subconsultas o listas de valores de filtros.
Funciones
| Contiene el valor | Elemento del array | Posición del valor | Tamaño del array |
| contains(A, v) | elementAt(A, i) | indexOfArray(A, v) | size(A) |
Contiene el valor
Sintaxis: contains(Array, value)
Comprueba si value está contenido en el conjunto de elementos en forma de Array, como por ejemplo sucede con el resultado de una subconsulta. Devuelve true si la expresión forma parte del conjunto o false en caso contrario.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| contains([""a"", ""b"", ""c""], ""a"") | true |
| contains([""a"", ""b"", ""c""], ""d"") | false |
| contains($SQ_Field_Var, [Column]) | Devuelve true si el valor del campo Column pertenece al conjunto de valores del campo Field devuelto por la subconsulta SQ, y false en caso contrario. |
Elemento del array
Sintaxis: elementAt(Array, index)
Devuelve el valor o elemento del array situado en la posición ""index"". Tener en cuenta que un array de N elementos tiene índices desde 0 hasta N-1, si el índice es mayor que N-1 se devuelve vacío.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| elementAt([""a"", ""b"", ""c""], 0) | a |
| elementAt([""a"", ""b"", ""c""], 2) | c |
| elementAt([""a"", ""b"", ""c""], 3) | |
| elementAt($SQ_Field_Var, [Column]) | Devuelve el elemento con índice igual al valor del campo numérico Column a partir del conjunto de valores del campo Field devuelto por la subconsulta SQ. |
Posición del valor
Sintaxis: indexOfArray(Array, value)
Comprueba si value está contenido en el conjunto de elementos en forma de Array, como por ejemplo sucede con el resultado de una subconsulta. Devuelve el número igual al índice del elemento igual a value si la expresión forma parte del conjunto o -1 en caso contrario. Tener en cuenta que un array de N elementos tiene índices desde 0 hasta N-1
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| indexOfArray([""a"", ""b"", ""c""], ""a"") | 0 |
| indexOfArray([""a"", ""b"", ""c""], ""c"") | 2 |
| indexOfArray([""a"", ""b"", ""c""], ""d"") | -1 |
| indexOfArray($SQ_Field_Var, [Column]) | Devuelve el índice del valor del campo Column si éste pertenece al conjunto de valores del campo Field devuelto por la subconsulta SQ, y -1 en caso contrario. |
Tamaño del array
Sintaxis: size(Array)
Devuelve un valor numérico igual al número de elementos o tamaño de Array. Los elementos del array deben de tener todos el mismo tipo.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| size(["a", "b"]) | 2 |
| size([15,29,33]) | 3 |
| size([]) | 0 |
Comparación (igualdad)
Funciones
| Comparación | Igual | No igual |
| cmp(v1,v2) | eq(v1,v2) | ne(v1,v2) |
Comparación
Sintaxis: cmp(value1, value2)
Compara el tipo y el valor de los dos argumentos:
- Si los tipos son iguales devuelve 1 si el primer valor es mayor que el segundo, -1 si es menor y 0 si son iguales.
- Si los tipos son diferentes se sigue el criterio de orden de menor a mayor: nulo, número, texto, array, booleano (true, false) y fecha.
| Ejemplo | Resultado |
|---|---|
| cmp(1, ""a"") | -1 |
| cmp(1, 1) | 0 |
| cmp(1, 2) | -1 |
| cmp(2, 1) | 1 |
| cmp(""a"", ""b"") | -1 |
| cmp(false, 1) | 1 |
| cmp(1, $null) | 1 |
Igual
Sintaxis: eq(value1, value2)
Compara dos valores entre sí, y devuelve true si los dos valores y sus tipos son iguales, y false en caso contrario.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| eq(3, 15) | false |
| eq(3, 3) | true |
| eq(3, ""3"") | false |
| eq([Column], 15) | true si el valor del campo Column es igual al número 15, y false en caso contrario. |
| eq([Column], $null) | true si el valor del campo Column es el valor nulo (vacío) y false en caso contrario. |
No igual
Sintaxis: ne(value1, value2)
Compara dos valores entre sí, y devuelve true si los dos valores o sus tipos son diferentes, y false en caso contrario.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| ne(3, 15) | true |
| ne(3, 3) | false |
| ne(3, ""3"") | true |
| ne([Column], 15) | false si el valor del campo Column es igual al número 15, y true en caso contrario. |
| ne([Column], $null) | false si el valor del campo Column es el valor nulo (vacío) y true en caso contrario. |
Comparación (mayor/menor)
Funciones
| Mayor o igual | Mayor | Menor o igual | Menor |
| gte(v1,v2) | gt(v1,v2) | lte(v1,v2) | lt(v1,v2) |
Mayor o igual
Sintaxis: gte(value1, value2)
Compara dos valores entre si, y devuelve true si el primer valor es mayor o igual al segundo y sus tipos son iguales, y false en caso contrario.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| gte(3, 15) | false |
| gte(3, 3) | true |
| gte(15, 3) | true |
| gte(""a"", ""b"") | false |
| gte([Column], 15) | true si el valor del campo Column es mayor o igual a 15 y false en caso contrario. |
| gte(0, $null) | true, el criterio de orden entre tipos es de menor a mayor: nulo, número, texto, array, booleano (true, false) y fecha. |
Mayor
Sintaxis: gt(value1, value2)
Compara dos valores entre si, y devuelve true si el primer valor es mayor que el segundo y sus tipos son iguales, y false en caso contrario.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| gt(3, 15) | false |
| gt(3, 3) | false |
| gt(15, 3) | true |
| gt(""a"", ""b"") | false |
| gt([Column], 15) | true si el valor del campo Column es mayor que 15 y false en caso contrario. |
| gt(0, $null) | true, el criterio de orden entre tipos es de menor a mayor: nulo, número, texto, array, booleano (true, false) y fecha. |
Menor o igual
Sintaxis: lte(value1, value2)
Compara dos valores entre si, y devuelve true si el primer valor es menor o igual al segundo y sus tipos son iguales, y false en caso contrario.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| lte(3, 15) | true |
| lte(3, 3) | true |
| lte(15, 3) | false |
| lte(""a"", ""b"") | true |
| lte([Column], 15) | true si el valor del campo Column es menor o igual a 15 y false en caso contrario. |
| lte(0, $null) | false, el criterio de orden entre tipos es de menor a mayor: nulo, número, texto, array, booleano (true, false) y fecha. |
Menor
Sintaxis: lt(value1, value2)
Compara dos valores entre si, y devuelve true si el primer valor es menor que el segundo y sus tipos son iguales, y false en caso contrario.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| lt(3, 15) | true |
| lt(3, 3) | false |
| lt(15, 3) | false |
| lt(""a"", ""b"") | true |
| lt([Column], 15) | true si el valor del campo Column es menor que 15 y false en caso contrario. |
| lt(0, $null) | false, el criterio de orden entre tipos es de menor a mayor: nulo, número, texto, array, booleano (true, false) y fecha. |
Condicionales
Las funciones condicionales, de uso muy frecuente, permiten cambiar establecer condiciones para la transformación de los campos originales. Son las siguientes:
Funciones:
| Condicional simple | Condicional múltiple | Si es nulo |
| cond(b, v1, v2) | switch(b1, v1; b2, v2; ... ; v) | ifNull(v, r) |
Condicional simple
Sintaxis: cond(boolean, value1, value2)
El primer argumento es un booleano (true o false), por ejemplo el resultado de una función de comparación. Si boolean es igual a true la función devuelve value1, y en caso contrario Value2. Además, value1 y value2 deben de tener obligatoriamente el mismo tipo de dato.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| cond(true, 1, 0) | 1 |
| cond(false, 1, 0) | 0 |
| cond(eq(1, ""1""), 1, 0) | 0 |
| cond(gt(5, 22), 1, 0)* | 1 |
| cond(gt([Reference], 100), [Column1], [Column2]) | Devuelve el valor del campo Column1 si el valor de la columna Reference es mayor que 100, y el valor del campos Column2 en caso contrario. |
Condicional múltiple
Sintaxis: switch(boolean1, value1; boolean2, value2; ...; value)
La función recibe parejas de valores (boolean, value) separadas por "";"". Si boolean1 es igual a true la función devuelve value1, y sino se pasa a la siguiente pareja; si boolean2 es igual a true la función devuelve value2, y sino se pasa a la siguiente pareja; este proceso se repite tantas veces como parejas (boolean, value) se indiquen; finalmente, si todos los boolean son false, se devuelve value. Particularidades:
- Hay que definir como mínimo 2 condiciones, de lo contrario se debe usar la función condicional simple.
- El valor por defecto no es obligatorio, se devuelve un valor nulo en caso de no estar definido.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| switch(true, 1; false, 2; 0) | 1 |
| switch(false, 1; false, 2) | null |
| switch(eq(1, ""a""), 1; eq(1, true), 2; eq(1, 1), 3; 0) | 3 |
| switch(eq(1, ""a""), 1; eq(1, true), 2; eq(1, 2), 3; 0) | 0 |
| switch(lt([Column], 5), ""lt""; gt([column], 5), ""gt""; ""eq"") | Si el valor del campo numérico Column es menor que 5 devuelve ""lt"", si es mayor ""gt"", y ""eq"" en el resto de casos. |
Si es nulo
Sintaxis: ifNull(value, replacement)
La función ifNull permite reemplazar los valores null de una columna por otro valor. Si value tiene valor null la función devuelve el valor replacement, y en caso contrario value. Es obligatorio que replacement tenga el mismo tipo de dato que value.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| ifNull(0, 1) | 0 |
| ifNull($null, 1) | 1 |
| ifNull([Column], 0) | Devuelve 0 si el valor del campo numérico Column es null, y en caso contrario el valor de Column. |
Conversión
Las funciones de conversión permiten cambiar el tipo de un campo. Este proceso es, por lo general, delicado, especialmente cuando cuando hay decimales, signos de puntuación o formatos especiales. Es recomendable hacer un test y validar que todo funciona correctamente al usar estas funciones.
Funciones:
| Número a texto | Texto a número |
| toString(n) | toNumber(t) |
Número a Texto
Sintaxis: toString(number)
Convierte el valor number en un texto. Los números enteros se devuelven sin decimales, y los números con decimales se devuelven con un máximo de 5 decimales. Además, a partir de 10 dígitos enteros se da formato exponencial al número.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| toString(1) | 1 |
| toString(3.1416) | 3.1416 |
| toString(3.1415926535) | 3.14159 |
| toString(123456789) | 123456789 |
| toString(12345678901) | 1.23457e+10 |
| toString([Column]) | Devuelve como texto el valor numérico del campo Column. |
Texto a Número
Sintaxis: toNumber(text)
Convierte la cadena text en un número, siempre que esto sea posible.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| toNumber(""1"") | 1.00 |
| toNumber(""3.1416"") | 3.1416 |
| toNumber(""3a"") | null |
| toNumber([Column]) | Devuelve, si es posible, el valor numérico del campo de tipo texto Column, y en caso contrario el valor nulo. |
Fechas (partes)
Estas funciones permiten obtener información de las diferentes partes de una fecha.
Funciones:
| Año | Mes | Nombre del mes | Día del mes | Nombre del día | Trimestre |
| year(d[,b]) | month(d[,b]) | monthName(d[,l]) | day(d[,b]) | dayName(d[,l]) | quarter(d[,p]) |
Año
Sintaxis: year(date [, boolean])
La función extrae el año del valor date. Si se indica el booleano true como segundo argumento el retorno de la función es numérico, mientras que en caso contrario o cuando solo se proporciona el primer argumento el retorno es de tipo texto.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| year($now) | 20XY (texto) |
| year($now, true) | 20XY.00 (número) |
| year(dateFromParts(2023,1,1)) | 2023 |
| year(dateFromParts(2024,1,1), true) | 2024.00 |
| year([Column]) | Año (text) asociado a cada fecha del campo Column. |
Mes
Sintaxis: month(date [, boolean])
La función extrae el mes del valor date. Si se indica el booleano true como segundo argumento el retorno de la función es numérico (1-12), mientras que en caso contrario o cuando solo se proporciona el primer argumento el retorno es de tipo texto (01-12).
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| month(dateFromParts(2023,7,1)) | 07 |
| month(dateFromParts(2024,9,1), true) | 9.00 |
| month([Column]) | Mes (01-12) asociado a cada fecha del campo Column. |
Nombre del mes
Sintaxis: monthName(date [, language])
La función extrae el mes del valor date y devuelve el nombre del mes (""January"", ""February"", ...). El idioma del texto se determina de acuerdo al siguiente criterio de prioridad: idioma en el que se consume la aplicación (multilingüe) si está definido, idioma por defecto de la aplicación (multilingüe) si no se ha indicado ningún idioma específico, idioma por defecto del usuario en Vision (aplicación no multilingüe), idioma por defecto del navegador donde se consume la aplicación (no multilingüe).
Opcionalmente recibe un segundo parámetro que indica el idioma utilizado si este se quiere fijar. Para cambiar el idioma se debe pasar el parámetro utilizando el código ISO de dos letras relativo al idioma (""en"", ""pt"", ""es"").
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| monthName(dateFromParts(2023,7,1)) | July |
| monthName(dateFromParts(2024,9,1)) | September |
| monthName(dateFromParts(2024,9,1), ""es"") | septiembre |
| monthName(dateFromParts(2024,9,1), ""pt"") | setembro |
| monthName([Column]) | Nombre del mes asociado a cada fecha del campo Column. |
Día del mes
Sintaxis: day(date [, boolean])
La función extrae el día del mes del valor date. Si se indica el booleano true como segundo argumento el retorno de la función es numérico (1-31), mientras que en caso contrario o cuando solo se proporciona el primer argumento el retorno es de tipo texto (01-31).
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| day(dateFromParts(2023,7,1)) | 01 |
| day(dateFromParts(2024,9,14), true) | 14.00 |
| day([Column]) | Día del mes (01-31) asociado a cada fecha del campo Column. |
Nombre del día de la semana
Sintaxis: dayName(date [, language])
La función extrae el día de la semana del valor date y devuelve su nombre ("Monday", "Tuesday", ...). El idioma del texto se determina de acuerdo al siguiente criterio de prioridad: idioma en el que se consume la aplicación (multilingüe) si está definido, idioma por defecto de la aplicación (multilingüe) si no se ha indicado ningún idioma específico, idioma por defecto del usuario en Vision (aplicación no multilingüe), idioma por defecto del navegador donde se consume la aplicación (no multilingüe).
Opcionalmente recibe un segundo parámetro que indica el idioma utilizado si este se quiere fijar. Para cambiar el idioma se debe pasar el parámetro utilizando el código ISO de dos letras relativo al idioma ("en", "pt", "es").
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| dayName(dateFromParts(2023,7,1)) | Saturday |
| dayName(dateFromParts(2024,9,1)) | Sunday |
| dayName(dateFromParts(2024,9,1), "es") | domingo |
| dayName(dateFromParts(2024,9,2), "pt") | segunda-feira |
| dayName([Column]) | Nombre del día de la semana asociado a cada fecha del campo "Column". |
Trimestre
Sintaxis: quarter(date [, prefix])
La función extrae el trimestre del año del valor date (1-4), y lo devuelve como texto. Opcionalmente puede recibir un un texto entre comillas como segundo parámetro, que se usará como prefijo.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| quarter(dateFromParts(2023,1,1)) | 1 |
| quarter(dateFromParts(2024,4,1), "T-") | T-2 |
| quarter(dateFromParts(2024,7,1)) | 3 |
| quarter(dateFromParts(2024,10,2), "Q") | Q4 |
| quarter([Column]) | Trimestre del año (1-4) asociado a cada fecha del campo "Column". |
Fechas (completas)
Estas funciones permiten crear, transformar o convertir campos de naturaleza temporal.
Funciones:
| Fecha a texto | Fecha desde texto | Fecha por componentes |
| dateToString(d, f) | dateFromString(t) | dateFromParts(y[, m, d, h, m, s, ms]) |
Fecha a texto
Sintaxis: dateToString(date, format)
Convierte la fecha a texto con el formato indicado.
Opciones de formato.
| Opción | Descripción | Valores |
|---|---|---|
| %Y | Año (4 dígitos) | 0000-9999 |
| %m | Mes (2 dígitos) | 01-12 |
| %d | Día del mes (2 dígitos) | 01-31 |
| %H | Hora (2 dígitos) | 00-23 |
| %M | Minutos (2 dígitos) | 00-59 |
| %S | Segundos (2 dígitos) | 00-60 |
| %L | Milisegundos (3 dígitos) | 000-999 |
| %j | Día del año (3 dígitos) | 001-366 |
| %u | Día de la semana (1-Lunes, 7-Domingo) | 1-7 |
| %w | Día de la semana (1-Domingo, 7-Sábado) | 1-7 |
| %V | Semana del año (2 dígitos) | 01-53 |
| %U | Semana del año (2 dígitos) | 00-52 |
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| dateToString(dateFromParts(2023,1,1), "%Y") | 2023 |
| dateToString(dateFromParts(2024,4,1,17,5,45,433), "%Y-%m-%d %H:%M:%S.%L") | 2024-04-01 17:05:45.433 |
| dateToString(dateFromParts(2024,1,1), "%j from %Y") | 001 from 2024 |
| dateToString(dateFromParts(2024,1,1), "%U or %V starting the year?") | 01 or 00 starting the year? |
| dateToString([Column]"%Y-%m-%d") | Texto asociado a cada fecha del campo "Column" con formato "YYYY-MM-DD". |
Fecha desde texto
Sintaxis: dateFromString(text)
Devuelve una fecha a partir del valor indicado en la cadena text, que se ha de construir con el formato "YYYY-MM-DD H24:MI:SS.sss". Se han de proporcionar el año y el mes obligatoriamente, el resto de formato es opcional.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| dateFromString("2024-03") | date "2024/03/01 00:00:00.000Z" |
| dateFromString("2024") | ERROR |
| dateFromString("2024-03-28") | date "2024/03/28 00:00:00.000Z" |
| dateFromString("2024-03-28 19:50:25.128") | date "2024/03/28 19:50:25.128Z" |
| dateFromString([ColumnText]) | Fecha asociada al valor del campo "ColumnText", que debe de tener con formato ""YYYY-MM-DD H24:MI:SS.sss"". |
| dateFromString(dateToString(dateFromParts(2024,1,1),"%Y-%m-%d")) | date "2024/01/01 00:00:00.000Z" |
| dateFromString(dateToString([ColumnDate]"%Y-%m-%d")) | Fecha truncada al día para cada valor del campo fecha "ColumnDate". |
Fecha por componentes
Sintaxis: dateFromParts(YYYY[, MM, DD, H24, MI, SS, sss])
Devuelve una fecha compuesta a partir de sus partes: año, mes, día, hora (formato 24h), minuto, segundos y milisegundos. Es obligatorio indicar al menos el año.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| dateFromParts(2024) | date "2024/01/01 00:00:00.000Z" |
| dateFromParts(2024, 3, 28) | date "2024/03/28 00:00:00.000Z" |
| dateFromParts(2024, 3, 28, 19, 50,25, 128) | date "2024/03/28 19:50:25.128Z" |
| dateFromParts(year([ColumnDate], true), month([ColumnDate], true), day([ColumnDate], true)) | Fecha construida a partir de las partes anual, mensual y diaria del campo Column. |
| dateFromParts(year($now, true), month($now, true), day($now, true)) | Fecha $now truncada al día, cuyo valor es igual a la variable $today. |
| dateFromParts([ColumnYear], [ColumnMonth], [ColumnDay]) | Fecha construida a partir del año, mes y día indicados por los campos numéricos ColumnYear, ColumnMonth y ColumnDay. |
Lógicas
Las funciones lógicas realizan una operación lógica con sus argumentos, de tipo booleano. Su retorno es a su vez de tipo booleano (true/false), por lo que no se usan directamente como resultado de una fórmula, sino como variables en otras funciones que precisan booleanos como variables.
Funciones:
| Función "O" | Función "No" | Función "Y" |
| or(b1, b2, ...) | not(b) | and(b1, b2, ... |
Función "O"
Sintaxis: or(boolean1, boolean2, ...)
Devuelve true si alguno de los argumentos es true, y false en caso contrario.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| or(true, false, false) | true |
| or(false, false, false) | false |
| or(eq(1,1), ne(1,2)) | true |
| or(gt(1,1), ne(1,2)) | true |
| or(gt(1,1), ne(1,1)) | false |
| or(gt([Column], 10), lt([Column], 4)) | Devuelve true si el valor del campo Column es mayor que 10 o menor que 4, y false en caso contrario. |
Función "No"
Sintaxis: not(boolean)
Realiza la operación "negación": si el argumento es true devuelve false, y si es false devuevle true.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| not(true) | false |
| not(false) | true |
| not(eq(1,2)) | true |
| not(ne(1,2)) | false |
| not(gt([Column], 10)) | Devuelve false si el valor del campo Column es mayor que 10, y true en caso contrario. |
Función "Y"
Sintaxis: and(boolean1, boolean2, ...)
Devuelve true si todos los argumentos son true, y false en caso contrario.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| and(true, true, false) | false |
| and(true, true, true) | true |
| and(eq(1,1), ne(1,2)) | true |
| and(gt(1,1), ne(1,2)) | false |
| and(gt(1,1), ne(1,1)) | false |
| and(gt([Column], 10), lt([Column], 4)) | Devuelve true si el valor del campo Column es mayor que 10 y menor que 4, y false en caso contrario. |
Matemáticas (aproximación)
Estas funciones matemáticas devuelven un valor aproximado de un número.
Funciones:
| Entero superior | Entero inferior | Parte entera | Redondear decimales |
| ceil(n) | floor(n) | trunc(n) | round(n[,p]) |
Entero superior
Sintaxis: ceil(number)
Devuelve el entero más pequeño que sea mayor o igual al número dado.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| ceil(0.95) | 1 |
| ceil(9.003) | 10 |
| ceil(-2.8) | -2 |
| ceil(1.5) | 2 |
Entero inferior
Sintaxis: floor(number)
Devuelve el entero más grande que sea menor o igual al número dado.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| floor(0.95) | 0 |
| floor(9.003) | 9 |
| floor(-2.8) | -3 |
| floor(1.5) | 1 |
Parte entera
Sintaxis: trunc(number)
Trunca el número dado a su valor entero: el entero inferior si es positivo y el superior si es negativo.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| trunc(0.95) | 0 |
| trunc(9.003) | 9 |
| trunc(-2.8) | -2 |
| trunc(1.5) | 1 |
Redondear decimales
Sintaxis: round(number[, precision])
Redondea number a la precisión (accuracy) decimal indicada, y si no se indica ésta explícitamente se entiende como 0. Cuando redondea a valores enteros, el valor X.5 lo redondea a X si X es par, y a X+1 si X es impar, mientras que cuando se redondea a uno o más decimales, el valor X.Y5 lo redondea siempre a X.Y (cuestiones de precisión en la representación de los valores numéricos decimales).
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| round(0.95) | 1 |
| round(9.003) | 9 |
| round(-2.8) | -3 |
| round(1.5) | 2 |
| round(2.5) | 2 |
| round(0.957432, 3) | 0.957 |
| round(0.957432, 1) | 1.0 |
| round(0.857432, 1) | 0.9 |
| round(0.95, 1) | 0.9 |
| round(0.85, 1) | 0.8 |
Matemáticas (generales)
Funciones matemáticas de uso común, aplican únicamente a valores numéricos y devuelven un número.
Funciones:
| Raiz cuadrada | Valor absoluto |
| sqrt(n) | abs(n) |
Raíz cuadrada
Sintaxis: sqrt(number)
Calcula la raíz cuadrada de number.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| sqrt(0) | 0 |
| sqrt(2) | 1.414213... |
| sqrt(4) | 2 |
| sqrt(-2) | ERROR |
Valor Absoluto
Sintaxis: abs(number)
Devuelve el valor absoluto de number.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| abs(-1) | 1 |
| abs(0) | 0 |
| abs(1) | 1 |
Matemáticas (exponencial y logaritmo)
Estas funciones matemáticas permiten obtener exponenciales y logaritmos.
Funciones:
| Exponencial | Logaritmo natural | Logaritmo |
| exp(n) | ln(n) | log(n) |
Exponencial
Sintaxis: exp(number)
Eleva el número e al exponente number (enumber).
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| exp(0) | 1 |
| exp(1) | 2.718282... |
| exp(-1) | 0.367879... |
Logaritmo
Sintaxis: log(number, base)
Calcula el Logaritmo de number en la base indicada.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| log(2, 2) | 1 |
| log(4, 2) | 2 |
| log(2, 10) | 0.301029... |
| log(-2, 10) | ERROR |
Logaritmo natural
Sintaxis: ln(number)
Calcula el logaritmo natural de number.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| ln(1) | 0 |
| ln(2.718282) | 1.000000... |
| ln(0.367879) | -1.000001... |
| ln(-1) | ERROR |
Operadores
Los operadores aplican unicamente cuando se sitúan entre números. No tienen una sintaxis de función con argumentos, simplemente el operador va en medio de los 2 números o componentes.
Funciones:
| Suma | Resta | Multiplicación | División | Potencia | Resto de la división |
| + | - | / | / | ^ | % |
Suma (+)
Sintaxis: addend1 + addend2
Calcula la suma de dos números o de un número y una fecha. Si una de las expresiones es de tipo fecha la otra expresión se trata como el número de milisegundos a añadir a la fecha.
El tipo de retorno de la fórmula es numérico si los sumandos son números, o una fecha si uno de los sumandos es de tipo fecha.
Ejemplos:
| Ejemplo | Resultado |
| 7+3 | 10 |
| dateFromParts(2023,1,1,10,50) + 60000 | date 2023-01-01 10:51:00.000Z |
| [ColumnA] + [ColumnB] | Devuelve el valor del campo ColumnA más el valor del campo ColumnB, excepto cuando alguno de los valores es nulo, que devuelve null. |
Resta (-)
Sintaxis: minuend - subtrahend
Calcula la resta de dos números, de una fecha menos un número, o de dos fechas. Cuando se resta un número de una fecha el número se interpreta en milisegundos, y cuando resta 2 fechas ambas se convierten a milisegundos para proceder a una resta numérica.
El tipo de retorno de la fórmula es numérico si minuend y subtrahend son números, es una fecha si minuend es una fecha y subtrahend un número, y un número igual a la diferencia en milisegundos si minuend y subtrahend son ambos fechas.
Ejemplos:
| Ejemplo | Resultado |
| 7 – 3 | 4 |
| dateFromParts(2023,1,1,10,50) - 60000 | date 2023-01-01 10:49:00.000Z |
| dateFromParts(2023,1,1,10,50) - dateFromParts(2023,1,1,10,49) | 60000 |
| [ColumnA] - [ColumnB] | Devuelve el valor del campo ColumnA menos el valor del campo ColumnB, excepto cuando alguno de los valores es nulo, que devuelve null. |
Multiplicación (*)
Sintaxis: factor1 * factor2
Calcula la multiplicación de dos números, retornando a su vez un número.
Ejemplos
| Ejemplo | Resultado |
| 7 * 3 | 21 |
| 1 * 0 | 0 |
| [ColumnA] * [ColumnB] | Devuelve el valor del campo ColumnA multiplicado por el valor del campo ColumnB, excepto cuando alguno de los valores es nulo, que devuelve null. |
División (/)
Sintaxis: dividend / divisor
Calcula la división de dos números, retornando a su vez un número. Cuando divisor toma el valor 0 el resultado es null, al igual que cuando o dividend o divisor sean nulo.
Ejemplos:
| Ejemplo | Resultado |
| 7 / 2 | 3.5 |
| 8 / 4 | 2 |
| [ColumnA] / [ColumnB] | Devuelve el valor del campo ColumnA dividido entre el valor del campo ColumnB, excepto cuando alguno de los valores es nulo o el valor de ColumnB es 0, que devuelve null. |
Potencia (^)
Sintaxis: base ^ power
Eleva el número base al exponente numérico power especificado, retornando a su vez un número base power.
Ejemplos:
| Ejemplo | Resultado |
| 2 ^ 3 | 8 |
| [ColBase] ^ 2 | Devuelve un número cuyo valor es el resultado de elevar el valor del campo ColBase al cuadrado, o null si el valor de ColBase es nulo. |
| 2 ^ [ColPower] | Devuelve un número cuyo valor es el resultado de elevar 2 al valor del campo ColPower, o null si el valor de ColPower es nulo. |
Resto de la división (%)
Sintaxis: dividend % divisor
Permite calcular el resto de la división de dos números, retornando a su vez un número. Cuando divisor toma el valor 0 el resultado es null, al igual que cuando o dividend o divisor sean nulo.
Ejemplos:
| Ejemplo | Resultado |
| 7 % 2 | 1 |
| 8 % 4 | 0 |
| [ColumnA] % [ColumnB] | Devuelve el resto de dividir el valor del campo ColumnA entre el valor del campo ColumnB, excepto cuando alguno de los valores es nulo o el valor de ColumnB es 0, que devuelve null. |
Texto (general)
Estas funciones permiten la manipulación de cadenas de texto. Son las siguientes:
Funciones
| Comparación de cadenas | Concatenación | Longitud | Posición | Separar texto |
| strCaseCmp(t1, t2) | concat(t1, t2, ...) | strLen(t) | indexOf(t, s [, f, t]) | split(t, s) |
Comparación de cadenas
Sintaxis: strCaseCmp(text1, text2)
Dados dos argumentos de tipo texto se realiza una comparación alfanumérica e ignorando las mayúsculas. El retorno es numérico:
- 1 si text1 es mayor que text2.
- 0 si ambos textos son iguales.
- -1 si text2 es mayor text1.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| strCaseCmp("hello", "bye") | 1 ("h" > "b") |
| strCaseCmp("hello", "Hello") | 0 ("h" = "H") |
| strCaseCmp("bye", "hello") | -1 ("b" < "h") |
| strCaseCmp("123", "hello") | -1 ("1" < "h") |
| strCaseCmp([Column1], [Column2]) | 1 si el valor del campo Column1 es alfanuméricamente mayor que el del campo Column2, 0 si son iguales y -1 en caso contrario. |
Concatenación
Sintaxis: concat(text1, text2, ...)
Concatena dos o más cadenas de texto.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| concat("This", " ", "text", " ", "comes", " ", "from", " ", "a", " ", "concat", " ", "function.") | "This text comes from a concat function." |
| concat("prefix - ", [Column]) | Añade la cadena de texto "prefix - " al valor del campo Column, o devuelve null si el valor del campo es nulo. |
Longitud
Sintaxis: strLen(text)
Devuelve el número de caracteres (estrictamente el número de UTF-8 code points) de la cadena text.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| strLen("Hello") | 5 |
| strLen("Hello Jack") | 10 |
| strLen("#<@^¥®¾Øæ?????") | 14 |
| strLen([Column]) | Devuelve el número de caracteres del valor del campo Column. |
Posición
Sintaxis: indexOf(text, string [, from, to])
Esta función devuelve la posición de la primera coincidencia de string en text, donde la posición comienza con el valor 0 y termina con el valor L-1, siendo L el número de caracteres de text (strLen(text)). En caso de no haber coincidencia devuelve el valor -1.
Opcionalmente, se puede acotar el intervalo de búsqueda, esto es, buscar la coincidencia solo en el intervalo [from, to] de caracteres de text, desechando cualquier coincidencia fuera de ese rango.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| indexOf("Hello", "H") | 0 |
| indexOf("hello", "H") | -1 |
| indexOf("Hello world", "world") | 6 |
| indexOf("Hello world", " ") | 5 |
| indexOf("Hello world", "world", 2) | 6 |
| indexOf("Hello world", "world", 0, 6) | -1 |
| indexOf("Hello world", "world", 7, strLen("Hello world")-1) | 6 |
| indexOf([Column], "p") | Devuelve la posición de la primera aparición de la cadena "p" para cada valor del campo Column en caso de que haya coincidencia, y -1 en caso contrario. |
Separar texto
Sintaxis: split(text, sep)
Separa la cadena text usando el separador sep, y devuelve un array con tantos elementos como divisiones se obtienen.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| split("a,b,c", ",") | ["a","b","c"] |
| split("a,b,c", ".") | ["a,b,c"] |
| split("", ".") | [""] |
| split("hello world", "l") | ["he","","o wor","d"] |
Texto (modificar)
Estas funciones permiten la transformación y conversión de de cadenas de texto. Son las siguientes:
Funciones
| Mayúsculas | Minúsculas | Recortar | Subcadena |
| toUpper(t) | toLower(t) | trim(t, [s]) | substr(t, f, l) |
Mayúsculas
Sintaxis: toUpper(text)
Convierte todas las letras de text en mayúsculas. Aplica la conversión solo a caracteres ASCII.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| toUpper("Hello") | "HELLO" |
| toUpper("Exit, this WAY") | "EXIT, THIS WAY" |
| toUpper([Column]) | Devuelve cada valor del campo Column convertido a mayúsculas. |
Minúsculas
Sintaxis: toLower(text)
Convierte todas las letras de text en minúsculas. Aplica la conversión solo a caracteres ASCII.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| toLower("Hello") | "hello" |
| toLower("Exit, this WAY") | "exit, this way" |
| toLower([Column]) | Devuelve cada valor del campo Column convertido a minúsculas. |
Recortar
Sintaxis: trim(text, [string])
Elimina todos los caracteres "espacio" al inicio y final de text. En caso de pasar un segundo argumento string elimina todos los caracteres que formen parte de string.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| trim("hello") | "hello" |
| trim(" hello ") | "hello" |
| trim("hello", "h") | "ello" |
| trim("hello", "ho") | "ell" |
| trim("hello", "l") | "hello" |
| trim("hello", "hl") | "ello" |
| trim([Column]) | Devuelve el valor asociado al campo Column sin espacios al inicio y al final de la cadena. |
Subcadena
Sintaxis: substr(text, from, length)
Obtiene la subcadena de text desde la posición from tomando length caracteres, teniendo en cuenta que las posiciones comienzan a contarse por el 0.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| substr("hello world", 0, 4) | "hell" |
| substr("hello world", 0, 5) | "hello" |
| substr("hello world", 1, 4) | "ello" |
| substr("hello world", 1, 5) | "ello " |
| substr("hello world", 6, 2) | "wo" |
| substr([Column], 0, 5) | Devuelve los 5 primeros caracteres de cada valor del campo Column. |
Trigonométricas (generales)
Las funciones trigonométricas son funciones matemáticas especificas para su uso con medidas relacionadas con ángulos. Son las siguientes:
Funciones:
| Grados a radianes | Radianes a grados | Seno | Coseno | Tangente |
| degreesToRadians(n) | radiansToDegrees(n) | sin(n) | cos(n) | tan(n) |
Grados a Radianes
Sintaxis: degreesToRadians(number)
Hace la conversión de number grados a radianes: 1° × ?/180 = 0.0174533... rad.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| degreesToRadians(1) | 0.017453... |
| degreesToRadians(45) | 0.785398... (?/4) |
| degreesToRadians(60) | 1.047198... (?/3) |
| degreesToRadians(90) | 1.570796... (?/2) |
| degreesToRadians(180) | 3.141593... (?) |
| degreesToRadians([Column]) | Interpreta como grados cada valor del campo Column y lo retorna como convertido a radianes. |
Radianes a Grados
Sintaxis: radiansToDegrees(number)
Hace la conversión de number radianes a grados: 1 rad × 180/? = 57.2958...°.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| radiansToDegrees(0.017453) | 0.999983... (~1°) |
| radiansToDegrees(0.785398) | 44.999991... (~45°) |
| radiansToDegrees(1.047198) | 60.000026... (~60°) |
| radiansToDegrees(1.570796) | 89.999981... (~90°) |
| radiansToDegrees(3.141593) | 180.000020... (~180°) |
| radiansToDegrees([Column]) | Interpreta como radianes cada valor del campo Column y lo retorna como convertido a grados. |
Seno
Sintaxis: sin(number)
Obtiene el seno de number, entendiendo el valor en radianes.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| sin(0.017453) | 0.017452... |
| sin(0.785398) | 0.707107... (~?2/2) |
| sin(1.047198) | 0.866026... (~?3/2) |
| sin(1.570796) | 1.000000... (~1) |
| sin(3.141593) | 0.000000... (~0) |
| sin(90) | 0.893997... |
| sin([Column]) | Interpreta como radianes cada valor del campo Column y lo retorna aplicando la función seno. |
Coseno
Sintaxis: cos(number)
Obtiene el coseno de number, entendiendo el valor en radianes.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| cos(0.017453) | 0.999848... |
| cos(0.785398) | 0.707107... (~?2/2) |
| cos(1.047198) | 0.500000... (~1/2) |
| cos(1.570796) | 0.000000... (~0) |
| cos(3.141593) | -1.000000... (~-1) |
| cos(90) | -0.448074... |
| cos([Column]) | Interpreta como radianes cada valor del campo Column y lo retorna aplicando la función coseno. |
Tangente
Sintaxis: tan(number)
Obtiene la tangente de number, entendiendo el valor en radianes.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| tan(0.017453) | 0.017455... |
| tan(0.785398) | 1.000000... (1) |
| tan(1.047198) | 1.732053... (~?3) |
| tan(1.570796) | 3,060,023.306953... (~?) |
| tan(3.141593) | 0.000000... (~0) |
| tan(90) | -1.995200... |
| tan([Column]) | Interpreta como radianes cada valor del campo Column y lo retorna aplicando la función tangente. |
Trigonométricas (arcoseno)
Funciones:
| Arcoseno | Arcoseno hiperbólico |
| asin(n) | asinh(n) |
Arcoseno
Sintaxis: asin(number)
Obtiene el arcoseno de number, siempre que éste sea un número mayor o igual que -1 y menor o igual que 1. Retorna un valor en radianes.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| asin(-1) | -1.570796... (-?/2) |
| asin(-0.5) | -0.523599... (~-?/6) |
| asin(0) | 0 |
| asin(0.866026) | 1.047199... (~?/3) |
| asin(1) | 1.570796... (?/2) |
| asin(7) | ERROR |
| asin([Column]) | Obtiene el arcoseno de cada valor del campo Column, y devuelve nulo en caso de que el valor sea menor que -1 o mayor que 1. |
Arcoseno Hiperbólico
Sintaxis: asinh(number)
Obtiene el arcoseno hiperbólico de number.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| asinh(-3.626860) | -2,000000... (~-2) |
| asinh(-2) | -1.443635... |
| asinh(0) | 0 |
| asinh(1) | 0.881374... |
| asinh(1.175201) | 1.000000... (~1) |
| asinh([Column]) | Obtiene el arcoseno hiperbólico de cada valor del campo Column. |
Trigonométricas (arcocoseno)
Funciones:
| Arcocoseno | Arcocoseno hiperbólico |
| acos(n) | acosh(n) |
Arcocoseno
Sintaxis: acos(number)
Obtiene el arcocoseno de number, siempre que éste sea un número mayor o igual que -1 y menor o igual que 1. Retorna un valor en radianes.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| acos(-1) | 3.141593... (-?) |
| acos(-0.5) | 2.094395... (2?/3) |
| acos(0) | 1.570796... (?/2) |
| acos(0.707107) | 0.785398... (~?/4) |
| acos(1) | 0 |
| acos(7) | ERROR |
| acos([Column]) | Obtiene el arcocoseno de cada valor del campo Column, y devuelve nulo en caso de que el valor sea menor que -1 o mayor que 1. |
Arcocoseno Hiperbólico
Sintaxis: acosh(number)
Obtiene el arcocoseno hiperbólico de number, siempre que éste sea un número mayor o igual que 1.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| acosh(0) | ERROR |
| acosh(1) | 0 |
| acosh(1.543081) | 1.000000... (~1) |
| acosh(2) | 1.316958... |
| acosh(3.762196) | 2.000000... (~2) |
| acosh([Column]) | Obtiene el arcocoseno hiperbólico de cada valor del campo Column, y devuelve nulo en caso de que el valor sea menor que 1. |
Trigonométricas (arcotangente)
Funciones:
| Arcotangente | Arcotangente 2 parámetros | Arcotangente hiperbólica |
| atan(n) | atan2(n1,n2) | atanh(n) |
Arcotangente
Sintaxis: atan(number)
Obtiene el arcotangente de number, retornando un valor en radianes.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| atan(-1) | -0.785398... (-?/4) |
| atan(-0.577350) | -0.523599... (~?/6) |
| atan(0) | 0 |
| atan(1) | 0.785398... (?/4) |
| atan(1.732051) | 1.047198... (~?/3) |
| atan(7) | 1.428899... |
| atan([Column]) | Obtiene el arcotangente de cada valor del campo Column. |
Arcotangente de 2 Parámetros
Sintaxis: atan2(number1, number2)
Obtiene el arcotangente de 2 parámetros number1 y number2, esto es, el arcotangente de number1/number2.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| atan2(1,1) | 0.785398... (?/4) |
| atan2(0,1) | 0 |
| atan2(1,0) | 1.570796... (?/2) |
| atan2(7,2) | 1.292497... |
| atan2(-1.732051,1) | -1.047198... (~-?/3) |
| atan2([Column1], [Column2]) | Obtiene el arcotangente de cada valor Column1/Column2, y devuelve nulo en caso de que Column2 sea igual a 0. |
Arcotangente Hiperbólico
Sintaxis: atanh(number)
Obtiene el arcotangente hiperbólico de number, siempre que éste sea un número mayor que -1 y menor que 1.
Ejemplos:
| Ejemplo | Resultado |
|---|---|
| atanh(-2) | ERROR |
| atanh(-1) | null |
| atanh(-0.999999) | -7.254329... |
| atanh(-0.964028) | -2.000006... (~-2) |
| atanh(0) | 0 |
| atanh(0.5) | 0.549306... |
| atanh(0.761594) | 1.000000... (~1) |
| atanh([Column]) | Obtiene el arcotangente hiperbólico de cada valor del campo Column, y devuelve nulo en caso de que el valor sea menor o igual que -1 o mayor o igual que 1. |