Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
ghilenasma
Contributor III
Contributor III

afficher les semaine sans besoin (besoin est 0) semaine 51

Bonjour tout le monde 

 
 
j'ai un souci pour afficher les semaine sans besoin du stock  pour un article 
dans le premier exemple la semaine 51 s'affiche 
2019-05-15_12h49_36.png
dans le deuxième tableau j'ai pas la semaine 
2019-05-15_12h50_45.png
je veux crée une ligne entre 201850 et 201852 qui contient 201851 
je suis ouverte a toutes proposition idée moi , Merci d'avance 
 
Cordialement 
 
10 Replies
ddocquoy
Contributor II
Contributor II

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.

ghilenasma
Contributor III
Contributor III
Author

Merci Pour ta repense , peut tu me montrer plus de détail ou le fichier Qlik que tu a utilisé et pou le fichier Excel contient tes données sources !!
ddocquoy
Contributor II
Contributor II

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.

 

 

 

ghilenasma
Contributor III
Contributor III
Author

malheureusement que ça me doublé les lignes sans me données le résultat souhaité
Seyko
Partner - Creator
Partner - Creator

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.

Excuse my english, i'm french!
ghilenasma
Contributor III
Contributor III
Author

merci pour le lien et la réponse , j'ai passer 2 jours a testé mais rien j'ai pas afficher toutes les dates
voila le code
Fait:
LOAD Article,
[Désignation article],
[Entrée/besoin],
Date,
Div.,
Week,
Année,
TyAr,
[MRP. Date Extract],
Origine,
[Gpe march.externe],
Item,
Week2,
MRP.WeekExtract,
CtrPr,
[Don. ordre],
[Nom Client],
Source,
[Date cpt.],
Qty,
Mvt,
[Sold To Name],
Réception.,
[Ship To Name],
DateExctractMRP,
QtyBefore,
QtyAfter
FROM
[\\tisfiler\notepad\asmaQ\Waterfall\Projet MRP BMS\QVD\Fait.qvd]
(qvd);

//left join
CalendarMaster:

LOAD

Date(Date) AS Date,

Year(Date) AS Year,

'Q' & Ceil(Month(Date) / 3) AS Quarter,

Month(Date) As Month,

Day(Date) As Day,

Week(Date) As Week;

Load Date(MinDate + IterNo() -1 ) AS Date While (MinDate + IterNo() - 1) <= Num(MaxDate);

Load

Min(Date) AS MinDate,

Max(Date) AS MaxDate

RESIDENT Fait;
Seyko
Partner - Creator
Partner - Creator

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.

Excuse my english, i'm french!
ghilenasma
Contributor III
Contributor III
Author

fff.PNGgg.PNG

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

2019-06-04_14h55_45.png 

Seyko
Partner - Creator
Partner - Creator

Alors, on va utiliser la routine script autrement. Modifie la pour qu'elle ne fasse pas de jointure de ton master calendar à ta table de faits! Si tes semaines manquantes apparaissent , c'est OK (elles auront bien été définies dans ton master calendar).

cordialement.
Excuse my english, i'm french!