Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 14 sur 14
  1. #1
    Invité de passage
    Femme Profil pro Maureen
    Stagiare
    Inscrit en
    mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Nom : Femme Maureen
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiare

    Informations forums :
    Inscription : mars 2013
    Messages : 10
    Points : 1
    Points
    1

    Par défaut Création d'alerte Qlikview

    Bonjour à tous,

    Pour commencer, merci de prendre le temps de lire mon post est de tenter de m'aider =) .


    J'aimerai créer une alerte qui permettra dès l'ouverture de Qlikview d'avoir les informations importantes.
    Je m'explique, par exemple, j'étudie le nombre de nouveaux clients au trimestre, si le nombre de clients du dernier trimestre est significativement différent de la moyenne de l'année précédente, je voudrais un message, ou l'ouverture automatique du graphique qui mettrait en évidence ce changement significatif.

    Mes tables ont toutes été chargées depuis un fichier .xls, je vois comment gérer cette problématique en SQL :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT sum(Nb_Nv_cli) AS NbCliCrt
    FROM [$base_V2], [$Temps], [$Clés]
    WHERE [$Temps].Année=[$Clés].Année
    AND [$Temps].Mois=[$Clés].Mois
    AND [$Clés].Clé=[$base_V2].Clé 
    AND [Mois-année] = (SELECT Max([Mois-année]) FROM [$temps])
    GROUP BY [Mois-année];
     
    SELECT avg(sum(Nb_nv_cli)) AS nbCliOld
    FROM [$base_V2], [$Temps], [$Clés]
    WHERE [$Temps].Année=[$Clés].Année
    AND [$Temps].Mois=[$Clés].Mois
    AND [$Clés].Clé=[$base_V2].Clé 
    WHERE [Mois-année] <> (SELECT Max([Mois-année]) FROM [$temps])
    GROUP BY [Mois-Année];
    Je sais qu'ici je n'ai pas résolu le problème de la moyenne sur un an mais ce n'est pas ce qui m'importe le plus.

    J'aimerai récupérer ces variables pour pouvoir les utiliser dans la création de mes alertes, j'ai tenté de le mettre dans l'éditeur de Script, il me signale un problème de connexion avec ma base ODBC. Les noms de tables ont été automatiquement générés par QV lors de l'importation depuis Excel, elles ont pris le nom des feuilles.

    J'espère avoir été assez claire, je vous remercie par avance de votre réflexion et de votre coup de main.

    Maw

  2. #2
    Invité de passage
    Femme Profil pro Maureen
    Stagiare
    Inscrit en
    mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Nom : Femme Maureen
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiare

    Informations forums :
    Inscription : mars 2013
    Messages : 10
    Points : 1
    Points
    1

    Par défaut

    J'ai creusé un peu (beaucoup) et j'ai réussi à avancer mais me voilà de nouveau bloquée.
    En fait j'ai cette requête SQL :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT sum(Nb_nv_cli) AS NbCliCrt
    FROM [Base_V2$],
    [Clés$],
    [Temps$]
    WHERE [Clés$].[Syn 1$]=[Temps$].[Syn 1$]
    AND [Clés$].Clé=[Base_V2$].Clé
    AND MoisAnnee=(SELECT max(MoisAnnée) AS MaxDate
    FROM [Temps$])
    GROUP BY MoisAnnee, Produits;
    Et il me donne ce message d'erreur :
    ErrorSource: Microsoft OLE DB Provider for ODBC Drivers, ErrorMsg: [Microsoft][Pilote ODBC Excel] Trop peu de paramètres. 4 attendu.

    Je pense que j'ai un problème de jointure dans mes tables mais je ne comprends pas bien où.

    Je vous mets un screenshot de mon schéma relationnel en PJ.

    Merci d'avance

    Maw
    Images attachées Images attachées
    • Type de fichier : jpg SR.JPG (33,4 Ko, 20 affichages)

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    septembre 2008
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : septembre 2008
    Messages : 728
    Points : 1 068
    Points
    1 068

    Par défaut

    Tu essaies de faire une requête SQL à partir de plusieurs tables. De plus les tables $syn sont des tables internes à Qlikview qui ne devraient pas être utilisées.

    Le mieux que tu aie à faire, c'est de charger tes tables de fait uniquement.

    Comme Qlikview utilise les noms de champs identiques pour créer ses jonctions de tables, il suffit d'utiliser AS dans ton script pour renommer éventuellement certains champs.

    Une fois cela fait, il suffira de créer des graphiques où on pourra utiliser les dimensions et expressions que l'on voudra !

  4. #4
    Invité de passage
    Femme Profil pro Maureen
    Stagiare
    Inscrit en
    mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Nom : Femme Maureen
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiare

    Informations forums :
    Inscription : mars 2013
    Messages : 10
    Points : 1
    Points
    1

    Par défaut

    Merci de votre réponse,

    Je vais essayer donc de n'avoir que mes tables de faits.
    Si je ne me trompe pas, vous me conseillez de supprimer ma table Temps$, la table Clé, et la table Groupe et de tout mettre directement dans ma table Base_V2 ?

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    septembre 2008
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : septembre 2008
    Messages : 728
    Points : 1 068
    Points
    1 068

    Par défaut

    Non, on peut très bien avoir plusieurs tables de faits reliées entre elles.
    Ce n'est pas le problème.
    Ce que tu essayais de faire, c'est créer une requête pour créer une table contenant ton analyse. Ca c'est inutile.
    Un graphique basé sur tes tables de fait pourra afficher ton analyse, sans avoir besoin d'une table intermédiaire (sauf certains cas difficiles peut-être)

  6. #6
    Invité de passage
    Femme Profil pro Maureen
    Stagiare
    Inscrit en
    mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Nom : Femme Maureen
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiare

    Informations forums :
    Inscription : mars 2013
    Messages : 10
    Points : 1
    Points
    1

    Par défaut

    En fait je pense que je n'arrive pas à expliquer mon raisonnement.
    Mon but final est de créer une alerte, pour se faire, j'ai besoin à chaque fois de comparer, si je prends l'exemple du nombre de nouveaux clients, le nombre de nouveaux client du trimestre en cours avec la moyenne des 4 trimestres précédents.

    C'est pour ça que je pense passer par le SQL. A moins qu'il y ait une solution plus évidente et là je suis preneuse ^^

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    septembre 2008
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : septembre 2008
    Messages : 728
    Points : 1 068
    Points
    1 068

    Par défaut

    Regarde dans l'aide de Qlikview à " Analyse d'ensemble " (Set Analysis)
    Sinon regarde aussi la fonction d'agrégation aggr.

  8. #8
    Invité de passage
    Femme Profil pro Maureen
    Stagiare
    Inscrit en
    mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Nom : Femme Maureen
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiare

    Informations forums :
    Inscription : mars 2013
    Messages : 10
    Points : 1
    Points
    1

    Par défaut

    Je te remercie de tes conseils je teste ça en début d'aprem et je fais un retour plus tard.

    Encore merci de m'accorder de ton temps, c'est cool.

    Maw

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    décembre 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : décembre 2008
    Messages : 306
    Points : 412
    Points
    412

    Par défaut

    Bonjour,
    Je suis (encore ?) loin d'être expert dans QlikView mais j'avais cru comprendre que moins on y faisait de SQL mieux c'était (je grossis sûrement un peu).
    Il me semblait également que tu n'avais qu'un jeu de données initial dont tu souhaitais comparer les valeurs.

    Si c'est le cas, je soumettrai bien l'analyse suivante :

    Soient les données source (dans un fichier CSV)
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Id client Année Mois
    1 2010 1
    2 2010 1
    3 2010 1
    4 2010 1
    5 2010 1
    6 2010 1
    7 2010 1
    8 2010 4
    9 2010 4
    10 2010 7
    11 2010 7
    12 2010 7
    13 2010 7
    36 2010 10
    14 2011 1
    15 2011 1
    16 2011 1
    17 2011 4
    18 2011 4
    19 2011 7
    20 2011 7
    21 2011 7
    22 2011 7
    23 2011 7
    24 2011 7
    25 2011 7
    26 2011 7
    27 2011 7
    28 2011 7
    29 2011 7
    30 2011 7
    31 2011 7
    32 2011 7
    33 2011 7
    34 2011 7
    35 2011 7
    Le script de chargement suivant permet de mettre les données à la granularité année / trimestre et de définir au sein de variables le dernier trimestre du jeu de données et l'année précédente.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    MaSource: // Pour forcer QV à créer la TABLE avec ce nom 
    LOAD // Chargée en 1er : Récupération des données texte (ça pourrait être de l'Excel)
     [Id client], 
         Année, 
         Mois,
         Ceil(Mois/3) as Trimestre,
         10*Année+Ceil(Mois/3) as AnnéeTrim // La granularité minimum est à l'année et au trimestre. Ce champ servira de clé.
    FROM
    C:\Formation\QlikView\TestData.csv
    (txt, codepage IS 1252, embedded labels, delimiter IS ',', msq);
    MaDestination:
    LOAD
     Année,
     Trimestre,
     AnnéeTrim,
     count([Id client]) AS NbClients //Calcul du nombre de clients pour chaque trimestre
    Resident MaSource // Resident est nécessaire pour permettre la clause ORDER BY
    GROUP BY Année, Trimestre, AnnéeTrim
    ORDER BY AnnéeTrim;
    DROP TABLE MaSource; // ici : Plus besoin des données source.
    let vAnnéeTrimMax = peek('AnnéeTrim',-1,MaDestination); //Récupération de l'année trimestre de la dernière ligne de MaDestination 
    let vAnnéeRef = floor(vAnnéeTrimMax/10)-1; // Identification de l'année précédente 
    trace Trace => $(vAnnéeTrimMax), $(vAnnéeRef); // C'est parfois utile que QV affiche dans la fenêtre d'exécution ce qu'il a évalué.
    Ensuite, dans l'éditeur du document, je peux créer deux variables contenant :
    La moyenne du nombre de clients de l'année précédente
    Code :
    1
    2
    3
    4
    vMoyenneRef
    sum(total {1<Année = {'$(vAnnéeRef)'}>} NbClients)
    /
    count(total {1<Année = {'$(vAnnéeRef)'}>} NbClients)
    Le nombre de clients du trimestre en cours.
    Code :
    vNbCliAct = Sum (total {1 < AnnéeTrim = {'$(vAnnéeTrimMax)'} >}NbClients)
    Afin de ne pas être perturbé par les diverses sélections faites dans le document, j'ai fait en sorte de m'en affranchir (total {1}).
    Une fois ces variables créées, je peux définir l'affichage conditionnel d'un graphique Propriétés > Disposition > Conditionnel et y saisir la condition :
    Code :
    $(vNbCliAct)<$(vMoyenneRef).
    Suis-je complètement à coté de la plaque ou cela t'avance-t-il un peu ?

    Cordialement,

  10. #10
    Invité de passage
    Femme Profil pro Maureen
    Stagiare
    Inscrit en
    mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Nom : Femme Maureen
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiare

    Informations forums :
    Inscription : mars 2013
    Messages : 10
    Points : 1
    Points
    1

    Par défaut

    Ça m'a l'air d'être ce que je veux faire, mais je suis vraiment débutante, n'ayant eu que quelques heures de formation basées sur le Tutoriel à la FAC, autant dire que je me suis "autoformée", je ne saisi pas tout ce que tu as mis dans le code. Je ne sais pas trop non plus où tout mettre, enfin bref.

    Merci beaucoup en tous cas, c'est très gentil de passer du temps pour moi.

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    décembre 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : décembre 2008
    Messages : 306
    Points : 412
    Points
    412

    Par défaut

    je ne saisi pas tout ce que tu as mis dans le code
    Bon on va essayer d'avancer un peu.

    Je suppose que tu as pris la première zone de code et que tu l'as collée dans un fichier texte. Tant que tu y seras, change Id client en IdClient, ça s'intégrera plus facilement.

    Ensuite on y va étape par étape.
    Dans l'éditeur de script j'ai créé une nouvelle feuille (mais ce n'est pas obligatoire). Menu Onglet/ajouter un onglet. Il y a aussi une icône mais l'image n'est pas facile à coller dans le forum.

    Pour forcer QlikView à mettre le nom de table que tu veux, tu fait précéder le chargement par le nom désiré terminé obligatoirement par deux points :

    Pour charger le fichier j'ai utilisé l'assistant, s'agissant d'un fichier plat Le bouton Fichier de tables en bas à droite fait l'affaire. Je me suis laisser guider par les fenêtres de l'assistant et ça m'a donné :
    Code :
    1
    2
    3
    4
    5
    6
    7
     
    LOAD [Id client], 
    Année, 
    Mois
    FROM
    C:\Formation\QlikView\TestData.csv
    (txt, codepage IS 1252, embedded labels, delimiter IS ',', msq);
    Vu la granularité souhaitée, il faut retrouver le trimestre et construire une clé sur L'année et le mois. J'ai donc modifié le script en :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    MaSource:
    LOAD // Chargée en 1er : Récupération des données texte (ça pourrait être de l''Excel)
    [Id client], 
    Année, 
    Mois,
    Ceil(Mois/3) AS Trimestre,
    10*Année+Ceil(Mois/3) AS AnnéeTrim // La granularité minimum est à l''année et au trimestre. Ce champ servira de clé.
     
    FROM
    C:\Formation\QlikView\TestData.csv
    (txt, codepage IS 1252, embedded labels, delimiter IS ',', msq);
    Pour rajouter les deux champs qui me manquent.

    Note que lors de l'utilisation de l'assistant, QV te ramène le nom de tous les champs qu'il trouve mais que tu n'est pas obligée de les charger tels quels. Quoi qu'il en soit, tu peux les utiliser et changer le nom des colonnes (aliasé par as).

    Cette table est chargée dans QV mais j'ai besoin de faire des regroupements. Pour me simplifier la vie, je vais donc récupérer les éléments déjà chargés pour les retravailler dans QV et créer une table ma destination.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    MaDestination:
    LOAD
    Année,
    Trimestre,
    AnnéeTrim,
    count([Id client]) as NbClients //Calcul du nombre de clients pour chaque trimestre
    Resident MaSource // Resident est nécessaire pour permettre la clause Order by
    Group by Année, Trimestre, AnnéeTrim
    Order by AnnéeTrim;
    Note le Resident MaSource qui indique à QV d'utiliser la table déja chargée. Pour pouvoir le faire, il faut que le chargement de cette table source soit décrit avant le chargement de la table Ma Destination sinon QV ne trouve pas les données.

    Une fois que j'ai fait les regroupements, je n'ai plus besoin de la table source
    donc je la supprime :
    Code :
    DROP TABLE MaSource; // ici : Plus besoin des données source.
    et je calcule deux variables pour trouver le dernier trimestre de l'année en cours et l'année précédente.
    Code :
    1
    2
     
    let vAnnéeTrimMax = peek('AnnéeTrim',-1,MaDestination); //Récupération de l'année trimestre de la dernière ligne de MaDestination
    Pour créer une variable, tu utilises le préfixe LET.
    Pour créer une constante, tu utilises le préfixe SET.

    Ici on crée des variables :
    Par défaut, QV ne permet pas de compléter les variables avec les données issu du chargement. Pour lui dire d'aller les récupérer, il faut utiliser la fonction PEEK qui reçoit 3 arguments : Le nom du champ ou se trouve la donnée, Le rang dans le jeu d'enregistrement où aller la chercher (1 premier, 2 deuxième, -1 dernier, -2 avant dernier), La table à interroger.

    Le calcul de l'année précedente est trivial, je te laisse chercher
    Code :
    let vAnnéeRef = floor(vAnnéeTrimMax/10)-1; // Identification de l'année précédente
    J'aurais probablement pu également extraire la moyenne et le nombre de clients dans le script mais j'ai choisi de le faire dans le rapport.
    Code :
    trace Trace => $(vAnnéeTrimMax), $(vAnnéeRef);
    L'instruction trace est commode, elle écrit ce que tu lui demandes dans le rapport d'intégration. En développement de script, ça peut aider.

    Note qu'ici je n'ai affiché que le contenu des deux variables. Pour cela, il est nécessaire d'encadrer le nom de la variable avec $(), chez QV, on appelle cela l'expansion de la variable. En d'autre termes dans la variable, on stocke la formule pour la calculer, et le jeu $() demande de l'évaluer. C'est vrai aussi des variables générées dans le document.

    J'en ai fini avec le script.

    On l'exécute et on va voir ce qui se passe dans le document.

    On va créer un nouvel objet graphique de type tableau simple, contenant l'année, le trimestre, et le nombre de clients. Tu peux aussi ajouter des listes de sélection si tu le désires.

    Ce n'est pas trop difficile, je te laisse faire.

    La grande force de QV est de pouvoir faire très simplement des sélections à l'intérieur des divers objets constituant le document.

    Ces sélections servent a filtrer les données affichées. Mais quelquefois on souhaite comparer les données filtrées avec le reste ou avec des données issues de sélections précédentes. Les concepteurs de QV ont prévu ça et ont inventé une syntaxe à l'intérieur des agrégations qui permet de faire à peu près tous les rapprochements que l'on souhaite.

    Pour tester on va créer un champ texte : Dans une zone vide de la feuille -> Clic droit, nouvel objet de feuille, champ texte.

    et on va y coller la formule :
    Code :
    ='Nombre de clients'&Sum (NbClients)
    Ca devrait t'afficher le nombre de clients de la sélection en cours. Pour tester, tu cliques sur une ou plusieurs lignes du tableau créé au dessus et normalement le nombre de clients suit le mouvement.

    Pour le fun on va changer la formule en :
    Code :
    ='Nombre de clients'&Sum ({$}NbClients)
    Refais des sélections. Rien ne change par rapport au test précédent, c'est normal {$} représente la sélection active et c'est la valeur par défaut.

    Maintenant on va modifier la formule en

    Code :
    ='Nombre de clients'&Sum ({1}NbClients)
    Si tu fais des sélections dans le tableau tu t'aperçois que ton texte ne change plus. {1} représente l'ensemble des données de ton jeu de données et ignore les sélections.

    De la même manière, si tu voulais voir les données de la sélection précédente, tu saisirais {$1} et pour la sélection suivante {$_1}.

    Sauf que maintenant je voudrais voir dans mon texte le nombre de clients de l'année 2011 sans tenir compte de la sélection.

    C'est aussi prévu : On va saisir à l'intérieur de l'accolade un filtre qui sera placé entre chevrons. Chez QV on appelle ça un modificateur.
    La formule devient :
    Code :
    ='Nombre de clients'&Sum ({1<Année={2011}>}NbClients)
    Note que le 2011 est un jeu de données (un set), il est placé lui aussi entre accolades mais nécessairement à l'intérieur des chevrons.

    Regarde maintenant le résultat. Le texte affiche contre vents et marées le nombre de clients de 2011.

    Tout ça c'est bien beau mais l'année de référence change tous les ans. Il faut donc remplacer le 2011 par la variable créée dans le script.
    Code :
    ='Nombre de clients'&Sum ({1<Année={'$(vAnnéeRef)'}>}NbClients)
    Note l'expansion de variable pour que QV aille bien chercher la valeur. Note aussi les simples cotes qui sont les séparateurs de données textuelles (laisser les cotes marche aussi si les données sont numériques, c'est du QV pas du java).

    Maintenant, il n'y a plus qu'à créer une variable dans le générateur de documents pour ne pas avoir à retaper le formule dans tous les tableaux.

    Menu Paramètres / Vue d'ensemble des variables cliquer sur ajouter : tu lui donne un nom et tu colles la formule
    Code :
    Sum ({1<Année={'$(vAnnéeRef)'}>}NbClients)
    dans la fenêtre définition.

    Voila, tu as créé tes premières variables, tu n'as plus qu'à créer des conditions reposant sur ces variables dans les tableaux dont tu veux voir un affichage conditionnel. Ce n'est pas très compliqué, les infos dans mon post précédent devraient suffire.

    Cordialement,

    PS : On a effleuré quelques concepts des set analysis mais il y aurait encore beaucoup à dire.

  12. #12
    Invité de passage
    Femme Profil pro Maureen
    Stagiare
    Inscrit en
    mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Nom : Femme Maureen
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiare

    Informations forums :
    Inscription : mars 2013
    Messages : 10
    Points : 1
    Points
    1

    Par défaut

    Déjà pour commencer, merci beaucoup de prendre du temps et d'être si pédagogue.

    J'ai compris beaucoup de choses, me reste à les appliquer sur mon vrai fichier ^^
    J'ai deux questions:

    la première :

    Menu Paramètres / Vue d'ensemble des variables cliquer sur ajouter : tu lui donne un nom et tu colles la formule
    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part

    Sum ({1<Année={'$(vAnnéeRef)'}>}NbClients)

    dans la fenêtre définition.
    J'ai bien trouvé où le mettre c'est bien enregistré, mais je ne comprends pas comment on peut s'en servir ensuite.

    Seconde question :

    En fait j'aimerai faire la moyenne sur l'année précédant le trimestre, par exemple si en dernière donnée j'ai le 3e trimestre de 2011, j'aimerai faire la moyenne sur les trimestres 3 et 4 de 2010 et 1 et 2 de 2011. Dans ce cas à quel point dois-je changer la formule?

    Merci encore ^^

  13. #13
    Invité de passage
    Femme Profil pro Maureen
    Stagiare
    Inscrit en
    mars 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Nom : Femme Maureen
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiare

    Informations forums :
    Inscription : mars 2013
    Messages : 10
    Points : 1
    Points
    1

    Par défaut

    Je me demande également, faut il impérativement que Mois et Année soient dans la même table que celle où sont les informations que je dois comparer?

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    décembre 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : décembre 2008
    Messages : 306
    Points : 412
    Points
    412

    Par défaut

    Déjà pour commencer, merci beaucoup de prendre du temps et d'être si pédagogue.
    "My Pleasure !"

    Réponse à la deuxième question :

    Dans ce cas, il faut définir le trimestre limite à partir duquel commence la sélection du nombre de clients.
    Je te propose de modifier la variable qui ramène l'année de référence dans le script.
    Code :
    let vAnnéeTrimRef = peek('AnnéeTrim',-5,MaDestination);
    Elle retourne maintenant l'année et le trimestre à partir duquel on va compter le nombre des clients.
    Tu peux recharger le script pour réévaluer ta variable.
    On va ensuite modifier la variable qui permet de calculer la moyenne de référence :
    Code :
    1
    2
    =Sum (total {1 < AnnéeTrim = {'>=$(vAnnéeTrimRef)'} - {'$(vAnnéeTrimMax)'}>}NbClients)
    / 4
    Note : La variable dans le script ramène toujours la 5ième date du jeu de données en commençant par la fin. S'il manque un trimestre dans le jeu de données la moyenne n'est plus dans la période souhaitée. On va considérer ici qu'il y a tous les trimestres.

    Dans les jeux d'analyse, on a vu hier qu'il existait 2 éléments qui permettaient de composer avec les sélections du document.
    Les identifiants : {$}, {1}, ...
    Les modificateurs : <Année = {2010}> à l'intérieur des identifiants et entre chevrons.
    Il existe un troisième élément permettant des opérations ensemblistes entre les jeux de données : l'opérateur.

    Il y a 4 opérateurs :
    + : pour réaliser une opération de type OU (union)
    * : pour réaliser une opération de type ET (intersection)
    - : pour réaliser une soustraction (MINUS)
    / : Pour réaliser un ou exclusif (XOR - fromage ou dessert mais pas les deux).
    Ces opérateurs peuvent s'appliquer aux listes de sélection.
    ramène toutes les ventes du jeu de données moins celles de la sélection.
    Ils peuvent aussi être utilisés dans les modificateurs pour ajuster les valeurs ramenées par les ensembles.
    ainsi :
    Code :
    < AnnéeTrim = {'>=$(vAnnéeTrimRef)'} - {'$(vAnnéeTrimMax)'}>
    va d'abord constituer la liste des 5 trimestres supérieurs à vAnnéeTrimRef et comme on ne veut garder que les 4 avant-derniers trimestres, on en retire le dernier (vAnnéeTrimMax).
    Tant qu'on y est tu remarqueras la méthode utilisée pour constituer la liste des 5 derniers trimestres :
    Code :
    {'>=$(vAnnéeTrimRef)'}
    entre les accolades on ramène une liste (un tuple) et entre les apostrophes (obligatoires) on ajoute un opérateur (>=) et un opérande ($(vAnnéeTrimRef)) l'objet de la condition, c'est AnnéeTrim bien sûr en tête du modificateur.

    On devrait donc maintenant avoir la moyenne pour la période de référence.

    Réponse à la première question :

    Lorsque tu crée un graphe, dans l'onglet <Disposition> des propriétés, il existe une zone qui s'appelle <Afficher> avec 2 boutos radio : Toujours / Conditionnel.
    Tu coches Conditionnel et tu saisis la condition dans le champ à coté :
    Code :
    vMoyenneRef >= vNbCliAct
    Ton tableau s'affichera seulement lorsque la moyenne de référence sera supérieure à la moyenne du trimestre en cours.

    Par ailleurs si tu n'as par toute la doc, je te conseille de créer un compte QlikView sur QlikView.com. Cela te permettra de télécharger le manuel de référence.

    1000 pages en anglais, ça ne vaut pas un cours particulier mais tout y est.

    Bien sûr, le forum est aussi là pour t'aider.

    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •