Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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
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.
Bonjour Florent,
J'ai un message d'erreur au chargement mais concernant nouveaux_date_paiement :
Field not found - <nouveaux_date_paiement>
JOIN
LOAD resultant_date_paiement as rf_date_paiement,
Resident Resultant
WHERE resultant_date_paiement > nouveaux_date_paiement
En fait on dirait qu'il oublie le premier LOAD, donc il ne peut pas faire la comparaison...
tu peux joindre ton appli et une partie des fichiers que tu charges (les champs concernés) ?
je pourrai faire des tests...
Florent.
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
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
bonjour donne ton script, il doit manqué des caractères.
A+
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
essaye avec
....where resultant_date_paiement > '$(Vmax)';
Parfait ça marche comme ça !
A moi de voir maintenant si ce script génère bien les chiffres que j'attends. En tout cas merci beaucoup pour ton aide précieuse !