9 Replies Latest reply: Aug 25, 2016 9:10 AM by Jean-François Sublet RSS

    Resident load

    Jean-François Sublet

      Bonjour,

       

      Je cherche à effectuer une comparaison entre des données de 2 tables déjà chargées précédemment dans le script.

      Je charge dans un premier temps les nouveaux clients, avec des jointures entre plusieurs tables et des conditions.

      Puis je cherche à obtenir des données résultantes de ces nouveaux clients (le CA qu'ils génèrent...). Je veux donc dire que la date_paiement concernant ces données résultantes doit être supérieure à la date de paiement du 1er achat.

       

      Aperçu du script :

       

      //table 1

      NouveauxClients:

      LOAD

                "date_paiement" as nouveaux_date_paiement,

                "date_creation_compte" as nouveaux_date_creation_compte;

      SQL SELECT

                date_paiement,

                date_creation_compte

      FROM

          source1

      JOIN

          source2

      ON...

      WHERE date_paiement > date_creation_compte

      AND............;

       

      //table 2

      Resultant:

      LOAD

          "date_paiement" as resultant_date_paiement;

      SQL SELECT

          date_paiement

      FROM

          source1

      JOIN

          source2

      ON...

      WHERE...;

       

      //table finale de comparaison

      Resultantfinal:

      LOAD

          nouveaux_date_paiement

      Resident NouveauxClients;

      JOIN

      LOAD

          resultant_date_paiement as rf_date_paiement

      Resident Resultant

      WHERE rf_date_paiement > nouveaux_date_paiement;

       

      Le problème c'est qu'il ne reconnait pas nouveaux_date_paiement dans la dernière table.

      Je sais que c'est normal car le premier LOAD est terminé par un ";" mais je ne vois pas comment faire autrement.

       

      Auriez-vous des idées ?

       

      Merci d'avance

        • Re: Resident load
          Florent Lelarge-Otiniano

          Bonjour Jean-François,

           

          tu n'as pas de message d'erreur au chargement ? car je pense déjà que rf_date_paiement n'est pas encore connu à ce stade, je mettrai plutôt resultant_date_paiement dans le where...

           

          Florent.

          • Re: Resident load
            Frédéric MANTE

            bonjour,

            essaye ce code:

            Table1:

            LOAD * INLINE [

                F1

                0

                2

            ];

             

            Table2:

            load * INLINE [

                F2

                1

                2

                3

                4

            ];

             

            temp:

            load max(F1) as F1max resident Table1;

            Let Vmax = peek('F1max',0,'temp');

            drop table temp;

             

            Tablefinal:

            noconcatenate Load F1 resident Table1;

            outer Join load F2 resident Table2 where F2 > $(Vmax);

             

            drop table Table1;

            drop table Table2;

             

            cdt

              • Re: Resident load
                Jean-François Sublet

                Bonjour,

                 

                Ce code me donne une erreur de script :

                Garbage after statement

                outer Join LOAD resultant_date_paiement resident Resultant where resultant_date_paiement > 42607,095280475

                  • Re: Resident load
                    Frédéric MANTE

                    bonjour donne ton script, il doit manqué des caractères.

                    A+

                      • Re: Resident load
                        Jean-François Sublet

                        Voilà mon script :


                        NouveauxClients:

                        LOAD Date(Date("date_paiement" , 'DD/MM/YYYY')) As date,

                        Day(Date("date_paiement" , 'DD/MM/YYYY')) As Jour,

                        Year(Date("date_paiement" , 'DD/MM/YYYY')) As Annee,

                        Week(Date("date_paiement" , 'DD/MM/YYYY')) As Semaine,

                        Month(Date("date_paiement" , 'DD/MM/YYYY')) As Mois,

                        "date_paiement" as nouveaux_date_paiement,

                        "date_creation_compte" as nouveaux_date_creation_compte;

                        SQL SELECT co.date_paiement,

                        cli.date_creation_compte

                        FROM *************** as cli

                        JOIN *************** as co

                        ON cli.code_client = co.code_client

                        WHERE co.date_paiement > cli.date_creation_compte;

                         

                         

                        Resultant:

                        LOAD Date(Date("date_paiement" , 'DD/MM/YYYY')) As date,

                        Day(Date("date_paiement" , 'DD/MM/YYYY')) As Jour,

                        Year(Date("date_paiement" , 'DD/MM/YYYY')) As Annee,

                        Week(Date("date_paiement" , 'DD/MM/YYYY')) As Semaine,

                        Month(Date("date_paiement" , 'DD/MM/YYYY')) As Mois,

                        "date_paiement" as resultant_date_paiement,;

                        SQL SELECT date_paiement,

                        FROM ***************;

                         

                        temp:

                        LOAD max(nouveaux_date_paiement) as nouveaux_date_paiementmax resident NouveauxClients;

                        Let Vmax = peek('nouveaux_date_paiementmax',0,'temp');

                        drop table temp;

                         

                         

                        Tablefinale:

                        NoConcatenate LOAD nouveaux_date_paiement resident NouveauxClients;

                        outer Join LOAD resultant_date_paiement resident Resultant where resultant_date_paiement > $(Vmax);

                         

                        drop table Resultant;

                         

                        (je ne fais pas de drop table sur la table NouveauxClients car elle me sert pour d'autres calculs dans mon graphique)

                        Merci de ton aide