Valeurs de champ manquantes

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.


Haut de page

Exemple : Calcul avec des valeurs manquantes

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.


Haut de page

Exemple : Moyenne avec des valeurs manquantes

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.


Haut de page

x
Attribut MISSING dans le fichier Master

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 :



Exemple : Gestion de valeurs manquantes avec l'attribut MISSING

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.


Haut de page

x
Attribut MISSING dans les commandes DEFINE et COMPUTE

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 .



x
Syntaxe : Spécifier des valeurs manquantes dans les commandes DEFINE et COMPUTE
field[/format] MISSING {ON|OFF} [NEEDS] {SOME|ALL} [DATA] = expression;

où :

field

Est le nom du champ virtuel créé par la commande DEFINE.

/format

Est le format du champ virtuel. Le format par défaut est D12.2.

MISSING

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.

NEEDS

Est facultatif. Il éclaircit le sens de la commande.

SOME

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.

ALL

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.

DATA

Est facultatif. Il éclaircit le sens de la commande.

expression

Est une expression valable depuis laquelle le champ temporaire tire sa valeur.



Exemple : Gestion de valeurs manquantes dans un champ virtuel avec la commande MISSING OFF

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.



Exemple : Gestion de valeurs manquantes dans les champs virtuels avec SOME et ALL

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 :


Haut de page

x
Recherche d'un segement avec une valeur de champ manquante

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.



x
Syntaxe : Rechercher un segement avec une valeur de champ 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.



Exemple : Recherche d'un segement avec une valeur de champ manquante

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               .


Exemple : Recherche d'une valeur de champ existante

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 :



Exemple : Recherche de blancs ou de zéros

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 :



Exemple : Exclusion de valeurs manquantes d'une recherche

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 :


Haut de page

x
Maintien de valeurs de champ manquantes dans un fichier de sortie

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.



x
Syntaxe : Distinguer des données manquantes dans un fichier d'extraction
ON TABLE {HOLD|SAVE|SAVB} MISSING {ON|OFF}

où :

HOLD

Crée un fichier d'extrait à utiliser dans des rapports ultérieurs. L'attribut de MISSING par défaut est ON.

SAVE

Crée un fichier d'extrait de texte à utiliser dans d'autres programmes. L'attribut de MISSING par défaut est OFF.

SAVB

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


Exemple : Inclusion de valeurs manquantes dans un fichier d'extraction

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.



x
Syntaxe : Stocker des données manquantes dans les fichiers HOLD
SET HOLDMISS={ON|OFF}
ON TABLE SET HOLDMISS {ON|OFF}

où :

ON

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.

OFF

Ne vous permet pas de stocker des données manquantes dans un fichier HOLD. OFF est la valeur par défaut.



x
Référence : Notes d'utilisation pour les valeurs manquantes


Exemple : Retenu de valeurs manquantes avec HOLDMISS
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            .            .             .

Haut de page

x
Propagation de valeurs manquantes vers des champs reformatés dans une requête

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.



x
Syntaxe : Contrôler les valeurs manquantes dans un champ reformaté
SET COMPMISS = {ON|OFF}

où :

ON

propage une valeur manquante vers un champ reformaté. ON est la valeur par défaut.

OFF

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.



Exemple : Contrôler les valeurs manquantes dans un champ reformaté

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 


x
Référence : Notes d'utilisation pour SET COMPMISS

Si vous créez un fichier HOLD avec COMPMISS ON, le fichier maître HOLD pour le champ reformaté indique MISSING = ON (comme pour le champ d'origine). Avec COMPMISS = OFF, le champ reformaté ne contient pas MISSING = ON dans le fichier maître généré.


WebFOCUS