NON RÉSOLU Filtre date max par année
-
Bonjour,
J'ai deux dimensions : Année et date photo. Les dates "photo" ne sont pas forcément tous les jours.
Dans le tableau de bord, un filtre sélection unique à été posé pour chacune.
Je souhaiterais qu'à chaque changement d'année, l'ensemble du tableau de bord soit filtré sur la date photo max de l'année
Comment puis-je faire cela ?
D'avance, merci
-
Bonjour,
Vous pouvez implémenter un filtre dynamique via les paramètres des pages du tableau de bord dans l'éditeur :
- Clic droit sur l'onglet de page ==> Paramètres ==> Navigation
- Sélectionner la dimension "Date photo" ==> Type de filtre : prédéfini ==> Contexte : Date max des données ==> Membre : Année
Répétez l'opération pour chaque page du tableau de bord. Lorsque vous passerez en mode utilisateur, vous verrez le fitrage sur la dernière année.
Cordialement.
-
@davids Merci pour cette réponse sur une fonctionnalité que je ne connaissais pas.
Mais j'ai oublié de préciser une chose : dans mon cas année = année scolaire (du 01/09/N au 31/08/N+1). Du coup ça ne fonctionne pas. Il faudrait que je puisse créer une hiérarchie "année scolaire" mais j'ignore la façon de faire.J'ai néanmoins trouvé une solution à coup de javascript :
/* Ecoute sur les filtres */ ddCtrl.addDimensionFilterListener(function(dimension, hierarchy, niveau, members, membersFormated, bExclude, min, max) { /* Si le filtre année scolaire a bougé */ if (dimension == 'annee_scolaire') { /* Récupération de toutes les photos de l'année scolaire (tableau)*/ var tphoto = ddCtrl.getResultCubeRowSet('6c12f006', {'Année scolaire' : membersFormated[0]}); /* On prend le dernier élément du tableau (slice) Et on filtre l'ensemble du tableau de bord sur cet élément */ ddCtrl.filter(new FilterOperand('date_photo', tphoto.slice(-1)[0][1], 'Date', 'Racine')); }
ça marche plutôt bien. Le seul inconvénient est d'avoir un flux caché (c612f006) qui est un tableau simple année scolaire / photos...
Bonne journée
-
Bonjour @JiPi ,
Vous pouvez si vous le souhaitez créer une hiérarchie "Date scolaire" ou "Mois Année Scolaire". Voici comment vous pouvez procéder :
-
Dans le modèle, cliquez sur "Ajouter'(ou +) dans l'encart Hiérarchie, puis sur Hiérarchie :
-
Allez sur l'onglet Hiérarchies partagées, puis cliquer sur Gestionnaire de Hiérarchies en bas à droite. Vous arrivez sur cette interface ou sont définies toutes les hiérarchies partagées, et vous avez la possibilité d'en créer de nouvelles
-
Cliquez sur + en haut à gauche et nommer votre nouvelle hiérarchie (vous pouvez l'assigner à un rôle ou juste la partager avec tous les rôles).
-
Si vous souhaitez créer une hiérarchie "Mois Année Scolaire" par exemple, vous pouvez créer 3 niveaux (jour / mois / année) et copier coller les fonctions et formules des niveaux Jour et Mois venant de la hiérarchie "Mois année" simple (screeshot plus haut). Reprenez également les même formats (liste déroulante en bas).
-
Pour le niveau année il faudra changer certains paramètres car nous voulons une année scolaire du 01/09/N au 31/08/N+1. Pour ce faire, il faudra utiliser la fonction et formules suivantes :
- Fonction : (new Date(t1000).getMonth()>=8?(new Date(t1000).getFullYear()):(new Date(t*1000).getFullYear() - 1))
- Formule minimum : (new Date(s, 8, 1)).getTime()/1000
- Formule maximum : (new Date(s+1, 8, 1)).getTime()/1000
- Format : Aucun
-
Vous pouvez procéder de la même façon pour créer une hiérarchie Date scolaire, seul le niveau Année doit être adapté.
-
Ajoutez la ou les hiérarchies créés pour cette Date, et supprimez les autres hiérarchies.
-
La fonction précédente de filtres prédéfinies sur la page ne fonctionnera pas dans ce cas là car elle ne tiendra pas compte de la hiérarchie personnalisée. Mais vous pouvez mettre un filtre dynamique en place via les flux par le studio, basé sur la date max de la période scolaire 2023 par exemple :
==> Ouvrez un flux contenant les objets à filtrer
==> Cliquez sur l'entonnoir et créer un filtre dans l'encart Dimensions filtrées
==> Sélectionnez la dimension et choisissez "Fonction" dans la liste déroulante en haut.
==> Ajoutez une nouvelle fonction : Type = Mix/Max, Nom = Date Max année scolaire
==> Dans minimum, mettez :
var max = this.dim.max;
var d = new Date(max*1000);
return new Date(d.getFullYear(), d.getMonth()+1, 0).getTime()/1000;
==> Dans maximum, mettez :
var max = this.dim.max;
var d = new Date(max*1000);
return new Date (d.getFullYear(), d.getMonth()+1, 1).getTime()/1000;
==> Si vous avez un tableau avec la date_photo, le filtre se fera sur le 31/08/2024 pour une année scolaire 2023
Bonne journée.
Cordialement. -