Manejo de registros con valores perdidos del sistema

¿Qué son los valores perdidos del sistema?

Los valores perdidos del sistema representan valores de datos que son desconocidos o no se aplican. En las bases de datos, a menudo, se hace referencia a estos valores como valores NULL.

Un valores de sistema ausente es distinto de un valore en blanco. Un valor en blanco suele definirse en el nodo Tipo como un valor concreto, o como un rango de valores, que puede considerarse como ausente-definido-por-el-usuario. Los valores en blanco se manejan de forma distinta en el contexto del modelado.

Construcción de valores de sistema ausentes

Los valores de sistema ausentes pueden estar presentes en los datos leídos de un origen de datos (por ejemplo, las tablas de base de datos podrían contener valores NULL).

Los valores perdidos del sistema se pueden construir utilizando el valor undef en expresiones. Por ejemplo, la siguiente expresión CLEM devuelve la edad (Age) si es menor o igual que 30, o un valor ausente si es mayor que 30:

if Age > 30 then undef else Age endif

Los valores ausentes también pueden crearse cuando se realiza una unión externa ("outer join"), cuando un número se divide por cero, cuando se calcula la raíz cuadrada de un número negativo y en otras situaciones.

Visualización de los valores de sistema ausentes

Los valores de sistema ausentes se muestran en tablas y otras salidas como $null$.

Comprobación de los valores de sistema ausentes

La función especial @NULL se usa para devolver true si el valor del argumento es un valor de sistema ausente, por ejemplo:

if @NULL(MyFieldName) then 'It is null' else 'It is not
null' endif

Valores perdidos del sistema pasados a funciones

Los valores de sistema ausentes pasados a funciones suelen propagar valores ausentes a la salida. Por ejemplo, si el valor del campo f1 es un valor de sistema ausente en una determinada fila, la expresión log(f1) también evaluará a un valor de sistema ausente para dicha fila. Una excepción es la función @NULL.

Valores perdidos del sistema en expresiones que implican operadores aritméticos

La aplicación de un operador aritmético a valores que incluyen un valor de sistema ausente dan lugar a un valor de sistema ausente. Por ejemplo, si el valor del campo f1 es un valor de sistema ausente en una determinada fila, la expresión f1 + 10 también evaluará a un valor de sistema ausente para dicha fila.

Valores de sistema ausentes en expresiones que implican operadores lógicos

Cuando se trabaja con valores de sistema ausentes que implican operadores lógicos, se aplican las reglas de la lógica de tres valores (true, false y missing, verdadero, falso y ausente respectivamente) y pueden describirse en tablas de verdad. Las tablas de verdad de los operadores lógicos comunes not and y or se muestran en las tablas siguientes.

Tabla 1. Tabla de verdad para NOT
Operando Operando NOT
true false
false true
missing missing
Tabla 2. Tabla de verdad para AND
Operando1 Operando2 Operando1 AND Operando2
true true true
true false false
true missing missing
false true false
false false false
false missing false
missing true missing
missing false false
missing missing missing
Tabla 3. Tabla de verdad de OR
Operando1 Operando2 Operando1 OR Operando2
true true true
true false true
true missing true
false true true
false false false
false missing missing
missing true true
missing false missing
missing missing missing

Valores de sistema ausentes en expresiones que implican operadores de comparación

Cuando se compara un valor de sistema perdido y un valor perdido que no es del sistema, el resultado es un valor perdido del sistema y no uno de verdadero o falso. Los valores de sistema ausentes pueden compararse entre sí; dos valores de sistema ausentes se consideran iguales.

Valores perdidos del sistema en expresiones if/then/else/endif

Cuando se usa una expresión condicional que devuelve un valor de sistema ausente, la expresión condicional devuelve el valor de la cláusula else.

Valores de sistema ausentes en el nodo Seleccionar

Cuando, en un determinado registro, la expresión de selección evalúa a un valor ausente, el registro no se genera en la salida del nodo Seleccionar (esta acción se aplica a los modos Incluir y Descartar).

Valores perdidos del sistema en el nodo Fundir

Cuando se combina mediante una clave, los registros que tengan valores de sistema ausentes en un campo clave no se combinan.

Valores perdidos del sistema en una agregación

Cuando se agregan datos de columnas, los valores ausentes no se incluyen en el cálculo. Por ejemplo, en una columna con tres valores { 1, 2 y undef }, la suma de los valores de la columna se calcula como 3; el valor medio sería 1,5.