2 Replies Latest reply: Jan 6, 2017 8:40 AM by Anne-Flore Guillard RSS

    Différence entre Applymap et Map using

    Anne-Flore Guillard

      Bonjour,

       

      Je ne comprend pas quand il faut utiliser map using ou applymap. Je pensais que Applymap ne pouvait pas être utilisé pour mapper autre chose qu'une expression or je viens de tester et ça fonctionne avec une valeur de champ :

       

      Map_1:
      Mapping LOAD
      N°_Client as ID_Client,
      Nom_Client

      FROM [Liste Clients.xlsx]
      (
      ooxml, embedded labels, table is Clients);

      Directory;

      Ventes:
      LOAD Date_Commande,
      Commande,
      Réf_Produit,
      Applymap('Map_1',ID_Client) as Nom_Client,
      Volume,
      Year(Date_Commande) as Année,
      Month(Date_Commande) as Mois,
      Date(Monthstart(Date_Commande), 'MMM-YYYY') as AnnéeMois

      FROM Etat des ventes_2016.xlsx
      (
      ooxml, embedded labels, table is Ventes) where (Réf_Produit <> '2AT2');

      Par ailleurs, est-ce nécessaire de renommer le champ 'N°_Client' de la table Map_1 comme celui à remplacer dans la table Ventes ('ID_Client')?


      Merci de vos éclaircissements.


      Anne-Flore

        • Re: Différence entre Applymap et Map using
          Sébastien Fatoux

          Bonjour Anne -Flore,

           

          Un nom de champ est une expression, une expression simple qui retourne la valeur du champ.

           

          Avec "Map ... Using ...", le mappage est effectué en dernier dans la chaîne des événements qui conduisent au stockage du champ dans la table interne de QlikView. Cela signifie que le mappage n'est pas effectué à chaque fois qu'un nom de champ est rencontré dans une expression, mais plutôt lorsque la valeur est stockée sous ce nom de champ dans la table interne. Si le mappage au niveau de l'expression est requis, la fonction Applymap() doit être utilisée à la place.

           

          La partie en italique vient de l'aide de QlikView. Je pense que "Map ... Using ..." doit être plus performant (mais c'est à vérifier).

          L'avantage de ApplyMap(), c'est que lui donne une valeur à mapper (expression) et que l'on peut lui donner une valeur par défaut.

           

          Le nom des champs d'une table de mapping n'a aucune importance. Il faut simplement 2 champs, le premier étant utiliser comme clé de mapping et le second comme valeur à retourner.