IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

QlikView Discussion :

Utilisation d'un champ dans un set analysis


Sujet :

QlikView

  1. #1
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Points : 54
    Points
    54
    Par défaut Utilisation d'un champ dans un set analysis
    Bonjour,

    J’ai une table contenant le détail des comptes comptables nécessaires pour calculer des sous totaux comptable (Résultat d’exploitation, CA, Achats etc.), ils ont été formatés pour correspondre à la syntaxe de QlikView dans les set analysis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    LOAD * INLINE [
        ComptesAjouter, ComptesSoustraire, CodeRubrique
        '"637*","635*"', , 1
        '"641*"', '"64113*","64114*"', 2
        '"644*","641*"', , 3
        '"645*","649*"', '"64552*"', 4
        '"646*"', '"6461*","6462*","6463*","6464*"', 5
    ];
    L’idée c’est donc de réutiliser ces formules contenu dans les 2 champs ComptesAjouter et ComptesSoustraire dans des set analysis. J’ai essayé plusieurs syntaxes mais rien ne fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sum({<CompteComptables={=ComptesAjouter}, CodeRubrique ={1} >} Montant) - Sum({<CompteComptables={=ComptesSoustraire}, CodeRubrique ={1} >} Montant)
    Je peux rajouter quelques échantillons de données supplémentaires si ce n’est pas suffisamment clair.

  2. #2
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 651
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 651
    Points : 2 531
    Points
    2 531
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Quand vous faites
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sum({<CompteComptables={=ComptesAjouter}, CodeRubrique ={1} >} Montant)
    êtes-vous certain que "ComptesAjouter" contient 1 et une seule valeur possible ?


    Attention, le Set Analysis est appliqué avant l'agrégation par ligne.
    Ce qui veut dire que si la dimension de votre tableau est "CodeRubrique", vous n'aurez pas de correspondance spécifique sur le SetAnalysis d'une ligne à l'autre.

    (on pourrait penser que sur la ligne où "CodeRubrique = 1", on a une seule valeur possible pour "CompteAjouter", pareil pour "CodeRubrique = 2" avec une autre valeur pour "CompteAjouter", ... mais ce n'est pas le cas, sinon le Set Analysis perdrait de son intérêt)

  3. #3
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Points : 54
    Points
    54
    Par défaut
    Effectivement avec cette expression le champ ComptesAjouter contenait plusieurs valeurs


    Sachant que cette expression copiée dans un objet texte me retourne "7061*":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ONLY({<CodeRubriqueFormuleCompteResultat={C001}>}ComptesAjouterFormuleCompteResultat)
    Et que cette expression me retourne des valeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum({<NumeroCompteComptableLigneEcriture={"7061*"}>}MontantLigneEcriture)
    Je pensais que cette expression fonctionnerai mais cela me retourne toujours 0:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum({<NumeroCompteComptableLigneEcriture={"=Only({<CodeRubriqueFormuleCompteResultat={C001}>}ComptesAjouterFormuleCompteResultat)"}>}MontantLigneEcriture)

  4. #4
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 651
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 651
    Points : 2 531
    Points
    2 531
    Billets dans le blog
    6
    Par défaut
    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum({$ <NumeroCompteComptableLigneEcriture={"$(=Only({$<CodeRubriqueFormuleCompteResultat={C001}>} ComptesAjouterFormuleCompteResultat))"}>} MontantLigneEcriture)
    ?


    On peut aussi utiliser la fonction "P()" (valeurs possibles) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum({$ <NumeroCompteComptableLigneEcriture=P({$<CodeRubriqueFormuleCompteResultat={C001}>} ComptesAjouterFormuleCompteResultat)>} MontantLigneEcriture)

  5. #5
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Points : 54
    Points
    54
    Par défaut
    Les deux expressions me retournent un NULL

    Edit: Il y avait une accolade en trop dans ton expression avec la fonction p(), corrigé cela me retourne 0.

  6. #6
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 651
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 651
    Points : 2 531
    Points
    2 531
    Billets dans le blog
    6
    Par défaut
    Effectivement, pour le "P()", ça ne marche pas parce qu'il faut les valeurs possible exactes, l'emploi du wildcard "*" ne fonctionne pas.
    Il faudrait donc générer une table intermédiaire qui fait le lien entre tous les comptes et les comptes génériques (faisable facilement de manière automatique, cf bas du message).



    Par contre, pour ma première proposition, j'ai testé, ça fonctionne chez moi.

    J'ai créé ce jeu de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    LOAD * INLINE [
    CodeRubriqueFormuleCompteResultat, ComptesAjouterFormuleCompteResultat
    C001, "7061*"
    C002, "8000*"
    ];
     
    NumeroCompteComptableLigneEcriture
    LOAD * INLINE [
    NumeroCompteComptableLigneEcriture, MontantLigneEcriture
    "70610001", 1
    "70610002", 2
    "70610004", 4
    "80000008", 8
    ];
    et l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =sum({$ <NumeroCompteComptableLigneEcriture={"$(=Only({$<CodeRubriqueFormuleCompteResultat={C001}>} ComptesAjouterFormuleCompteResultat))"}>} MontantLigneEcriture)
    me retourne bien "7".






    ---
    Pour la version "P()", je rajoute le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    LOAD 
    	left(NumeroCompteComptableLigneEcriture, 4) & '*' AS ComptesAjouterFormuleCompteResultat,
    	NumeroCompteComptableLigneEcriture AS ComptesAjouterFormuleCompteResultat_complet
    RESIDENT NumeroCompteComptableLigneEcriture;
    qui me crée une table de correspondance "compte générique" / "compte complet".

    Ainsi, l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =sum({$ <NumeroCompteComptableLigneEcriture=P({$<CodeRubriqueFormuleCompteResultat={C001}>} ComptesAjouterFormuleCompteResultat_complet)>} MontantLigneEcriture)
    fonctionne.

  7. #7
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Points : 54
    Points
    54
    Par défaut
    J'ai compris d'ou venait le probleme !

    En fait avec cette expression QlikView rajoute un ' " ' au debut et un ' " ' à la fin. En gros cette expression:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     sum({$ <NumeroCompteComptableLigneEcriture={"$(=Only({$<CodeRubriqueFormuleCompteResultat={C001}>} ComptesAjouterFormuleCompteResultat))"}>} MontantLigneEcriture)
    Remontait en réalité : sum({$ <NumeroCompteComptableLigneEcriture={""7061*""}>} MontantLigneEcriture)
    Au lieu de : sum({$ <NumeroCompteComptableLigneEcriture={"7061*"}>} MontantLigneEcriture)

    pour que cela fonctionne j'ai donc du envelver le 1er ' " ' et le dernier ' " ' du champ ComptesAjouterFormuleCompteResultat.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    LOAD * INLINE [
    CodeRubriqueFormuleCompteResultat, ComptesAjouterFormuleCompteResultat
    C001, "7061*"
    C002, "8000*"
    ];
    Dans ce code QlikView ne charge pas les ' " ', c'est quand j'ai vu ça que j'ai compris

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

Discussions similaires

  1. Utilisation d'un champ dans un document/objet avec tPig
    Par hogwei dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 07/08/2014, 20h11
  2. Codage pour enlever l'apostrophe dans un set analysis
    Par sevlev59 dans le forum QlikView
    Réponses: 1
    Dernier message: 28/05/2014, 10h16
  3. Utilisation d'un champ dans la clause WHERE
    Par jdelire dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/11/2011, 12h32
  4. Alphanumerique dans un set analysis !
    Par liegeus dans le forum QlikView
    Réponses: 0
    Dernier message: 23/02/2011, 18h55
  5. [SQL] Utiliser un autre champ dans une table si le champ par défaut est vide
    Par Mawashigeri dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/01/2008, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo