Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
Je travaille sur une application de traçabilité de palettes.
Dans la base de données, j'ai pour chaque palette une liste de durées qu'il faut nettoyer et regrouper.
Je n'arrive pas à trouver la bonne façon de faire ça avec Qlikview.
Par exemple, j'ai le cas suivant. Je veux passer des données brutes aux données nettoyées en utilisant les règles
De plus, je vais avoir besoin de trier les données nettoyées suivant le champ ordre du tableau de règles.
J'ai essayé plusieurs techniques : Macros, procédure sub dans le script, Interval match mais aucune solution ne donne satisfaction. La plus proche est la macro mais j'ai des comportements étranges (mélange de variables)
function FormateDureeJour(pDuree)
if pDuree =("N/A") then
FormateDureeJour = "Donnée Absente|0"
elseif pDuree < 0 then
FormateDureeJour = "Erreur|1"
elseif pDuree >=1 and pDuree <15 then
FormateDureeJour = "de 1 à 15|2"
elseif pDuree >=16 and pDuree <25 then
FormateDureeJour = "de 16 à 25|3"
elseif pDuree >=26 and pDuree <40 then
FormateDureeJour = "de 26 à 40|4"
else FormateDureeJour = "sup à 40|5"
end if
end function
Merci pour votre aide.
Gilles
Intervalmatch est la meilleure solution. Utilisez le script ci-dessous, et créez un tableau croisé dynamique comme dans l'image.
HIC
tmpRègles:
Load * Inline
[Min, Max, Texte
0,0,N/A
-9999,-1, Erreur
1,15,de 1 à 15
16,25, de 16 à 25
26,39,de 26 à 39
40,99999, plus de 40];
tmpDonnées:
Crosstable (Durée, Valeur,1) Load * Inline
[Palette, Durée 1, Durée 2, Durée 3
A, 15, 12, 55
B, -60, 27,
C, 0, 15, 20];
Left Join (tmpDonnées) IntervalMatch (Valeur) Load Min, Max Resident tmpRègles;
Left Join (tmpDonnées) Load * Resident tmpRègles;
Drop Table tmpRègles;
Données:
Noconcatenate Load Durée,Max,Min,Palette,Valeur,
If(Len(Texte)>0,Texte,'Manquant') as Texte
Resident tmpDonnées;
Drop Table tmpDonnées;
Intervalmatch est la meilleure solution. Utilisez le script ci-dessous, et créez un tableau croisé dynamique comme dans l'image.
HIC
tmpRègles:
Load * Inline
[Min, Max, Texte
0,0,N/A
-9999,-1, Erreur
1,15,de 1 à 15
16,25, de 16 à 25
26,39,de 26 à 39
40,99999, plus de 40];
tmpDonnées:
Crosstable (Durée, Valeur,1) Load * Inline
[Palette, Durée 1, Durée 2, Durée 3
A, 15, 12, 55
B, -60, 27,
C, 0, 15, 20];
Left Join (tmpDonnées) IntervalMatch (Valeur) Load Min, Max Resident tmpRègles;
Left Join (tmpDonnées) Load * Resident tmpRègles;
Drop Table tmpRègles;
Données:
Noconcatenate Load Durée,Max,Min,Palette,Valeur,
If(Len(Texte)>0,Texte,'Manquant') as Texte
Resident tmpDonnées;
Drop Table tmpDonnées;
Merci beaucoup Henric,
C'est parfait.