Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Afficher les dimensions même si la mesure a une valeur vide.

Bonjour,

Nouveau sur l'environnement Qlikview, je me confronte à un problème. Dans ma table je dispose d'une date d'enregistrement que j'ai transformé en mois via la fonction Month()pour récupérer le mois. Je dispose également d'un mode de réclamation.

Je souhaite faire apparaitre dans un tableau (graphique) le nombre de réclamation par mois même si je ne dispose pas d'enregistrement pour un mois donné sur un site (que j'ai dans une liste de sélection).

J'ai donc créer un tableau croisé dynamique avec 2 dimensions : une avec le mode de réclamation et l'autre avec les mois (que j'ai transposé en horizontale pour un confort de lecture). J'ai coché l'option "Affiché toute les valeurs" pour mes deux dimensions et décohé supprimer les valeurs null dans l'onglet présentation.

Pour mon expression j'ai réalisé un comptage avec la fonction Count(). J’obtiens le résultat voulu à part qu'il me créer des valeurs sous forme de tiré dans mes dimensions (voir capture d'écran)

Tabelau.png

Comment empêcher cela ?

J'espère avoir été le plus claire possible n'hésitez pas si des précision sont nécessaire

Merci pour votre aide

12 Replies
Not applicable
Author

Bonjour Mambi Badi,

Cela ne résous pas mon problème de départ qui est d'afficher des valeurs dans le tableau au niveau des dimensions. Par contre le Script de Bruno est parfait mais je ne l'ai pas compris dans son intégralité donc si il y a une âmes pour m'expliquer cela je suis preneur

// Création table intermédiaire à partir des données sources

Réclamation2 : // nom donnée à la table

LOAD

    [Fiche de suivi n°],

     [Ouverture Date],

     month ([Ouverture Date]) as Mois,

     [Mode de réclamation],

     Site

    

   

FROM

(txt, codepage is 1252, embedded labels, delimiter is ';', msq, header is 7 lines);

// création de la table de travail

Réclamation:

LOAD

    Mois &'_'& [Mode de réclamation] &'_'& Site as Clef,

    [Fiche de suivi n°],

    [Mode de réclamation],

    Mois,

    Site

Resident Réclamation2;

Drop Table Réclamation2; // suppression de la table des données sources

MoisSiteMode: // création d'une table pour créer les données manquantes

Load Distinct // Qui peut m'éclairer sur le Distinct

Mois

Resident Réclamation;

Outer Join (MoisSiteMode) Load Distinct // Qui peut m'éclairer sur le Outer join

    Site

Resident Réclamation;

Outer Join (MoisSiteMode) Load Distinct

    [Mode de réclamation]

Resident Réclamation;

Concatenate (Réclamation) Load // Qui peut m'éclairer sur concatenate

    Mois,

    [Mode de réclamation],

    Site

Resident MoisSiteMode

Where not Exists(Clef, Mois &'_'& [Mode de réclamation] &'_'& Site); // qui peut m'éclairer sur cette instruction

Drop Table MoisSiteMode; // suppression de la table pour la création des données manquantes

Drop Field Clef; // suppression de la "CLEF" créée

J'ai juste adapter le code pour moi

Anonymous
Not applicable
Author

Bonjour, Thomas.

Voici une explication:

//Création de la table de donnés sources avec la clé

Réclamation:

Load

  Month([Ouverture Date]) &'_'& [Mode de réclamation] &'_'& Site as Clé,

  [Fiche de suivi n°],

  [Ouverture Date],

  Month([Ouverture Date]) as Mois,

  [Mode de réclamation],

  Site

From

(txt, codepage is 1252, embedded labels, delimiter is ';', msq, header is 7 lines);

MoisSiteMode: // création d'une table pour créer les données manquantes

/* Distinct est un prédicat utilisé pour charger uniquement

le premier enregistrement en cas de doublons. */

Load Distinct // Charger chaque Mois sole une fois.

  Mois

Resident Réclamation;

/* Le préfixe join joint la table chargée à une table nommée existante ou à la dernière

table de données créée. La jointure est une Jointure naturelle effectuée sur tous les

Champs communs. Le préfixe join peut être précédé d'un des préfixes Inner, Outer, Left ou Right.  */

/* Le préfixe explicite Join peut être précédé du préfixe outer pour spécifier une jointure externe.

Dans une jointure externe, toutes les combinaisons entre les deux tables sont générées.

De ce fait, la table résultante contient uniquement des combinaisons de valeurs de champs

provenant des tables de données brutes où les valeurs des champs de liaison sont représentées

dans une ou les deux tables. Le mot-clé outer est facultatif. */

Outer Join (MoisSiteMode) Load Distinct // Charger chaque Site sole une fois.

    Site // Comme il n'y a pas champs égaux,

Resident Réclamation; // nous avons toutes les combinaisons de Mois et Site.

Outer Join (MoisSiteMode) Load Distinct // Toutes les combinaisons de Mois, Site et Mode

    [Mode de réclamation]

Resident Réclamation;

/*Concatenate: Si deux tables à concaténer disposent d'ensembles de Champs différents,

il est tout de même possible de forcer la Concaténation à l'aide du préfixe Concatenate.

Cette instruction force la concaténation avec une table existante et nommée ou avec la

dernière Table logique créée. En principe, une concaténation équivaut à une instruction SQL UNION,

à deux différences près : tout d'abord, le préfixe Concatenate s'utilise,

que les tables contiennent des noms de champs identiques ou non et, deuxièmement,

aucune suppression d'enregistrements identiques n'est effectuée.*/

Concatenate (Réclamation) Load

    Mois,

    [Mode de réclamation],

    Site

Resident MoisSiteMode

Where not Exists(Clé, Mois &'_'& [Mode de réclamation] &'_'& Site); // Ne charger pas les combinaisons existantes

/* Exists(champ [ , expression ] 😞 Détermine si une valeur de champ donnée existe dans un champ

parmi les données déjà chargées. Field est un nom ou une expression de chaîne qui donne un nom de champ.

Le champ doit exister dans les données chargées jusque-là par le script.

Expr est une expression qui fournit la valeur à chercher dans le champ spécifié.

Si elle est omise, c'est la valeur de l'enregistrement actif dans le champ spécifié qui est utilisée. */

Drop Table MoisSiteMode; // suppression de la table pour la création des données manquantes

Drop Field Clef; // suppression de la Clé créée

Cordialement

Not applicable
Author

Bonjour Bruno,

Merci pour votre retour qui va me permettre de progresser grace a ces explications.