Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour.
J'ai crée une liste de jours fériés dynamique en fonction des dates chargées:
Let listeFeries = Null();
Set DateDebut = =Year(Min($(CreationDate_Field)));
Set DateFin = =Year(Max($(CreationDate_Field)));
For Annee=DateDebut To 2017
listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 1, 1) & chr(39); // Jour de l'an
listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 5, 1) & chr(39); // Fete du travail 1er Mai
listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 5, 😎 & chr(39); // Armistice 1945 8 Mai
listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 7, 14) & chr(39); // Fete National 14 Juillet
listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 8, 15) & chr(39); // Assomption 15 Aout
listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 11, 1) & chr(39); // Toussaint 1er Novembre
listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 11, 11) & chr(39); // Armistice 1918 11 Novembre
listeFeries=listeFeries & ',' & chr(39) & makedate($(Annee), 12, 25) & chr(39); // Noel
DatePaques = Date(Round(makedate($(Annee),4,day(Minute($(Annee)/38)/2+55))/7)*7-6); // Dimanche de Paques
listeFeries=listeFeries & ',' & chr(39) & DatePaques & chr(39); // Dimanche de Paques
listeFeries=listeFeries & ',' & chr(39) & Date((DatePaques + 1), 'DD/MM/YYYY') & chr(39); // Lundi de Paques
listeFeries=listeFeries & ',' & chr(39) & Date((DatePaques + 39), 'DD/MM/YYYY') & chr(39); // Jeudi de l'Ascension
listeFeries=listeFeries & ',' & chr(39) & Date((DatePaques + 49), 'DD/MM/YYYY') & chr(39); // Dimanche de Pentecote
listeFeries=listeFeries & ',' & chr(39) & Date((DatePaques + 50), 'DD/MM/YYYY') & chr(39); // Lundi de Pentecote
Next
Let listeFeries = Mid(vlisteFeries,2);
let DatePaques = Null();
Let Annee = Null();
Ce script marche très bien, mais comme vous le voyez, j'ai saisi la date 2017 en dur dans la boucle for. Je ne comprends pas pourquoi ceci: For Annee=DateDebut To DateFin , me renvoie une erreur:
Syntax error
Unexpected token: '1', expected nothing
listeFeries=listeFeries & ',' & chr(39) & makedate(-, >>>>>>1<<<<<<, 1) & chr(39)
Du coup je ne peux pas avoir de borne supérieure dynamique ce qui m’embête.
Cordialement
Même erreur...
C'est bizarre. Rien que la ligne que tu m'as écrite renvoie l'erreur:
Syntax error
Unexpected token: ')', expected nothing
Let DateDebut = Year(Min(Date([Date de création],'DD/MM/YYYY'))>>>>>>)<<<<<<
Une dernière idée, on ne sait jamais... :
=Year(Min($("CreationDate_Field")));
Sinon désolé mais je ne vois pas...
Kevin
Bonjour,
pour commencer, les fonctions d'agrégation (Max, Min, Sum, ...) peuvent être utilisées dans un script de chargement, mais uniquement dans un LOAD (pour faire référence à un jeu de données ) avec un "Group By" (pour qu'il y aie agrégation )
Si tu veux stocker le résultat d'une expression dans une variable il faut utiliser LET à la place de SET .
Il faut donc utiliser un LOAD pour calculer ton Min et ton Max suivi de LET pour récupérer tes valeur comme tu la fait plusieurs fois dans ton script et comme te l'avait dit Jean Eude.
Tu lui avais répondu que tu ne pouvais pas le faire car la table était chargée bien plus tard dans ton script. Si c'est le cas, sur quelles données comptais-tu utiliser tes expressions?
Bertrand,
Tu ne devrais pas mettre ta variable Annee après ton Next ?
Et Let listeFeries = Mid(ListeFeries,2); au lieu de Let listeFeries = Mid(vlisteFeries,2);
Kevin
Bonjour Bertrand,
Ton script ne fonctionnait pas chez moi.
Je l'ai donc adapté. Changes 2014 et 2017 par tes variables, logiquement ça devrait être bon.
// Jours fériés fixes
Let Annee='';
Let An='';
Let Travail='';
Let ArmisticeMai='';
Let National='';
Let Assomption='';
Let Toussaint='';
Let ArmisticeNovembre='';
Let Noel='';
For Annee = 2014 TO 2017
An=An & ',' & chr(39) & makedate($(Annee), 1, 1) & chr(39); // Jour de l'an
Travail=Travail & ',' & chr(39) & makedate($(Annee), 5, 1) & chr(39); // Fete du travail 1er Mai
ArmisticeMai=ArmisticeMai & ',' & chr(39) & makedate($(Annee), 5, 😎 & chr(39); // Armistice 1945 8 Mai
National=National & ',' & chr(39) & makedate($(Annee), 7, 14) & chr(39); // Fete National 14 Juillet
Assomption=Assomption & ',' & chr(39) & makedate($(Annee), 8, 15) & chr(39); // Assomption 15 Aout
Toussaint=Toussaint & ',' & chr(39) & makedate($(Annee), 11, 1) & chr(39); // Toussaint 1er Novembre
ArmisticeNovembre=ArmisticeNovembre & ',' & chr(39) & makedate($(Annee), 11, 11) & chr(39); // Armistice 1918 11 Novembre
Noel=Noel & ',' & chr(39) & makedate($(Annee), 12, 25) & chr(39); // Noel
Next
// Jours fériés variables
Let DatePaques='';
Let PaquesLundi='';
Let Ascension='';
Let Pentecote='';
Let PentecoteLundi='';
For Annee = 2014 to 2017
DatePaques =DatePaques & ','& chr(39) & Date(Round(makedate($(Annee),4,day(Minute($(Annee)/38)/2+55))/7)*7-6) & chr(39); // Dimanche de Paques
PaquesLundi =PaquesLundi & ','& chr(39) & (Date(Date(Round(makedate($(Annee),4,day(Minute($(Annee)/38)/2+55))/7)*7-6)+1,'DD/MM/YYYY')) & chr(39); // Lundi de Paques
Ascension =Ascension & ','& chr(39) & (Date(Date(Round(makedate($(Annee),4,day(Minute($(Annee)/38)/2+55))/7)*7-6)+39,'DD/MM/YYYY')) & chr(39); // Jeudi de l'Ascension
Pentecote =Pentecote & ','& chr(39) & (Date(Date(Round(makedate($(Annee),4,day(Minute($(Annee)/38)/2+55))/7)*7-6)+49,'DD/MM/YYYY')) & chr(39); // Dimanche de Pentecote
PentecoteLundi =PentecoteLundi & ','& chr(39) & (Date(Date(Round(makedate($(Annee),4,day(Minute($(Annee)/38)/2+55))/7)*7-6)+50,'DD/MM/YYYY')) & chr(39); // Lundi de Pentecote
Next
// Tous les jours fériés dans une seule variable
Let listeFeries = mid(An & Travail & ArmisticeMai & National & Assomption & Toussaint & ArmisticeNovembre & Noel & DatePaques & PaquesLundi & Ascension & Pentecote & PentecoteLundi, 2);
// Raz des variables
Let Annee = '';
Let An='';
Let Travail='';
Let ArmisticeMai='';
Let National='';
Let Assomption='';
Let Toussaint='';
Let ArmisticeNovembre='';
Let Noel='';
Let DatePaques='';
Let PaquesLundi='';
Let Ascension='';
Let Pentecote='';
Let PentecoteLundi='';
Kevin
Bonjour Sébastien.
Je veux bien faire quelque chose comme ça:
TempDate:
Load
min($(CreationDate_Source)) as minDate,
max($(CreationDate_Source)) as maxDate
Resident '$(TableName_Source)';
Mais quelle table prendre en "resident" puisque je ne charge la requête SQL qu'après. Quelque chose m'échappe.
Bonjour Bertrand,
As-tu testé ma dernière solution ?
Kevin
Oui. Mais elle présente le même problème. A savoir, les années en dures que je ne parviens pas à dynamiser.
Ok... Et ta table tu peux pas la charger avant puis la drop ?
Et question bête : pourquoi tu veux générer des jours fériés par rapport alors que tu utiliseras les mêmes au global ?
Kevin