Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Numéro de semaine ne coincide pas

Bonjour

je charge des données de 2016 avec des dates non formatées. 1 fichier consommation + 1 fichier livraison

champ : [datelivraison]) & [semaineLivraison]

Je charge un script de calendrier que j'associe avec mes dates (ci dessous)

or [datelivraison]) & [semaineLivraison] et mes [Semaine] ne coïncident pas avec mon calendrier . J'ai un  décalage de Numéro de semaine entre mes fichiers et mon calendrier .

De plus je vais intégrer des données en 2017 avec là encore un décalage de Numéro de semaine..

        

donnée du calendrier                                                                      date issues de mes données

Comment résoudre ce problème ?

Merci de vos retours

                 

Calendrier:

// Définir les Dates Min et Max

Let vMinDate = Num(Makedate(2016,1,1));

//Let vMaxDate = Num(Makedate(2016,12,31));

Let vMaxDate = Num(Makedate(Year(Now()),Month(Now()),Day(Now())));

//LET vMinDate = Num(peek('VentesDate',0,'Ventes'));

//LET vMaxDate = Num(peek('VentesDate',-1,'Ventes'));

// Générer toutes les dates possibles entre la date Min et la Date Max

ChampDate:

LOAD date($(vMinDate)+IterNo()-1) AS MaDate

AUTOGENERATE (1)

WHILE $(vMinDate)+IterNo()-1<= $(vMaxDate);

// Créer une table Calendrier qui va contenir les différentes représentations des dates

Calendrier:

LOAD

MaDate AS Date,

Year(MaDate) AS Année,

'T ' & Num(Ceil(Month(MaDate)/3),'(ROM)0') AS Trimestre,

Month(MaDate) as Mois,

MonthEnd(MaDate)as DateFinMois,

Week(MaDate) AS Semaine,

Weekday(MaDate) AS JourSemaine,

Day(MaDate) AS Jour

RESIDENT ChampDate;

//supprimer la table ChampDate

DROP TABLE ChampDate;

//Supprimer les variables vMinDate et vMaxDate

SET vMinDate = ;

SET vMaxDate = ;

1 Solution

Accepted Solutions
Anonymous
Not applicable
Author

Bonjour

Merci c'est exactement ça ça marche d'un seul coup !!

non je n'avais pas ces données par défaut (et je ne touche pas encore aux SET) ...

par défaut j'ai ces données..

SET FirstWeekDay=0;

SET BrokenWeeks=1;

SET ReferenceDay=0;

Faut il que je corrige ces set à chaque nouveau projet ou j'ai des dates? 

ps: pour une question sur les QVD, je refais un post?

View solution in original post

4 Replies
sfatoux72
Partner - Specialist
Partner - Specialist

Tes variables d'environnement contiennent-elles ces 3 variables?

Si oui, sont-elles définie de cette manière?

SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;

Cette configuration qui est normalement celle par défaut de Qlik, définit les semaine avec la norme ISO (Numérotation ISO des semaines — Wikipédia) ce qui à l'air d'être le cas de tes semaine de livraison  ==> 4 janvier 2016 est dans la semaine 1

Anonymous
Not applicable
Author

Bonjour

Merci c'est exactement ça ça marche d'un seul coup !!

non je n'avais pas ces données par défaut (et je ne touche pas encore aux SET) ...

par défaut j'ai ces données..

SET FirstWeekDay=0;

SET BrokenWeeks=1;

SET ReferenceDay=0;

Faut il que je corrige ces set à chaque nouveau projet ou j'ai des dates? 

ps: pour une question sur les QVD, je refais un post?

sfatoux72
Partner - Specialist
Partner - Specialist

Ces variable sont définie par défaut en fonction de votre environnement (setting windows).

OUI, Si vous ne pouvez pas changer les setting de Windows, il faudra toujours les modifiers.

Du coup vérifier les autres setting. Pour info, voici ceux que j'ai par défaut (pour la Suisse) :

SET ThousandSep=' ';
SET DecimalSep='.';
SET MoneyThousandSep=' ';
SET MoneyDecimalSep='.';
SET MoneyFormat='CHF # ##0.00;CHF-# ##0.00';
SET TimeFormat='hh:mm:ss';
SET DateFormat='DD.MM.YYYY';
SET TimestampFormat='DD.MM.YYYY hh:mm:ss[.fff]';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
SET FirstMonthOfYear=1;
SET CollationLocale='fr-CH';
SET MonthNames='janv.;févr.;mars;avr.;mai;juin;juil.;août;sept.;oct.;nov.;déc.';
SET LongMonthNames='janvier;février;mars;avril;mai;juin;juillet;août;septembre;octobre;novembre;décembre';
SET DayNames='lun.;mar.;mer.;jeu.;ven.;sam.;dim.';
SET LongDayNames='lundi;mardi;mercredi;jeudi;vendredi;samedi;dimanche';

OUI, une question par post 😉

dtronel
Contributor III
Contributor III

Afin de compléter la réponse de Sébastien et faciliter la gestion des "SET et LET" communs à chaque début de script, une solution simple consiste à les centraliser tous dans un simple fichier .Txt au format ASCI I (par exemple <C:\monchemin\monfichierSETLET.txt>, puis de ne rappeler en début de chaque script via l'instruction :

en chemin "absolu" :

$(Include=C:\monchemin\monfichierSETLET.txt);

ou en chemin "relatif", par exemple si tes applis se trouvent dans C:\monchemin\mesapplis :

$(Include=..\monfichierSETLET.txt);

Fait une recherche sur le mot clé INCLUDE dans la communauté ou directement dans l'aide intégrée :

$(Include =filename )

$(Must_Include =nomdefichier )

Les variables include et must_include indiquent un fichier qui contient le texte à inclure dans le script. Le script entier peut ainsi être mis dans un fichier. Il s'agit d'une variable définie par l'utilisateur.

Les variables include et must_include se différencient par le fait que include se solde par un échec silencieux si le fichier est introuvable pendant le rechargement du script tandis que must_include génère une erreur lorsque cette situation se produit.

Exemples :

$(Include=abc.txt);

$(Must_Include=def.txt);

En d'autres termes, la construction set Include =nomdefichier n'est pas applicable.