Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Calcul entre table de faits et dimension sur un grafique

Bonjour,

J'ai un soucis d'affichage sur mon graphe qui affiche le nombre de presentation par nom de presentateur.

j'ai la table de dimension PRESENTATEUR et ma table de faits PRESENTATION

DIM_PRESENTATEUR
id_presentateur
first_name
lastname
adresse
FACT_PRESENTATION
id_presentation
id_presentateur
duree_presentation

J'ai fait un premier chargement dans qlikview avec le script suivant:

PRESENTER:

LOAD `id_presenter`,

     first_name,

     `lastname`,

    `first_name`&' '&`lastname` as PRESENTER_NAME,

    `adresse`;

SQL SELECT *

FROM DIM_PRESENTER P, DIM_INSTANCE I

where P.DIN_ID=I.DIN_ID;

PRESENTATION:

LOAD `id_presentation`,

    `id_presentateur`,

    `id_presentateur` as PERSON_ON

    `duree_presentation` AS DURATION;

SQL SELECT *

FROM FACT_PRESENTATION FP, DIM_INSTANCE I

where I.DIN_ID=FP.DIN_ID;

au niveau du graphe, quand je prend comme dimension PRESENTER_NAME, et dans l'expression calcul je mets count(id_presentation).J'ai le graphe suivant (image1) avec le nombre total de presentation. Mais quand je mets plutot comme dimension

id_presentateur et comme expression count(id_presentation) j'ai le graphe suivant(image2).

or que mon but c'est d'avoir le nom des presentateurs a la place des chiffres. comment y arriver, car je ne me retrouve pas.

Pouvez vous m'aider?

Merci

Labels (1)
15 Replies
flochi75
Creator III
Creator III

Bonjour Doris,

je ne comprends pas toutes tes manipulations dans ton script, mais si on se base uniquement sur tes DIM_PRESENTATEUR et FACT_PRESENTATION, la clé de jointure étant id_presentateur, le tableau

dim = `first_name`&' '&`lastname`

exp = count(distinct id_presentation)

devrait être juste...

Florent.

Anonymous
Not applicable
Author

Bonjour Florent,

C'est ce que je croyais aussi, mais je me rend compte que cela ne marche que sur les id_presentateur et nom sur le PRESENTER_NAME voir image 2. dans mon modèle en etoile j'ai plusieur table de faits et id_presentation est present dans tous les tables de faits cele ne gène en rien mon calcul. je ne comprend plus rien

flochi75
Creator III
Creator III

peux-tu envoyer ton appli ?

sinon, essaie de rajouter

*,

après tes LOAD, car j'ai l'impression qu'il ne sont pas liés à tes SQL suivants...

Florent

Anonymous
Not applicable
Author

Florent,

Comment je peux faire pour t'envoyer l'appli? tu parles du premier chargement qvd?

flochi75
Creator III
Creator III

après avoir cliqué sur "Répondre", tu clique ici :

Capture.PNG

puis pour joindre l'appli là :

Capture2.PNG

flochi75
Creator III
Creator III

sinon, essaie ce script à la place du tien :

PRESENTER:

LOAD*,

`id_presenter`,

     first_name,

     `lastname`,

    `first_name`&' '&`lastname` as PRESENTER_NAME,

    `adresse`;

SQL SELECT *

FROM DIM_PRESENTER P, DIM_INSTANCE I

where P.DIN_ID=I.DIN_ID;

PRESENTATION:

LOAD*,

`id_presentation`,

    `id_presentateur`,

    `id_presentateur` as PERSON_ON

    `duree_presentation` AS DURATION;

SQL SELECT *

FROM FACT_PRESENTATION FP, DIM_INSTANCE I

where I.DIN_ID=FP.DIN_ID;

Anonymous
Not applicable
Author

Merci,

Je t'ai envoyé le chargement qui fait la generation qvd. a partir de la quelle je vais un autre chargement. aussi il y a le modèle que j'ai fait

en mysql workbench

flochi75
Creator III
Creator III

je crois que tu as voulu faire un load imbriqué, c'est à dire que

  1. tu charges ta table avec l'instruction SQL SELECT
  2. tu rappelles cette table chargée pour la modifier

or, tu dois indiquer à QVW qu'il s'agit de la table qui vient d'être importée, pour cela il faut écrire

  • load*,
    • et ensuite le reste de tes manip (en l'occurence, tu ne peux rajouter QUE le champ avec as..

le "*" veut dire que tu reprends TOUS les champs précédent, et après la virgule que tu en modifies certains et les rajoutes à la table...

    • finir avec un ";".

Essaie ça...

Capture.PNG

Florent

flochi75
Creator III
Creator III

bien sûr, il faut modifier toutes tes tables qui ont un "load" au dessus du "SQL SELECT"...