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.
| Operando | Operando NOT |
|---|---|
| true | false |
| false | true |
| missing | missing |
| 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 |
| 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.