Bonjour a tous,
et merci d'avance pour votre aide (j’espère pouvoir vous aider a mon tour sur le forum prochainement )
Je suis un novice dans le monde de la B.I est donc sur Qlikview mais j'ai commencer a faire des reportings intéressant pour ma société sauf que la je trouve pas la solution a mon problème et je tourne au rond le problème est le suivant :
Au début j'ai quelques choses qui marche plutôt bien sauf qu'il faut a chaque fois recharger les données pour que le set analysis soit prit en compte dans le script (donc les valeur dans le tableau) :
LOYERPALIERMAX:
SQL SELECT
ID_CLEBAIL,
Max(LOYERPALIER_MANNUEL) as DernierLoyerProgressif
FROM "dwh".dbo."LOYERPALIER"
where LOYERPALIER_DFIN >= $(vDATEANALYSE)
GROUP BY ID_CLEBAIL;
Dans mon tableau j'ai juste a faire la somme de ce montant dans l'expression de la colonne :
Sum(DernierLoyerProgressif)
Le problème avec cette méthode, c'est que lorsque un utilisateur modifie la date pour voir les données changer dynamiquement via l'objet calendrier alors il se passe rien tant qu'on recharge par les données ce qui est pas possible via l'accès web de Qlikview ...donc pour que la date qui est modifier par l’utilisateur soit prise en compte, j'ai comprit qui fallait mettre la variable set analysis non pas dans le script mais dans l'expression du tableau de cette manière :
Sum(if((LOYERPALIER_DFIN >= $(vDATEANALYSE)),DernierLoyerProgressif)),
le problème est que pour ajouter la valeur de date (LOYERPALIER_DFIN) dans mon expression je suis obligé de l'indiquer dans le script. Donc, lorsque j’essaye de rajouter la valeur date LOUYERPALIER_DFIN est que je lance le chargement Qlikview m'indique que c'est pas possible parce qu’il y a pas d’agrégation ou de GROUP BY pour LOYERPALIER_DFIN et quand je l'ajoute dans le GROUP BY j'ai des montants incohérent dans mon tableau donc je sais pas comment l'ajouter :
LOYERPALIERMAX:
SQL SELECT
LOYERPALIER_DFIN, // rajout de la valeur de date
ID_CLEBAIL,
Max(LOYERPALIER_MANNUEL) as DernierLoyerProgressif
FROM "dwh".dbo."LOYERPALIER"
GROUP BY ID_CLEBAIL;
message d'erreur :
SQL##f - SqlState: 37000, ErrorCode: 8120, ErrorMsg: [Microsoft][ODBC SQL Server Driver][SQL Server]La colonne 'dwh.dbo.LOYERPALIER.LOYERPALIER_DFIN' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
LOYERPALIERMAX:
SQL SELECT
ID_CLEBAIL,
LOYERPALIER_DFIN,
Max(LOYERPALIER_MANNUEL) as DernierLoyerProgressif
FROM "dwh".dbo."LOYERPALIER"
GROUP BY ID_CLEBAIL
Lorsque j’essaye de contourner le problème pour faire dans le script avec la commande LOAD j ‘ai un autre message d’erreur :
LOAD "LOYERPALIER_DDEBUT",
"LOYERPALIER_DFIN",
Max (LOYERPALIER_MANNUEL) as DernierLoyerProgressif,
"ID_CLEBAIL";
SQL SELECT *
FROM "dwh".dbo."LOYERPALIER";
Message d'erreur :
Échec de lecture ODBC
SQL SELECT *
FROM "dwh".dbo."LOYERPALIER"
Pourtant, j'ai un autre colonne dans mon tableau mais sans l'agrégation max dans le script et ça marche très bien dans mon tableau des que je modifie la date dans le calendrier les valeurs sont modifier de manière dynamique :
LOAD "LOYERFRANCHISE_DDEBUT", // date de debut de loyer
"LOYERFRANCHISE_DFIN", // date de fin de loyer
"LOYERFRANCHISE_MANNUEL", // montant du loyer de franchise
"ID_CLEBAIL"; // clé pour la jointure avec un autre table
SQL SELECT *
FROM "dwh".dbo."LOYERFRANCHISE";
et dans l'expression du tableau, je met ceci :
Sum(if(LOYERFRANCHISE_DDEBUT<=$(vDATEANALYSE) and (LOYERFRANCHISE_DFIN >= $(vDATEANALYSE)),LOYERFRANCHISE_MANNUEL))
Donc effectivement je pense que la solution est dans le chargement du script et trouver une solution pour charger à la fois l’agrégation MAX sur LOYERPALIER_MANNUEL et la date LOYERPALIER_FIN, pour permettre que cette variable soit par la suite dynamique via ceci : Sum(if((LOYERPALIER_DFIN >= $(vDATEANALYSE)),DernierLoyerProgressif)),
J’espère qu'une solution a mon problème et je vous remercie d'avance pour vos réponses
@+
Partager