Procesador Expresión

Este procesador es un procesador versátil que toma una expresión como argumento y genera el resultado en un campo.

La expresión puede estar compuesta por:

  • identificadores,

  • literales (números, literales de texto, valores booleanos y palabras clave),

  • operadores,

  • funciones.

Requisito previo

El procesador de expresiones es más útil en modo de evaluación (lo cual implica ''calcular y devolver el resultado de la expresión''), que se activa insertando un signo de igual al principio de la expresión (=). De lo contrario, el procesador no evaluará la expresión y simplemente la colocará en el campo de salida.

En los ejemplos siguientes se omite el signo de igual inicial (=).

Establecer el procesador

Para establecer los parámetros del procesador Expresión, siga las indicaciones de esta tabla.

Etiqueta

Descripción

Obligatorio

Expresión

Patrón de expresión.

Campo de salida

Campo en que se aplicará la expresión. Puede ser un campo existente seleccionado de la lista, o un campo nuevo creado con ese fin (en ese caso, elija Texto de entrada en la lista y escriba el nombre del campo nuevo en el área de texto que figura a continuación).

Creación de una expresión

Una expresión es una instrucción para que el procesador ejecute una operación y devuelva el valor en una columna nueva o existente del conjunto de datos.

Estas expresiones tienen el aspecto de lo que, en el software de hoja de datos, se da en llamar ''fórmulas''. La principal diferencia es que, en lugar de hacer referencia a celdas (p. ej., A1 + B2), el procesador puede realizar operaciones con los valores de las columnas correspondientes (p. ej., columna_1 + columna_2).

Al igual que en una fórmula, las expresiones pueden ser una combinación cualquiera de varios elementos. El procesador de expresiones admite los elementos siguientes:

  • identificadores (p. ej., un nombre de campo como columna_1 o un nombre de campo forzado como $column_1);

  • literales:

    • números (p. ej., 2 o 3,6);

    • literales de texto (p. ej., "hola" o 'mundo');

    • valores booleanos (p. ej., 'true' o 'false');

    • palabras clave (p. ej., una constante matemática como pi y e);

  • operadores (p. ej., +, OR, not, <=),

  • funciones (p. ej., now(), sin(número), startswith("hola', 'ho')).

Identificadores

La característica principal del procesador de expresiones es la capacidad de realizar operaciones en las columnas de un registro. El identificador técnico (o nombre de campo) de una columna se puede utilizar en cualquier expresión para acceder al valor de dicho campo para el registro actual. Puede encontrar dicho identificador técnico en las opciones de campo, como Nombre del campo en cuestión.

Ejemplos:

  • columna_1 para acceder a un campo denominado columna_1 (que posiblemente tiene la etiqueta "Columna 1")

  • nombre_es para acceder a un campo denominado nombre_es (que posiblemente tiene la etiqueta "Nombre (ES)")

Importante

En algunos casos, el nombre del campo puede ser ambiguo; por ejemplo, si es un número, si empieza con un número o si es una palabra clave reservada como "pi" (la constante matemática PI) o "e" (la constante matemática de número de Euler).

Para forzar que el procesador de expresiones evalúe un identificador como nombre de campo, es posible añadir a cualquier identificador el signo del dólar ($) como prefijo. El signo del dólar se puede utilizar para cualquier nombre de ampo, pero solo es obligatorio en el caso de nombres de campo ambiguos.

Ejemplos:

  • $column_1 para acceder a un campo denominado columna_1 (que posiblemente tiene la etiqueta "Columna 1")

  • $name_en para acceder a un campo denominado nombre_es (que posiblemente tiene la etiqueta ''Nombre (ES)'')

  • $20_to_25_yo para acceder a un campo denominado 20_a_25_años (que posiblemente tiene la etiqueta ''20 a 25 años'')

  • $33 para acceder a un campo denominado 33

  • $pi para acceder a un campo denominado pi

En todos los ejemplos siguientes, cualquier número o literal de texto puede ser sustituido por un nombre de campo con valores del mismo tipo. El procesador de expresiones extraerá el valor de la columna especificada y llevará a cabo la operación correspondiente con dicho valor.

Es posible utilizar a la vez varios campos (o incluso el mismo campo varias veces) en una expresión.

Literales

En cualquier expresión se pueden utilizar literales, como pueden ser números, literales de texto (entre comillas simples o dobles), valores booleanos y palabras clave.

Ejemplos:

  • 3
  • 2,5

  • \''Hola\'' u 'Hola'

  • 'Una frase más larga'

  • 'true' o 'false'

  • pi, PI o Pi

  • e o E

Operadores

Los operadores son símbolos que se comportan, por lo general, como funciones, pero que se utilizan con una sintaxis más natural.

El procesador de expresiones admite tres tipos de operadores en función del número de parámetros presentes:

  • Se pueden utilizar operadores unarios como prefijos o sufijos para alterar el valor de una expresión.

  • Los operadores binarios pueden ser operadores aritméticos para realizar un cálculo entre dos expresiones u operadores booleanos para comparar el resultado de dos expresiones.

  • El operador ternario permite convertir una expresión condicional en un resultado de dos posibles.

Nota

El orden de precedencia de los operadores es el siguiente: factorial, exponencial, signo, división euclídea, evaluación de función, multiplicación/división, suma/resta, concatenación, ''not'', comparación, ''and'', ''or'', operador ternario, operador ternario sin ''else''.

Operadores unarios

Operador

Descripción

Ejemplo

-

Prefijo que niega el valor siguiente

- 4, - [expresión]

not, ! (no)

Operador booleano que invierte la condición siguiente.

  • not('true') o !('true') es false

  • not(4 > 5) es true

  • !(5 <= 10) es false

! (factorial)

Sufijo que calcula el factorial de una expresión.

3! devuelve 1*2*3

Operadores binarios

Operador

Descripción

Ejemplo

+, -, *, /, %, //, ^

Operadores aritméticos: suma, resta, multiplicación, división, módulo, división euclídea, potencia

  • 2 + 3 devuelve 5

  • 5 - 8 devuelve -3

  • 9 * 3 devuelve 27

  • 15 / 6 devuelve 2,5

  • 15 % 6 devuelve 3

  • 15 // 6 devuelve 2

  • 2 ^ 3 devuelve 8

  • columna_1 + columna2

and, &&, or, || (devuelven un valor booleano)

Operadores booleanos: and, or

  • 'true' and 'true' es true

  • 'true' && 'false' es false

  • 'true' or 'false' es true

  • 'false' || 'false' es false

>, <, >=, <=, ==, !=

Los operadores de comparación mayor que, menor que, mayor o igual que, menor o igual que, igual que y distinto de devuelven un valor booleano.

  • 3 < 4 es true

  • 5 >= 10 es false

&

Operador de concatenación de cadenas

'Hola' & 'mundo' devuelve 'Hola mundo'

Operador ternario

La expresión [condición] ? [resultado si true] : [resultado si false] se denomina de operador ternario y permite devolver resultados distintos en función de una condición.

Nota

Una expresión ternaria puede leerse como ''if [condición] then [resultado si true] else [resultado si false]''.

Ejemplos:

  • 'true' ? 'hola' : 'adiós' devuelve 'hola'

  • 'false' ? 'hola' : 'adiós' devuelve 'adiós'

  • 4 > 3 ? '4 es mayor que' : '3 es mayor que' devuelve '4 es mayor que'

  • 10 <= 9 ? '9 es mayor que' : '10 es mayor que' devuelve '10 es mayor que'

La última parte del operador ternario es opcional, lo que significa que las expresiones siguientes son válidas:

  • 'true' ? 'hola' devuelve 'hola'

  • 'false' ? 'hola' devuelve un resultado vacío

Funciones

Las funciones se utilizan para llevar a cabo operaciones más avanzadas en una expresión. Pueden tomar cero o más parámetros y aplicar en estos transformaciones, como pueden ser:

  • tratamiento de texto,

  • funciones matemáticas,

  • tratamiento de indicación de fecha y hora

Tratamiento de texto

Funciones booleanas

Función

Descripción

Ejemplo

isalpha([texto])

True si el texto solo contiene letras.

 

isnumeric([texto])

True si el texto solo contiene números.

 

isalnum([texto])

True si el texto solo contiene letras o números.

 

isdecimal([texto])

True si el texto es un número decimal válido.

 

isdigit([texto])

True si el texto es un solo dígito.

 

islower([texto])

True si el texto está en minúsculas.

 

isupper([texto])

True si el texto está en mayúsculas.

 

empty([texto])

True si el texto está vacío.

 

contains([texto],[texto]), startswith([texto],[texto]), endswith([texto],[texto])

True si el texto (1.er argumento) contiene, empieza o acaba con el texto (2.º argumento).

  • contains(\''hola\'', \''l\'') devuelve True

  • startswith(\''hola', 'ho') devuelve True

  • endswith(\''hola', 'ho') devuelve False

Funciones de procesamiento

Función

Descripción

Ejemplo

length([texto])

Devuelve la longitud del texto.

length('hola') devuelve 5

lower([texto]), upper([texto])

Convierte el texto a minúsculas o mayúsculas.

 

capitalize([texto]), capitalize_all([texto])

Convierte a mayúscula la primera letra del texto y la primera letra de cada palabra.

 
  • ljust([texto],[numérico],[texto])

  • rjust([texto],[numérico],[texto])

  • center([texto],[numérico],[texto])

Justifica a la izquierda (ljust), a la derecha (rjust) o centra un texto (1.er argumento) con otro texto (3.er argumento) hasta que se llega al carácter que indica [numérico].

  • ljust(\''4400\'', 5, \''0\'') devuelve \''44000\''

  • rjust(\''4400\'', 5, \''0\'') devuelve \''04400\''

  • center(\''4400\'', 6,\''0\'') devuelve \''044000\''

normalize([texto])

Convierte un texto en su representación ASCII.

normalize(\''你好\'') devuelve \''ni hao\''

substring([texto],[numérico],[numérico])

Extrae una subcadena de texto empezando en el índice indicado por el 2.º argumento de la longitud indicada por el 3.er argumento (opcional).

substring('hola', 1, 3) devuelve \''ell\''

Funciones matemáticas

Función

Descripción

Ejemplo

abs([numérico])

Valor absoluto

abs(-4) devuelve 4

sqrt([numérico])

Raíz cuadrada

 

floor([numérico]), ceil([numérico])

Funciones suelo y techo

  • floor(4,6) devuelve 4

  • ceil(3,3) devuelve 4

max([numérico],[numérico]), min([numérico],[numérico])

Funciones de mínimo y máximo

 

round([numérico])

Devuelve el entero más cercano.

  • round(4,6) devuelve 5

  • round(3,3) devuelve 4

random([numérico])

Generador de número aleatorio (entre 0 y [numérico])

random(10) devuelve, por ejemplo, 7,27846540481

pow([numérico], [numérico])

Función de potencia

pow(2, 3) devuelve 8

exp([numérico]), log([numérico]), log10([numérico])

Funciones exponencial, logarítmica y logarítmica de base 10

exp(1) devuelve E

radians([numérico])

Convierte un ángulo de grados a radianes.

radians(180) devuelve PI

degrees([numérico])

Convierte un ángulo de radianes a grados.

grados(PI) devuelve 180

cos([numérico]), cosh([numérico]), sin([numérico]), sinh([numérico]), tan([numérico]), tanh([numérico])

Coseno, coseno hiperbólico, seno, seno hiperbólico, tangente, tangente hiperbólica (en radianes)

sin(PI) devuelve 0

acos([numérico]), acosh([numérico]), asin([numérico]), asinh([numérico]), atan([numérico]), atanh([numérico])

Coseno inverso, coseno hiperbólico inverso, seno inverso, seno hiperbólico inverso, tangente inversa, tangente hiperbólica inversa (en radianes)

acos(0) devuelve PI/2

Tratamiento de indicación de fecha y hora

Función

Descripción

Ejemplo

year([indicación fecha y hora]), quarter([indicación fecha y hora]), month([indicación fecha y hora]), day([indicación fecha y hora]), dayofweek([indicación fecha y hora]), hour([indicación fecha y hora]), minute([indicación fecha y hora]), second([indicación fecha y hora])

Extrae el año, el trimestre, el mes, el día, el día de la semana, las horas, los minutos y los segundos de una indicación de fecha y hora.

  • year(\''2014-06-07\'') devuelve 2014

  • hour(\''2014-06-07 17:00\'') devuelve 17

  • hour(\''2014-06-07 17:00\'', \''Europa/París\'') devuelve 19

add_years([indicación fecha y hora],[numérico]), add_months([indicación fecha y hora],[numérico]), add_days([indicación fecha y hora],[numérico]), add_hours([indicación fecha y hora],[numérico]), add_minutes([indicación fecha y hora],[numérico]), add_seconds([indicación fecha y hora],[numérico])

Añade años, meses, días, horas, minutos y segundos a una indicación de fecha y hora.

add_months(\''2014-11-14\'', \''3\'') devuelve 2015-02-14

fromtimestamp([numérico])

Convierte una marca horaria en una indicación de fecha y hora.

 

quartertodaterange([numérico])

Convierte un trimestre (p. ej., ''2014T2'', ''2019t1'') en un rango de fechas.

quartertodaterange(\''2014T2\'') devuelve \''2014-04-01 / 2014-06-30\''

datediff([indicación fecha y hora], [indicación fecha y hora], [unidad])

Cuenta el número de unidades entre las dos indicaciones de fecha y hora. [unidad] puede ser ''year'', ''month'', ''day'', ''hour'', ''minute'', ''second''.

  • datediff(\''2014-02-28\'', \''2015-02-28\'', \''month\'') devuelve 12

  • datediff(\''2014-02-28T20:00:00Z\'', \''2014-02-28T21:00:00Z\'', \''minute\'') devuelve 60