Dans cette section : |
Des valeurs manquantes se présentent lorsque des instances de segments existent mais que plusieurs champs manquent de valeurs.
Lorsque des champs dans des instances manquent de valeurs, les champs numériques sont attribués la valeur de zéro, et les champs alphanumériques ne sont attribués aucune valeur. Ces valeurs par défaut s'affichent dans les rapports et sont utilisées dans tous les calculs effectués par les commandes d'affichage SUM et COUNT, les commandes DEFINE et les opérateurs de préfixe, tels que MAX. et AVE.
Pour limiter l'utilisation de ces valeurs par défaut dans les calculs (qui peuvent générer des résultats faux), vous pouvez ajouter l'attribut MISSING à la déclaration de champ dans le fichier Master, pour un champ réel ou virtuel. Où l'attribut MISSING égale ON, les valeurs manquantes sont marquées d'un code interne spécial pour les distinguer des blancs et des zéros, et les valeurs manquantes ne sont pas prises en compte dans les calculs. Dans les rapports, le code interne est représenté par la valeur SET NODATA, qui est un point (.), par défaut. Consultez Définition de la chaîne de caractères NODATA.
Par exemple, des données manquantes d'un champ dans une instance de segments peuvent se présenter lorsque les valeurs des données sont inconnues, comme dans le scénario suivant. Supposez que les salaires des employés enregistrés dans la source de données EMPLOYEE doivent être augementés avant une telle date, mais que la somme de l'augementation n'a pas encore été déterminée. La société saisit la date pour chaque employé dans la source de données sans les sommes des salaires ; les salaires seront saisis plus tard. Chaque date est une instance individuelle dans le segment de l'historique des salaires, mais il manque le nouveau salaire pour chaque instance de date. Supposez encore qu'une requête de rapport fait la moyenne du champ SALARY (SUM AVE.SALARY). La justesse de la moyenne résultant varie selon que les valeurs manquantes du champ SALARY soient traitées comme des zéros (MISSING=OFF), ou comme des codes internes (MISSING=ON).
Remarque : lorsque toutes les valeurs de champs utilisées dans le calcul d'une valeur récapitulative numérique, comme un sous-total sont manquantes, la valeur de la donnée manquante est attribuée à la valeur récapitulative, pas la valeur zéro (0). Ceci comprend des valeurs récapitulatives produites par les opérateurs ST. et CT. utilisés dans les pieds de page secondaires.
Supposons que le champ CURR_SAL s'affiche dans douze instances de segments. Dans trois instances, le champ n'a aucune valeur. Pourtant, la commande d'affichage
COUNT CURR_SAL
compte douze instances du champ CURR_SAL. Ceci parce que l'attribut MISSING est mis à OFF par défaut, et les valeurs manquantes sont donc comprises dans le calcul. Si vous souhaiter ne pas inclure les données manquantes dans le calcul, vous pouvez définir la commande MISSING ON.
Imaginez que vous avez les enregistrements de données suivants pour un champ :
. . 1 3
Il manque les valeurs numériques dans les deux premiers enregistrements (indiquées par des points). Les deux derniers enregistrements ont les valeurs 1 et 3. Si vous faites la moyenne de ces champs sans l'attribut MISSING (MISSING OFF), les deux enregistrements qui manquent de valeurs prennent la valeur de zéro. Ainsi, la moyenne des enregistrements est (0+0+1+3)/4, ou 1. Si vous employez l'attribut MISSING ON, les deux valeurs manquantes sont ignorées, et le calcul de la moyenne est (1+3)/2, ou 2.
Dans certaines applications, les valeurs par défaut (blancs et zéros) peuvent représenter des données valables au lieu de l'absence d'information. Cependant, où ceci n'est pas le cas, vous pouvez inclure l'attribut MISSING après le format de champ dans la déclaration du fichier maître pour le champ avec les valeurs manquantes. L'attribut MISSING peut être utilisé avec un champ réel de la source de données, ou avec un champ virtuel que vous définissez dans le fichier Master.
Par exemple, la déclaration de champ suivante spécifie l'attribut MISSING pour le champ RETURNS :
FIELDNAME=RETURNS, ALIAS=RTN, FORMAT=I4, MISSING=ON,$
La prochaine déclaration spécifie l'attribut MISSING pour un champ virtuel appelé PROFIT :
DEFINE PROFIT/D7 MISSING ON NEEDS SOME DATA = RETAIL_COST - DEALER_COST;$
Pour vous assurer que les valeurs manquantes sont gérées correctement pour les champs virtuels, vous pouvez mettre l'attribut MISSING à ON pour le champ virtuel dans la commande DEFINE, et appliquer le calcul s'il manque plusieurs ou toutes les valeurs. Pour plus d'informations sur les phrases SOME et ALL, consultez Spécifier des valeurs manquantes dans les commandes DEFINE et COMPUTE .
Où l'attribut MISSING est mis à ON dans une déclaration de champ, le champ sans données est marqué d'un code interne spécial, et non pas de blancs et zéros. Au cours de la génération de rapports, les commandes SUM et COUNT et tous les opérateurs préfixes (tels que AVE., MAX., MIN.) n'incluent pas les données manquantes dans les calculs. Pour obtenir des informations relatives à l'attribut MISSING et aux déclarations de champ, reportez-vous au chapitre Description de données en langage WebFOCUS .
Remarque :
Cet exemple illustre la différence entre un champ avec l'attribut MISSING ON et un champ sans cet attribut. L'exemple comprend le champ virtuel X_RETURNS, sans l'attribut MISSING, qui est mis à égaler un champ réel, RETURNS, où l'attribut MISSING est déclaré dans le fichier Master. Quand le champ avec l'attribut MISSING (RETURNS) manque une valeur, la valeur correspondante de X_RETURNS est zéro, car le champ de la source de données qui manque une valeur est évalué comme étant zéro (ou blanc) pour le calcul (consultez Attribut MISSING dans les commandes DEFINE et COMPUTE).
La requête suivante définit le champ virtuel :
DEFINE FILE SALES X_RETURNS/I4 = RETURNS; END
Lancez la requête de rapport suivante :
TABLE FILE SALES SUM CNT.X_RETURNS CNT.RETURNS AVE.X_RETURNS AVE.RETURNS END
Souvenez-vous que le champ X_RETURNS a la même valeur que RETURNS sauf que lorsque RETURNS manque une valeur, la valeur X_RETURNS est zéro.
La sortie est :
La calcul du champ RETURNS est inférieur à celui de la valeur X_RETURNS et la moyenne de RETURNS est supérieure à celle de X_RETURNS car les valeurs manquantes de RETURNS ne font pas partie du calcul.
Pour consulter un exemple dans lequel l'attribut MISSING est défini pour un champ virtuel, consultez Gestion de valeurs manquantes dans les champs virtuels avec SOME et ALL.
Comment : |
Vous pouvez mettre l'attribut MISSING à ON dans les commandes DEFINE et COMPUTE afin de permettre à un champ temporaire avec des valeurs manquantes d'être interprété et présenté correctement dans des rapports.
Une expression utilisée pour tirer les valeurs du champ temporaire peut comprendre des champs réels ayant des valeurs manquantes. Cependant, lorsqu'elle est utilisée pour tirer la valeur d'un champ temporaire, une source de données qui manque une valeur est évaluée comme zéro ou blanc pour les besoins du calcul, même si l'attribut MISSING est mis à ON pour le champ temporaire dans le fichier Master.
Pour vous assurer que les valeurs manquantes sont gérées correctement pour les champs temporaires, vous pouvez mettre l'attribut MISSING à ON pour le champ virtuel dans la commande DEFINE ou COMPUTE, et appliquer le calcul s'il manque plusieurs ou toutes les valeurs. Consultez Spécifier des valeurs manquantes dans les commandes DEFINE et COMPUTE .
field[/format] MISSING {ON|OFF} [NEEDS] {SOME|ALL} [DATA] = expression;
où :
Est le nom du champ virtuel créé par la commande DEFINE.
Est le format du champ virtuel. Le format par défaut est D12.2.
ON permet que la valeur du champ temporaire est intprétée comme étant manquante (c'est-à-dire, qu'elle est distinguée par le code interne spécial d'un zéro ou d'un blanc saisis exprès), et représentée par le caractère NODATA dans les rapports.
OFF traite les valeurs manquantes des champs numériques comme des zéros, et les valeurs manquantes des champs alphanumériques comme des blancs. C'est la valeur par défaut.
Est facultatif. Il éclaircit le sens de la commande.
indique que si au moins un champ dans l'expression a une valeur, le champ temporaire a une valeur (les valeurs manquantes du champ sont évaluées comme des zéros et des espaces blancs dans le calcul). Si tous les champs dans l'expression manquent de valeurs, le champ temporaire manque sa valeur. SOME est la valeur par défaut.
Indique que si tous les champs dans l'expression ont des valeurs, le champ temporaire a une valeur. Si au minimum un champ dans l'expression manque une valeur, le champ manque aussi une valeur.
Est facultatif. Il éclaircit le sens de la commande.
Est une expression valable depuis laquelle le champ temporaire tire sa valeur.
La requête suivante illustre l'utilisation de deux champs, RETURNS et DAMAGED, en définissant le champ NO_SALE. Dans les duex champs, RETURNS et DAMAGED, l'attribut MISSING égale ON dans le fichier Master SALES, mais lorsque un de ces champs manque une valeur, il est évalué comme zéro.
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 sortie est :
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
Vous noterez que les produits C13, C14 et E2 dans la section « New York » montrent tous des valeurs manquantes soit pour RETURNS soit pour DAMAGED, car l'attribut MISSING ON a été défini dans le fichier Master. Cependant, le calcul déterminant la valeur de NO_SALE interprète ces valeurs manquantes comme des zéros, car MISSING ON n'a pas été défini pour le champ virtuel.
La requête suivante illustre la façon d'utiliser la commande DEFINE avec l'attribut MISSING afin d'indiquer que s'il manque plusieurs ou toutes les valeurs de champ référencées dans une commande DEFINE, le champ virtuel doit aussi manquer sa valeur.
Le champ SOMEDATA comprend une valeur si les champs RETURNS ou DAMAGED comprennent une valeur. Sinon, SOMEDATA manque sa valeur. Le champ ALLDATA ne comprend une valeur que si les champs RETURNS et DAMAGED les deux comprennent des valeurs. Sinon, ALLDATA manque sa valeur.
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 sortie est :
Comment : |
En spécifiant des critères WHERE, vous pouvez identifier les instances de segments qui ont des valeurs de champ manquantes.
Vous ne pouvez pas utiliser ces critères pour identifier des instances manquantes. Cependant, vous pouvez définir le paramètre ALL à PASS pour rechercher des instances manquantes. Consultez Gestion d'une instance de segments manquante.
Pour faire une recherche pour un segement avec une valeur de champ manquante, voici la syntaxe :
WHERE field {IS|EQ} MISSING
Pour faire une recherche pour des valeurs de champ, voici la syntaxe :
WHERE field {NE|IS-NOT} MISSING
Un critère WHERE qui fait la recherche dans un champ pour un zéro ou dans un champ alphanumérique pour des blancs récupère également des instances dont le champ manque une valeur.
La requête suivante illustre l'utilisation de l'attribut MISSING pour afficher des produits d'épicerie (par code) pour lesquels il manque le nombre de paquets renvoyés par des clients.
TABLE FILE SALES PRINT RETURNS BY CITY BY DATE BY PROD_CODE WHERE RETURNS IS MISSING END
La sortie est :
CITY DATE PROD_CODE RETURNS ---- ---- --------- ------- NEW YORK 10/17 C13 . E2 .
La requête suivante illustre l'utilisation de l'attribut MISSING pour afficher uniquement les produits d'épicerie pour lesquels il ne manque pas le nombre de paquets renvoyés par des clients.
TABLE FILE SALES PRINT RETURNS BY CITY BY DATE BY PROD_CODE WHERE RETURNS IS-NOT MISSING END
La sortie est :
La requête suivante affiche les produits d'épicerie qui n'ont jamais été renvoyés ou pour lesquels le nombre de paquets renvoyés n'a jamais été enregistré :
TABLE FILE SALES PRINT RETURNS BY CITY BY DATE BY PROD_CODE WHERE RETURNS EQ 0 END
La sortie est :
Pour afficher uniquement les produits qui n'ont pas été renvoyés par des clients, vous avez besoin de deux critères WHERE. Le premier critère sert à limiter le nombre de renvois à zéro et le deuxième critère sert à exclure les valeurs manquantes, comme le montre la requête suivante.
TABLE FILE SALES PRINT RETURNS BY CITY BY DATE BY PROD_CODE WHERE RETURNS EQ 0 WHERE RETURNS IS-NOT MISSING END
La sortie est :
Comment :
Référence : |
La capacité de faire la distinction entre les données manquantes et les valeurs par défaut (zéros et espaces blancs) dans les champs peut s'étendre aux fichiers de sortie. Si la récupération et les informations traitées s'affichent dans la chaîne NODATA d'un rapport, par défaut, cette chaîne peut être stockée dans le fichier de sortie. Vous pouvez aussi utiliser la commande SET HOLDMISS pour stocker les valeurs manquantes, au lieu du caractère NODATA, dans un fichier de sortie. Pour plus d'informations, reporez-vous à Enregistrer et réutiliser la sortie de rapport.
ON TABLE {HOLD|SAVE|SAVB} MISSING {ON|OFF}
où :
Crée un fichier d'extrait à utiliser dans des rapports ultérieurs. L'attribut de MISSING par défaut est ON.
Crée un fichier d'extrait de texte à utiliser dans d'autres programmes. L'attribut de MISSING par défaut est OFF.
Crée un fichier d'extrait binaire à utiliser dans d'autres programmes. L'attribut de MISSING par défaut est OFF.
Les fichiers HOLD peuvent être créés avec les options MISSING et FORMAT ALPHA, spécifiés dans n'importe quel ordre. Par exemple :
ON TABLE HOLD FORMAT ALPHA MISSING OFF ON TABLE HOLD MISSING OFF FORMAT ALPHA
La requête suivante spécifie l'attribut MISSING ON dans la phrase HOLD :
TABLE FILE SALES SUM RETURNS AND HOLD FORMAT ALPHA MISSING ON BY CITY BY DATE BY PROD_CODE END
L'attribut MISSING=ON pour le champ RETURNS est propagé vers le fichiers maître HOLD. En outre, les symboles de données manquantes sont propagés vers le fichier HOLD pour les valeurs de champ manquantes :
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, $
Avec MISSING OFF dans la phrase HOLD, l'attribut MISSING=ON n'est pas propagé vers le fichier maître HOLD et les symboles des données manquantes sont remplacés avec les valeurs par défaut.
SET HOLDMISS={ON|OFF} ON TABLE SET HOLDMISS {ON|OFF}
où :
Vous permet de stocker des données manquantes dans un fichier HOLD. Lorsque TABLE génère une valeur par défaut pour des données introuvables, il génère des valeurs manquantes.
Ne vous permet pas de stocker des données manquantes dans un fichier HOLD. OFF est la valeur par défaut.
SET HOLDMISS=ON TABLE FILE MOVIES SUM WHOLESALEPR BY CATEGORY ACROSS RATING ON TABLE HOLD AS HLDM END TABLE FILE HLDM PRINT * END
La sortie est :
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 . . .
Comment : Référence : |
Lorsqu'un champ est reformaté dans une requête (par exemple, SUM champ/format), un champ COMPUTE interne est créé pour contenir la valeur du champ reformaté et affiche celle-ci dans la sortie du rapport. S'il manque un valeur dans le champ original, vous pouvez propager celle-ci vers le champ interne en définissant le paramètre COMPMISS sur ON. Si la valeur manquante n'est pas propagée vers le champ interne, elle s'affiche en tant que zéro (si elle est numérique) ou en tant que vide (si elle est alphanumérique). Si la valeur manquante est propagée vers le champ interne, elle affiche le symbole de donnée manquante dans la sortie du rapport.
SET COMPMISS = {ON|OFF}
où :
propage une valeur manquante vers un champ reformaté. ON est la valeur par défaut.
affiche un blanc ou un zéro pour un champ reformaté.
Le paramètre COMPMISS ne doit pas être définie dans une commande ON TABLE.
La procédure suivante imprime le champ RETURN de la source de données SALES pour 14Z. Avec COMPMISS OFF, les valeur manquantes s'affichent en tant que zéros dans la colonne pour la valeur de champ reformaté. (Remarque : avant d'essayer cet exemple, assurez-vous que la procédure SALEMISS, qui ajoute les valeurs manquantes aux sources de données SALES, ait été exécuté.
SET COMPMISS = OFF TABLE FILE SALES PRINT RETURNS RETURNS/D12.2 AS 'REFORMATTED,RETURNS' BY STORE_CODE WHERE STORE_CODE EQ '14Z' END
La sortie est :
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
Avec COMPMISS ON, la colonne pour la version reformatée de RETURNS affiche le symbole de données manquantes lorsqu'une valeur est manquante :
SET COMPMISS = ON TABLE FILE SALES PRINT RETURNS RETURNS/D12.2 AS 'REFORMATTED,RETURNS' BY STORE_CODE WHERE STORE_CODE EQ '14Z' END
La sortie est :
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 |