2 Replies Latest reply: Mar 26, 2015 5:16 AM by Gilles Colombari RSS

    Nettoyage et regroupement de durée

    Gilles Colombari

      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

      interval match.jpg

      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

        • Re: Nettoyage et regroupement de durée
          Henric Cronström

          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;

          Image1.png