En esta sección: |
Se presentan valores no disponibles en ocurrencias de segmentos cuando a pesar de que las ocurrencias existen, les faltan valores a algunos de los campos.
Cuando en uno de los casos los campos no contienen valores, se asigna 0 a los campos numéricos y se dejan en blanco los campos alfanuméricos. Estos valores predeterminados aparecen en informes y se usan en todos los cálculos realizados por los comandos de visualización SUM y COUNT, los comandos DEFINE y los operadores de prefijo, como MAX. y AVE.
Para evitar el uso de estos valores predeterminados en cálculos (que luego podrían arrojar resultados incorrectos), puede añadir el atributo MISSING a la declaración de campo en el archivo máster tanto para un campo virtual como para un campo real. Cuando el atributo MISSING está en la posición ON, los valores no disponibles se marcan con un código interno especial para distinguirlos de los espacios en blanco y los ceros, en tanto que, en los cálculos, se ignoran los valores no disponibles. En los informes, por defecto, el código interno se representa con el valor SET NODATA, un punto (.). Consulte Cómo ajustar la cadena de caracteres NODATA.
Por ejemplo, pueden presentarse datos no disponibles en un campo en una ocurrencia de segmento cuando se desconocen los valores de datos, como en el caso que sigue. Imagine que los empleados registrados en el origen de datos EMPLOYEE esperan un aumento salarial en una fecha determinada, pero aún no se ha determinado en cuánto se les aumentará. La empresa introduce la fecha correspondiente a cada empleado en el origen de datos sin los montos salariales, pues los salarios serán introducidos más tarde. Cada fecha es una ocurrencia individual en el segmento de historial salarial, pero falta el nuevo salario en cada ocurrencia de fecha. Imagine además que la solicitud de informe pide un promedio del campo SALARY (SUM AVE.SALARY). La exactitud de los promedios resultantes dependerá de cómo se manejen los valores no disponibles en el campo SALARY, si como ceros (MISSING=OFF) o como códigos internos (MISSING=ON).
Nota: Cuando ninguno de los valores de campos utilizados en el cálculo de un valor de resumen numérico, como el subtotal, está disponible, se asigna el valor de los datos no disponibles al valor de resumen, no el valor cero (0). Esto incluye los valores de resumen producidos por los operadores ST. y CT. utilizado en un subpie.
Imagine que aparece el campo CURR_SAL en 12 ocurrencias de segmento. En tres de dichas ocurrencias, el campo no tiene valor alguno. No obstante, el comando de visualización
COUNT CURR_SAL
cuenta 12 ocurrencias del campo CURR_SAL. Esto es así porque el atributo MISSING está en OFF como posición predeterminada, por lo que se incluyen los valores no disponibles en la cuenta. Si desea excluir los datos no disponibles de la cuenta, puede ajustar MISSING en ON.
Imagine que tiene los siguientes registros de datos para un campo:
. . 1 3
Los valores numéricos de los dos primeros registros no están disponibles (indicados con puntos). Los dos últimos registros tienen los valores 1 y 3. Si calcula el promedio de esos campos sin el atributo MISSING (MISSING OFF), el valor 0 se incluirá para los dos registros que no tengan valores disponibles. Entonces, el promedio de los registros viene a ser (0+0+1+3)/4 ó 1. Si usa el atributo MISSING ON, se ignoran los dos campos no disponibles y se calcula el promedio como (1+3)/2 ó 2.
En algunas aplicaciones, los valores predeterminados (espacios en blanco y ceros) pueden representar datos válidos en vez de falta de información. Sin embargo, si este no fuera el caso, puede incluir el atributo MISSING después del formato de campo en la declaración de archivo máster para el campo con los valores no disponibles. El atributo MISSING se puede usar con un campo real en el origen de datos, o con un campo virtual que defina en el archivo máster.
Por ejemplo, la siguiente declaración de campo especifica el atributo MISSING para el campo RETURNS:
FIELDNAME=RETURNS, ALIAS=RTN, FORMAT=I4, MISSING=ON,$
La siguiente declaración especifica el atributo MISSING para un campo virtual llamado PROFIT:
DEFINE PROFIT/D7 MISSING ON NEEDS SOME DATA = RETAIL_COST - DEALER_COST;$
Para garantizar el manejo adecuado de los valores no disponibles en los campos virtuales, puede ajustar el atributo MISSING en ON para el campo virtual en el comando DEFINE y especificar si desea aplicar el cálculo si faltan algunos o todos los valores. Para obtener información relacionada sobre las frases SOME y ALL, consulte Cómo Especificar valores no disponibles en un comando DEFINE o COMPUTE.
Cuando el atributo MISSING está en la posición ON en una declaración de campo, el campo sin datos aparece con un código internacional especial, no con espacios en blanco o con ceros. Durante la generación del informe, los comandos SUM y COUNT y todos los operadores de prefijo (por ejemplo, AVE., MAX., MIN.) excluyen los datos no disponibles de sus cálculos. Para más información acerca del atributo MISSING y declaraciones de campo, consulte el manual Cómo describir datos con el lenguaje WebFOCUS
Nota:
Este ejemplo muestra las diferencias entre un campo en MISSING que está ON y uno en que no lo está. En este, un campo virtual, X_RETURNS, sin el atributo MISSING, se establece para que sea igual a un campo real, RETURNS, con el atributo MISSING declarado en el archivo máster. Cuando falta un valor en el campo con el atributo MISSING (RETURNS), el valor correspondiente de X_RETURNS es 0, ya que un campo de origen de datos al que le falta un valor se evalúa como 0 (o en blanco) para fines de computación (El atributo MISSING en un comando DEFINE o COMPUTE ).
La siguiente solicitud define el campo virtual:
DEFINE FILE SALES X_RETURNS/I4 = RETURNS; END
Ahora emita la siguiente solicitud:
TABLE FILE SALES SUM CNT.X_RETURNS CNT.RETURNS AVE.X_RETURNS AVE.RETURNS END
Recuerde que el campo X_RETURNS tiene el mismo valor que RETURNS, excepto cuando a RETURNS le falta un valor, en cuyo caso, el valor de X_RETURNS es cero.
La salida es:
La cuenta del campo RETURNS es menor que la cuenta para X_RETURNS y el promedio para RETURNS es mayor que el promedio para X_RETURNS porque los valores no disponibles en RETURNS no forman parte de los cálculos.
Para una explicación en que se ajuste el atributo MISSING para el campo virtual, consulte Cómo manejar valores no disponibles para un campo virtual con SOME y ALL.
Cómo: |
Puede activar el atributo MISSING en un comando DEFINE o COMPUTE para habilitar un campo temporal con valores no disponibles que se interprete y represente correctamente en los informes.
Una expresión que se use para derivar los valores del campo temporal puede contener campos reales con valores no disponibles. Sin embargo, al usarse para derivar el valor de un campo temporal, un campo de origen de datos al que le falta un valor se evalúa como 0, o espacio en blanco, para fines de computación, incluso cuando el atributo MISSING está activado para ese campo, en el archivo máster.
Para garantizar el manejo adecuado de los valores no disponibles en los campos temporales, puede ajustar el atributo MISSING en ON para el campo virtual en el comando DEFINE o COMPUTE y especificar si desea aplicar el cálculo si faltan algunos o todos los valores. Consulte Cómo Especificar valores no disponibles en un comando DEFINE o COMPUTE.
field[/format] MISSING {ON|OFF} [NEEDS] {SOME|ALL} [DATA] = expression;
donde:
Es el nombre del campo virtual creado con el comando DEFINE.
Es el formato del campo virtual. El valor predeterminado es D12.2.
ON permite interpretar el valor del campo temporal como valor no disponible (es decir, uno que el código interno especial distingue de un cero o un espacio en blanco introducido de manera intencionada) y representado por el carácter NODATA en los informes.
OFF se comporta con los valores no disponibles en campos numéricos como si fueran ceros y con los valores no disponibles en campos alfanuméricos como si fueran espacios en blanco. Este es el valor predeterminado.
Es opcional. Ayuda a aclarar el significado del comando.
Indica que, si al menos uno de los campos de la expresión tiene un valor, el campo temporal también lo tendrá (los valores no disponibles del campo son evaluados como un 0 o un espacio en el cálculo). Si todos los campos en la expresión son valores no disponibles, al campo temporal le falta su valor correspondiente. SOME es el valor predeterminado.
Indica que si todos los campos en la expresión tienen un valor, el campo temporal tiene un valor. Si al menos un campo en la expresión tiene un valor no disponible, el campo temporal también tiene un valor no disponible.
Es opcional. Ayuda a aclarar el significado del comando.
Es una expresión válida desde la cual deriva el valor del campo temporal.
La siguiente solicitud muestra el uso de dos campos, RETURNS y DAMAGED, para definir el campo NO_SALE. Tanto el campo RETURNS como el campo DAMAGED tienen el atributo MISSING en ON en el archivo máster SALES, pero si falta un valor en alguno de estos campos, dicho campo se evalúa como cero.
DEFINE FILE SALES NO_SALE/I4 = RETURNS + DAMAGED; END TABLE FILE SALES PRINT RETURNS AND DAMAGED AND NO_SALE BY CITY BY DATE BY PROD_CODE END
La salida es:
CITY DATE PROD_CODE RETURNS DAMAGED NO_SALE ---- ---- --------- ------- ------- ------- NEW YORK 10/17 B10 2 3 5 B17 2 1 3 B20 0 1 1 C13 . 6 6 C14 4 . 4 C17 0 0 0 D12 3 2 5 E1 4 7 11 E2 . . 0 E3 4 2 6 NEWARK 10/18 B10 1 1 2 10/19 B12 1 0 1 STAMFORD 12/12 B10 10 6 16 B12 3 3 6 B17 2 1 3 C13 3 0 3 C7 5 4 9 D12 0 0 0 E2 9 4 13 E3 8 9 17 UNIONDALE 10/18 B20 1 1 2 C7 0 0 0
Fíjese que los productos C13, C14 y E2 en la sección New York muestran valores no disponibles para RETURNS o para DAMAGED, porque el atributo MISSING ON ha sido ajustado en el archivo máster. Sin embargo, el cálculo que determina el valor de NO_SALE interpreta estos valores no disponibles como ceros, porque MISSING ON no ha sido ajustado para el campo virtual.
La siguiente solicitud muestra cómo usar el comando DEFINE con el atributo MISSING para especificar que si faltan algunos o todos los valores de campo que intervienen en un comando DEFINE, al campo virtual debe también faltarle su valor.
El campo SOMEDATA contiene un valor si el campo RETURNS o el campo DAMAGED contienen un valor. De lo contrario, a SOMEDATA le falta su valor. El campo ALLDATA contiene un valor sólo si tanto el campo RETURNS como el campo DAMAGED contienen valores. De lo contrario, a ALLDATA le falta su valor.
DEFINE FILE SALES SOMEDATA/I5 MISSING ON NEEDS SOME=RETURNS + DAMAGED; ALLDATA/I5 MISSING ON NEEDS ALL=RETURNS + DAMAGED; END
TABLE FILE SALES PRINT RETURNS AND DAMAGED SOMEDATA ALLDATA BY CITY BY DATE BY PROD_CODE END
La salida es:
Cómo: |
Puede especificar criterios WHERE para identificar ocurrencias de segmentos con valores de campo no disponibles.
No puede utilizar estas pruebas para identificar casos no disponibles. Sin embargo, puede establecer el comando ALL en PASS para que busque todos los casos no disponibles. Consulte Cómo manejar un caso de segmento no disponible.
Para evaluar un segmento con valores de campo no disponibles, la sintaxis es:
WHERE field {IS|EQ} MISSING
Para confirmar la presencia de valores de campo, la sintaxis es:
WHERE field {NE|IS-NOT} MISSING
Un criterio WHEN que pruebe un campo numérico para cero o un campo alfanumérico para espacios en blanco también recupera ocurrencias para las que el campo tiene un valor no disponible.
La siguiente solicitud muestra el uso de MISSING para mostrar artículos comestibles (por código) para los cuales falta el número de paquetes devueltos por los clientes.
TABLE FILE SALES PRINT RETURNS BY CITY BY DATE BY PROD_CODE WHERE RETURNS IS MISSING END
La salida es:
CITY DATE PROD_CODE RETURNS ---- ---- --------- ------- NEW YORK 10/17 C13 . E2 .
La siguiente solicitud explica el uso de MISSING para mostrar sólo aquellos artículos comestibles para los cuales no falta el número de paquetes devueltos por los clientes.
TABLE FILE SALES PRINT RETURNS BY CITY BY DATE BY PROD_CODE WHERE RETURNS IS-NOT MISSING END
La salida es:
La siguiente solicitud muestra artículos comestibles que nunca fueron devueltos o para los que nunca se registró el número de paquetes devueltos.
TABLE FILE SALES PRINT RETURNS BY CITY BY DATE BY PROD_CODE WHERE RETURNS EQ 0 END
La salida es:
Para mostrar sólo aquellos artículos que no han sido devueltos por los clientes, necesita los dos criterios WHERE. El primero para restringir el número de devoluciones a cero; el otro, para excluir valores no disponibles, tal como sucede en la solicitud que sigue:
TABLE FILE SALES PRINT RETURNS BY CITY BY DATE BY PROD_CODE WHERE RETURNS EQ 0 WHERE RETURNS IS-NOT MISSING END
La salida es:
Cómo:
Referencia: |
La capacidad de distinguir entre datos no disponibles y valores predeterminados (espacios en blanco y ceros) en un campo puede transferirse a los archivos de salida. Si la información recuperada y procesada mostrara la cadena NODATA en un informe, la cadena NODATA puede almacenarse en el archivo de salida, por defecto. También puede utilizar el comando SET HOLDMISS para guardar los valores no disponibles en vez del carácter NODATA en el archivo de salida. Para obtener información relacionada, consulte Cómo guardar y reutilizar su salida de informes.
ON TABLE {HOLD|SAVE|SAVB} MISSING {ON|OFF}
donde:
Crea un archivo de extracción para utilizarlo en informes futuros. ON es la posición predeterminada para MISSING.
Crea un archivo de extracción de texto para que lo utilicen otros programas. OFF es la opción predeterminada para MISSING.
Crea un archivo de extracción binario para que lo utilicen otros programas. OFF es la opción predeterminada para MISSING.
Se pueden crear archivos HOLD con las opciones MISSING y FORMAT ALPHA, especificadas en cualquier orden. Por ejemplo:
ON TABLE HOLD FORMAT ALPHA MISSING OFF ON TABLE HOLD MISSING OFF FORMAT ALPHA
La siguiente solicitud especifica MISSING ON en la frase HOLD:
TABLE FILE SALES SUM RETURNS AND HOLD FORMAT ALPHA MISSING ON BY CITY BY DATE BY PROD_CODE END
El atributo MISSING=ON del campo RETURNS se propaga al archivo máster HOLD. Además, los símbolos de datos no disponibles se propagan al archivo HOLD para los valores no disponibles:
FILENAME=HOLD , SUFFIX=FIX , $ SEGMENT=HOLD, SEGTYPE=S3, $ FIELDNAME=CITY, ALIAS=E01, USAGE=A15, ACTUAL=A15, $ FIELDNAME=DATE, ALIAS=E02, USAGE=A4MD, ACTUAL=A04, $ FIELDNAME=PROD_CODE, ALIAS=E03, USAGE=A3, ACTUAL=A03, $ FIELDNAME=RETURNS, ALIAS=E04, USAGE=I3, ACTUAL=A03, MISSING=ON, $
Con MISSING OFF en la frase HOLD, el atributo MISSING=ON no se propaga al archivo máster HOLD y los símbolos de datos no disponibles quedan reemplazados por los valores predeterminados.
SET HOLDMISS={ON|OFF} ON TABLE SET HOLDMISS {ON|OFF}
donde:
Le permite guardar datos no disponibles en un archivo HOLD. Cuando TABLE genera un valor predeterminado para los datos no encontrados, genera valores no disponibles.
No le permite guardar datos no disponibles en un archivo HOLD. OFF es el valor predeterminado.
SET HOLDMISS=ON TABLE FILE MOVIES SUM WHOLESALEPR BY CATEGORY ACROSS RATING ON TABLE HOLD AS HLDM END TABLE FILE HLDM PRINT * END
La salida es:
CATEGORY WHOLESALEPR WHOLESALEPR WHOLESALEPR WHOLESALEPR WHOLESALEPR -------- ----------- ----------- ----------- ----------- ----------- ACTION . . 20.98 . 34.48 CHILDREN 54.49 51.38 . . . CLASSIC 40.99 160.80 . . . COMEDY . . 46.70 30.00 13.75 DRAMA . . . . 10.00 FOREIGN 13.25 . 62.00 . 70.99 MUSICALS 15.00 . 13.99 9.99 13.99 MYSTERY . 9.00 18.00 9.00 80.97 SCI/FI . . . 35.99 43.53 TRAIN/EX . 60.98 . . .
Cómo: Referencia: |
Al reformatearse un campo de una solicitud (por ejemplo, campo/formato SUM), se crea un campo COMPUTE interno para contener el valor del campo reformateado y mostrarlo en la salida del informe. Si el campo original contiene un valor no disponible, ese valor no disponible puede propagarse al campo interno activando el parámetro COMPMISS. Si el valor no disponible no se propaga al campo interno, se muestra un cero (si es numérico) o un espacio en blanco (si es alfanumérico). Si el valor no disponible se propaga al campo interno, mostrará el símbolo de datos no disponibles en la salida del informe.
SET COMPMISS = {ON|OFF}
donde:
Propaga un valor no disponible a un campo reformateado. ON es el valor predeterminado.
Muestra un espacio en blanco o un cero para un campo reformateado.
Nota: El parámetro COMPMISS no se puede usar en un comando ON TABLE.
El siguiente procedimiento imprime el campo RETURNS a partir del origen de datos SALES para la tienda 14Z. Con COMPMISS OFF, los valores no disponibles aparecerán con un cero en la columna del valor de campo reformateado. (Nota: Antes de probar con este ejemplo, asegúrese de que el procedimiento SALEMISS, que añade los valores no disponibles al origen de datos SALES, se ha ejecutado.)
SET COMPMISS = OFF TABLE FILE SALES PRINT RETURNS RETURNS/D12.2 AS 'REFORMATTED,RETURNS' BY STORE_CODE WHERE STORE_CODE EQ '14Z' END
La salida es:
REFORMATTED STORE_CODE RETURNS RETURNS ---------- ------- ----------- 14Z 2 2.00 2 2.00 0 .00 . .00 4 4.00 0 .00 3 3.00 4 4.00 . .00 4 4.00
Con COMPMISS ON, la columna en la versión reformateada de RETURNS mostrará el símbolo de datos no disponibles cuando no se encuentre un valor:
SET COMPMISS = ON TABLE FILE SALES PRINT RETURNS RETURNS/D12.2 AS 'REFORMATTED,RETURNS' BY STORE_CODE WHERE STORE_CODE EQ '14Z' END
La salida es:
REFORMATTED STORE_CODE RETURNS RETURNS ---------- ------- ----------- 14Z 2 2.00 2 2.00 0 .00 . . 4 4.00 0 .00 3 3.00 4 4.00 . . 4 4.00
WebFOCUS |