Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour à tous
J'ai un problème de remplacement de valeur
Dans une table j'ai un champ "Indicateurs" dans lequel j'ai une Valeur 'Pause' répéter deux fois.
pour chaque nom en effet j'ai une fois la valeur 'Pause' en gras dans mon tableau qui se trouve toujours sous la valeur 'Post-travail' .
Cette valeur Pause en Gras correspond à la somme dans valeur qui se trouve en dessous
Je cherche à remplacer cette valeur Pause par 'HorsProd'
Nom | Indicateurs | Nombre | Temps |
Nom1 | Attente | 5 | 0h29'19 |
Nom1 | Traitement | 5 | 0h53'03 |
Nom1 | Appel entrant | 5 | 0h53'03 |
Nom1 | Post-travail | 5 | 0h12'23 |
Nom1 | Pause | 1 | 0h01'03 |
Nom1 | Pause | 1 | 0h01'03 |
Nom2 | Attente | 18 | 1h23'36 |
Nom2 | Traitement | 20 | 2h09'32 |
Nom2 | Appel entrant | 16 | 1h51'47 |
Nom2 | Rappel | 2 | 0h17'24 |
Nom2 | Numérotation | 2 | 0h00'21 |
Nom2 | Post-travail | 18 | 0h42'05 |
Nom2 | Pause | 3 | 0h29'21 |
Nom2 | Pause | 1 | 0h00'13 |
Nom2 | Personnelle | 2 | 0h29'08 |
Dans un premier temps avec l'aide de la communauté j'ai pu y arriver grâce au champs Nombre en ajoutant un flag max(nombre) et une clause where
Ca marche si la valeur Nombre de Pause est > à al veleur Nombre de Pause ( Nom2)
Mais voir Nom1
Si la Valeur du champ Nombre Pause est égale à la valeur du champ Nombre Pause çà ne fonctionne plus
Aussi ma question est comment modifier le champ INDICATEURS pour remplacer le texte Pause qui est toujours en dessous de la valeur Post-travail par la valeur 'HorsProd' ?
Merci par avance pour votre aide
Hello,
En partant du principe que c'est toujours la valeur qui se trouve en dessous de 'Post-travail' qu'il faut remplacer et que ton load order est OK (on peut modifier code facilement si ce n'est pas le cas) alors essaye par exemple ceci:
DataTemp: Load * Inline [ Nom,Indicateurs,Nombre,Temps Nom1,Attente,5,0h29'19 Nom1,Traitement,5,0h53'03 Nom1,Appel entrant,5,0h53'03 Nom1,Post-travail,5,0h12'23 Nom1,Pause,1,0h01'03 Nom1,Pause,1,0h01'03 Nom2,Attente,18,1h23'36 Nom2,Traitement,20,2h09'32 Nom2,Appel entrant,16,1h51'47 Nom2,Rappel,2,0h17'24 Nom2,Numérotation,2,0h00'21 Nom2,Post-travail,18,0h42'05 Nom2,Pause,3,0h29'21 Nom2,Pause,1,0h00'13 Nom2,Personnelle,2,0h29'08 ]; NoConcatenate Data: Load Nom, Nombre, Temps, if(Nom = peek(Nom),if(previous(Indicateurs)='Post-travail','Hors-Prod',Indicateurs),Indicateurs) as Indicateurs Resident DataTemp; drop table DataTemp;
Hello,
En partant du principe que c'est toujours la valeur qui se trouve en dessous de 'Post-travail' qu'il faut remplacer et que ton load order est OK (on peut modifier code facilement si ce n'est pas le cas) alors essaye par exemple ceci:
DataTemp: Load * Inline [ Nom,Indicateurs,Nombre,Temps Nom1,Attente,5,0h29'19 Nom1,Traitement,5,0h53'03 Nom1,Appel entrant,5,0h53'03 Nom1,Post-travail,5,0h12'23 Nom1,Pause,1,0h01'03 Nom1,Pause,1,0h01'03 Nom2,Attente,18,1h23'36 Nom2,Traitement,20,2h09'32 Nom2,Appel entrant,16,1h51'47 Nom2,Rappel,2,0h17'24 Nom2,Numérotation,2,0h00'21 Nom2,Post-travail,18,0h42'05 Nom2,Pause,3,0h29'21 Nom2,Pause,1,0h00'13 Nom2,Personnelle,2,0h29'08 ]; NoConcatenate Data: Load Nom, Nombre, Temps, if(Nom = peek(Nom),if(previous(Indicateurs)='Post-travail','Hors-Prod',Indicateurs),Indicateurs) as Indicateurs Resident DataTemp; drop table DataTemp;
Bonjour
Merci beaucoup pour ta solution .
De mon coté j'avais finalement trouvé ceci
if(previous(INDICATEURS) ='Post-travail',replace(INDICATEURS,'Pause','Hors_Prod'),INDICATEURS) as [INDICATEURS]
Mais je vais testé ta proposition
Bruno
Hello Bruno,
Ne connaissant pas le contexte de tes data, tu peux probablement dans ma solution proposée te passer du premier test if (test sur le nom précédent).
Belle journée.
Ray