Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour tout le monde
Bonjour,
J'ai le même souci pour faire afficher des périodes vide dans un graphique.
J'ai utilisé un calendrier (généré dans Qlik directement ou dans Excel) pour le lié à mes données, ça m'a permis de faire apparaître des périodes vides.
Bonjour,
Par contre, je fais tout ça dans Qlik Sense, j’espère que ça ira quand même.
Donc le fichier Excel est simple, il contiens juste mois et année, donc dans ton cas semaine et année. Puis je force le lien pour affecter a chaque article un mois et année :
ArticleCalendrier : LOAD
Mois
Année,
FROM [lib://Data serveur/calendrier jour.xlsx]
(ooxml, embedded labels, table is Feuil1)
join
LOAD
only(REFERENCE) as REFERENCE
resident Article
group by REFERENCE;
Puis je relie ça à mes mouvements :
Load
REFERENCE & Année & Mois as CLE,
REFERENCE,
Mois,
Année,
resident ArticleCalendrier;
left join
LOAD
REFERENCE & Année & Mois as CLE,
Qte_MVT_FabSortie,
Qte_MVT_FabJRS,
Qte_MVT_FabEnt,
Qte_MVT_Achat,
Qte_MVT_Vente,
Qte_MVT_Regul,
resident MVT;
Et je me créé une clé pour faire le lien en concatenant Ref + anneé + Mois.
Bonjour,
Pour ce que tu cherches à faire, il te faut à mon avis un master calendar.
Lien : https://community.qlik.com/t5/QlikView-Documents/Master-Calendar-Generation-Script/ta-p/1477450
Lien vidéo pour démonstration : https://www.youtube.com/watch?v=dIr-AR6dAps
cordialement.
Ok, essaie plutôt ce script construit sous forme de routine (tu peux le modifier à ta guise pour qu'il corresponde à tes besoins):
SUB MasterCalendarIn(D,Table) // début de la routine
TRACE La table RESIDENT contenant le champ date $(D) se nomme $(Table);
// Calcul du minimum et du maximum
[Temp]:
LOAD
MIN([$(D)]) AS StartDate,
MAX([$(D)]) AS EndDate
RESIDENT [$(Table)];
// Récupération du Min et du Max
LET vStartDate = Num(Peek('StartDate', 0, 'Temp'));
LET vEndDate = Num(Peek('EndDate' , 0, 'Temp'));
// Listing en continue de toutes les dates dans l'intervalle
[TempCalendar]:
LOAD
DATE($(vStartDate) + RowNO() - 1) AS TempDate
AutoGenerate
$(vEndDate) - $(vStartDate) + 1;
QUALIFY*;
UNQUALIFY [$(D)]; // clé isolé
// Création du MasterCalendar
[Calendar.$(D)]:
LOAD
TempDate AS [$(D)],
Week(TempDate) AS Week,
YEAR(TempDate) AS Year,
Month(TempDate) AS Month,
WEEKDAY(TempDate) AS Weekday,
Dual('Q' & CEIL(Month(TempDate)/3), CEIL(Month(TempDate)/3)) AS Quater
RESIDENT [TempCalendar] ;
UNQUALIFY*;
// Une jointure naturelle du Calendrier à la table de référence
JOIN([$(Table)])
LOAD
*
RESIDENT [Calendar.$(D)];
// Suppression tables temporaires
DROP TABLES
[Temp],
[TempCalendar],
[Calendar.$(D)]
;
END SUB // fin de la routine
// Utilisation de la routine
CALL MasterCalendarIn('Date','Fait');
Assure-toi de n'avoir dans ta table de travail que le ou les champs de type date de référence (du type 27/02/2018). Du coup tu ne charges pas dans ta table Fait les champs de type Année, Week, Week2,etc qui sont associés à ton champ Date.
cordialement.
le champs Week ne s'affiche pas je les enlever comme tu ma conseillé mais toujours j'ai pas les semaines manquante dans mon tableau
il étais comme ça