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: 
MauriceLudo
Creator II
Creator II

Modele Qlikview

Bonjour,

ci-joint les table et le modèle  en place,

je voulais calculer le nombre des appels en -60 s de la table Appels  pour le produit\service MSS de la table Prise de contact,

j'ai renommé le champs produit par produit\service dans la table Appels et j'ai concaténé les deux tables, mais qd j'ai vérifié dans mon fichier source je n'ai pas le même nombre.

des aidés s'il vous plais.

Merci

Maurice

37 Replies
MauriceLudo
Creator II
Creator II
Author

de mon fichier source, 436 ce n'est pas le bon chiffre, le fichier source il est un peut plus haut tu peux vérifier, aussi il y a des clés synthétiques  dans le modèle

MauriceLudo
Creator II
Creator II
Author

Pour produit\service carte pas des données à afficher alors que on a bien des données

sfatoux72
Partner - Specialist
Partner - Specialist

On a résolu ton modèle qui n'était pas génial, mais tu as remis les expressions que tu avais au début et que l'on avait corrigées.

Si tu mets ces expressions (sans les modifier), tu auras les bons chiffres et tu n'auras plus le Choix 3

Réceptionné:

=num(
if(Len(Only(TOTAL [Produits/Services]))>0,
if(Match([Produits/Services], 'Cartes', 'Cartes_Certificats_Développement', 'Certificats', 'Produits de développement') > 0,
sum({<[Produits/Services]={ 'Cartes', 'Cartes_Certificats_Développement', 'Certificats', 'Produits de développement'}>} [APPELS OFFERTS]),
sum([APPELS OFFERTS])
)
),
'00')

Décroché - 60 s :

=num(
if(Len(Only(TOTAL [Produits/Services]))>0,
if(Match([Produits/Services], 'Cartes', 'Cartes_Certificats_Développement', 'Certificats', 'Produits de développement') > 0,
sum({<[Produits/Services]={ 'Cartes', 'Cartes_Certificats_Développement', 'Certificats', 'Produits de développement'}>} [<-60sec NB]),
sum([<-60sec NB])
)
),
'00')

Pris :

=num(
if(Len(Only(TOTAL [Produits/Services]))>0,
if(Match([Produits/Services], 'Cartes', 'Cartes_Certificats_Développement', 'Certificats', 'Produits de développement') > 0,
sum({<[Produits/Services]={ 'Cartes', 'Cartes_Certificats_Développement', 'Certificats', 'Produits de développement'}>} [APPELS PRIS]),
sum([APPELS PRIS])
)
),
'00')

Petite explication de cette expression par rapport à la tienne, car vu les modification que tu y a apporté, tu n'as pas compris son fonctionnement.

  • Dans ton expression, tu enchaines les if pour savoir quel Produit/Service est sélectionné. Lorsque tu as déterminer le Produit/Service, tu le force dans un set analysis, ce qui n'est pas nécessaire vu qu'il est déjà sélectionné. Le seul cas où c'est nécessaire, c'est pour Cartes, Cartes_Certificats_Développement, Certificats, Produits de développement, car si un de ces Produit/Service est sélectionné on force la sélection de tout ces Produit/Service dans le set analysis.
  • Dans mon expression :
    • Le premier If (if(Len(Only(TOTAL [Produits/Services]))>0) permet de vérifier qu'un seul Produit/Service est sélectionné
    • Le deuxième if (if(Match([Produits/Services], 'Cartes', 'Cartes_Certificats_Développement', 'Certificats', 'Produits de développement') > 0) permet de vérifier si on est dans le cas du regroupement. Dans ce cas on force la sélection ({<[Produits/Services]={ 'Cartes', 'Cartes_Certificats_Développement', 'Certificats', 'Produits de développement'}>} ) dans le set analysis
    • Autrement, utilise le Produit/Service qui est sélectionné, pas besoin de le forcer dans le set analysis

Pour la table synthétique, il suffit de modifier le script de l'onglet Main 10 comme suit:

RENAME Field SKILL to SKILL_tmp;
RENAME Field [Ligne Entrée] to [Ligne Entrée tmp];
RENAME Field [Produits/Services] to [Produits/Services tmp];
RENAME Field [Type Produit Service] to [Type Produit Service tmp];
RENAME Field Signification to Signification_tmp;
RENAME Field COMMENTAIRE to COMMENTAIRE_tmp;

Link_SKILL_DateTime_tmp:
LOAD DISTINCT
//
SKILL_tmp & '_' & TimeStamp(Date_Création, 'DD/MM/YYYY hh:mm') AS %Key_SKILL_DateTime,
AutoNumber(
SKILL_tmp & '_' & TimeStamp(Date_Création, 'DD/MM/YYYY hh:mm') & '_' & [Ligne Entrée tmp] & '_' & [Produits/Services tmp] & '_' & Signification_tmp & '_' & COMMENTAIRE_tmp,
'%Key_SKILL_DateTime') AS %Key_SKILL_DateTime
,

TimeStamp
(Date_Création, 'DD/MM/YYYY hh:mm') AS %Key_DateTime,
SKILL_tmp AS SKILL
,
[Ligne Entrée tmp] AS [Ligne Entrée],
[Produits/Services tmp] AS [Produits/Services]  ,
[Type Produit Service tmp] AS [Type Produit Service],
Signification_tmp AS Signification,
COMMENTAIRE_tmp AS COMMENTAIRE
Resident Prise_Contact_Finale;

Concatenate(Link_SKILL_DateTime_tmp)
LOAD DISTINCT
//SKILL_tmp & '_' & TimeStamp(Date_Création, 'DD/MM/YYYY hh:mm') AS %Key_SKILL_DateTime,
AutoNumber(
SKILL_tmp & '_' & TimeStamp(Date_Création, 'DD/MM/YYYY hh:mm') & '_' & [Ligne Entrée tmp] & '_' & [Produits/Services tmp] & '_' & Signification_tmp & '_' & COMMENTAIRE_tmp,
'%Key_SKILL_DateTime')
AS %Key_SKILL_DateTime
,
TimeStamp([Date Appel], 'DD/MM/YYYY hh:mm') AS %Key_DateTime,
SKILL_tmp AS SKILL
,
[Ligne Entrée tmp] AS [Ligne Entrée],
[Produits/Services tmp] AS [Produits/Services]  ,
[Type Produit Service tmp] AS [Type Produit Service],
Signification_tmp AS Signification,
COMMENTAIRE_tmp AS COMMENTAIRE
Resident Appel;

DROP Field SKILL_tmp;
DROP Field [Ligne Entrée tmp];
DROP Field [Produits/Services tmp];
DROP Field [Type Produit Service tmp];
DROP Field Signification_tmp;
DROP Field COMMENTAIRE_tmp;

NoConcatenate
Link_SKILL_DateTime:
LOAD DISTINCT *
Resident Link_SKILL_DateTime_tmp;

DROP Table Link_SKILL_DateTime_tmp;

EXIT Script
;

MauriceLudo
Creator II
Creator II
Author

Merci Sébastien pour ton aide extraordinaire, je ne sais pas si tu fait tes modification dans l'application que j'ai posté et si t'as réussi à avoir le bon chiffres, j'ai appliqué les modifications que tu ma recommandé, mais malheureusement je n'ai pas de chiffres aussi j'ai plus de choix pour produit\service cartes, certificats.

je suis vraiment désolé mais je n'arrive pas à résoudre ce problème.

Voici l'application avec les modification (onglet Indicateur 2 Bis )

Encore une fois merci

MauriceLudo
Creator II
Creator II
Author

Sébastien,

je voudrais supprimer la valeur Cartes_Certificats_Développement de la liste de Produits\Services est j'ai réussi et je voudrais que les valeurs Cartes, Certificats et Produit de développement prennent la valeurs de Cartes_Certificats_Développement pour calculer la somme des appels, avec cette expression

=num(

if(Len(Only(TOTAL [Produits/Services]))>0,

if(Match([Produits/Services], 'Cartes','Certificats', 'Produits de développement') > 0,

sum({<[Produits/Services]={'Cartes_Certificats_Développement'}>} [APPELS OFFERTS]),

sum([APPELS OFFERTS])

)

),

'00')

qd je sélectionne l'une des valeurs Cartes, Certificats et Produit de développement il m'affiche rien alors que qd je sélectionne Cartes_Certificats_Développement il m'affiche bien le résultat attendue.

Merci pour ton aide

sfatoux72
Partner - Specialist
Partner - Specialist

Salut,

Désolé de ne pas avoir répondu plus vite, j'avais un peu moins de disponibilité ces derniers jours.

Tu as modifié la création du champs "%Key_SKILL_DateTime" dans la table "Link_SKILL_DateTime_tmp" (onglet: Main10), mais tu ne l'as pas fait pour les tables "Appel" (onglet: APPELS) et "Prise_Contact_Finale" (onglet: prisedecontacte).

Il faut le faire également, sinon tu n'a plus de lien entre tes tables.

MauriceLudo
Creator II
Creator II
Author

Merci Sébastien, oui j'ai bien remarqué et j'ai corrigé, par contre je suis un peut coincé je n'arrive pas à calculer le nombre des appels pour produit\service : cartes, certificats, et produits de développement,

avec cette expression

=num(

if(Len(Only(TOTAL [Produits/Services]))>0,

if(Match([Produits/Services], 'Cartes','Certificats', 'Produits de développement') > 0,

sum({<[Produits/Services]={'Cartes_Certificats_Développement'}>} [APPELS OFFERTS]),

sum([APPELS OFFERTS])

)

),

'00')

je t'explique, dans la table de correspondance j'ai pas cartes, certificats, et produits de développement, pour le moment on arrive pas les distinguer du coup on met Cartes_Certificats_Développement,

mais qd il faut calculer les nb des appels pour l'une des valeurs il faut prendre Cartes_Certificats_Développement, , quelque soit la valeur ( cartes, certificats, et produits de développement,) le nb total est le meme vu qu'on prend Cartes_Certificats_Développement.

j’espère été claire, merci pour ton aide

sfatoux72
Partner - Specialist
Partner - Specialist

n utilisant ces expressions, ça fonctionne pour moi :

Réceptionné:

=num(
if(Len(Only(TOTAL [Produits/Services]))>0,
sum({<[Produits/Services]={$(=if(Match([Produits/Services], 'Cartes','Certificats', 'Produits de développement') > 0,'Cartes_Certificats_Développement', [Produits/Services]))}>} [APPELS OFFERTS])
),
'00')

Décroché -60 s :

=num(
if(Len(Only(TOTAL [Produits/Services]))>0,
sum({<[Produits/Services]={$(=if(Match([Produits/Services], 'Cartes','Certificats', 'Produits de développement') > 0,'Cartes_Certificats_Développement', [Produits/Services]))}>}  [<-60sec NB])
),
'00')

Pris :

=num(
if(Len(Only(TOTAL [Produits/Services]))>0,
sum({<[Produits/Services]={$(=if(Match([Produits/Services], 'Cartes','Certificats', 'Produits de développement') > 0,'Cartes_Certificats_Développement', [Produits/Services]))}>} [APPELS PRIS])
),
'00')