Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
J'ai fait une formule dans mon application qui marche très bien mais me pose un problème visuel au niveau du champ filtre (onglet vert de la barre supérieur) qui affiche la formule au lieu du libellé que je souhaite.
L'idée de cette formule et de ne faire apparaître que les années où j'ai des données de facturation alors que j'ai d'autres sources dont l'année peut être inférieur ou supérieur aux années facturées.
Ma formule fonctionnelle dans QLIK SENSE est :
If(Year<='$(=max({<Source={'Facturation'}>}Year))',
If(Year>='$(=min({<Source={'Facturation'}>}Year))',
Year
,)
,)
Dans le script de chargement, j'ai réussi à faire quelque chose de similaire mais cette fois ce sont les critères d'année de référence qui sont fixes (2019 et 2023) qui me dérange car j'aimerais faire que ces années soient variables automatiquement d'une année à l'autre (par exemple en 2024, les années fixes seront 2020 et 2024)
Annee:
Load distinct Year as Annee
Resident MasterCalendar
where Year <=2023
and Year >= 2019
;
J'aimerais donc remplacé 2023 par l'année max de la Source = Facturation et 2019 par l'année min de la Source = Facturation. Pouvez-vous m'aider svp ?
J'ai essayé de mettre un where Source = 'Facturation' mais ça n'a pas fonctionné probablement car je ne charge pas la Source dans ce bout de code...
J'ai pensé à une solution alternative qui devrait marcher avec les fonctions year(today()) et un écart d'année fixe mais je voudrais quelque chose de plus propre si possible :
Annee:
Load distinct Year as Annee
Resident MasterCalendar
where Year <=year(today())
and Year >= year(today()) - 4
;
Je vous remercie par avance de votre aide.
Bonsoir,
Si j'ai bien compris le problème, voici ce que je ferais :
1. Charger une table avec les années min et max. Cette table contiendra une seule ligne et deux champs :
Load
Max(Year) as Y_Max,
Min(Year) as Y_Min
from <Source>
where Source='Facturation'
2. Charger ta table source en effectuant une jointure full avec cette table. De cette façon, tu associeras tes années min et max avec toutes les lignes.
3. Reparcourir cette table en créant un troisième champ Filtre_Annee qui ne sera alimenté que pour les lignes ou Y_Min<Year <Y_Max.
3. Supprimer les champs Y_Min et Y_Max pour qu'il ne traine pas dans l'appli
4. Utiliser le champ Filtre_Annee dans l'application.
Cdlt,
C'est bon, il fallait ajouter un Noconcatenate
MasterCalendar:
Noconcatenate
LOAD *
Resident MasterCalendar2
where Year <= Y_Max
and Year >= Y_Min
;
Bonsoir,
Si j'ai bien compris le problème, voici ce que je ferais :
1. Charger une table avec les années min et max. Cette table contiendra une seule ligne et deux champs :
Load
Max(Year) as Y_Max,
Min(Year) as Y_Min
from <Source>
where Source='Facturation'
2. Charger ta table source en effectuant une jointure full avec cette table. De cette façon, tu associeras tes années min et max avec toutes les lignes.
3. Reparcourir cette table en créant un troisième champ Filtre_Annee qui ne sera alimenté que pour les lignes ou Y_Min<Year <Y_Max.
3. Supprimer les champs Y_Min et Y_Max pour qu'il ne traine pas dans l'appli
4. Utiliser le champ Filtre_Annee dans l'application.
Cdlt,
Merci beaucoup.
Je pense que je ne suis pas loin du résultat mais cela ne marche pas avec mon script ci-dessous :
MasterCalendar2:
LOAD *
FROM [$(vs_appData_qvd_transform)MasterCalendar.qvd]
(qvd)
;
Join Load
Max(year(Date)) as Y_Max,
Min(year(Date)) as Y_Min
Resident Faits
where Source='Facturation'
;
MasterCalendar:
LOAD *
Resident MasterCalendar2
where Year <= Y_Max
and Year >= Y_Min
;
drop table MasterCalendar2 ;
En effet, il n'y a rien de charger dans MasterCalendar:
Alors que j'ai bien les Year différents dans chaque ligne de MasterCalendar2: et les années figées dans Y_Max et Y_Min. Peut-être faut il mettre un format particulier ou il y a une erreur de syntaxe.
Avez-vous une idée ?
Merci par avance.
C'est bon, il fallait ajouter un Noconcatenate
MasterCalendar:
Noconcatenate
LOAD *
Resident MasterCalendar2
where Year <= Y_Max
and Year >= Y_Min
;