Utiliser les fonctions de filtre à la place des fonctions de série chronologique

Cette rubrique décrit les différences entre les fonctions de série chronologique et les fonctions de filtre et explique comment utiliser les fonctions de filtre. Ces informations s'appliquent aux classeurs et aux tableaux de bord classiques.

Fonctions de série chronologique par rapport aux fonctions de filtre

Les fonctions de série chronologique Ago et Todate permettent de créer facilement des mesures pour effectuer des calculs du type year-ago, year-to-date, etc. Cette méthode fonctionne bien pour les rapports destinés aux utilisateurs professionnels. Toutefois, ces fonctions génèrent des interrogations complexes qui ont une incidence significative sur la performance. De plus, chaque fois que l'une de ces fonctions est utilisée dans un rapport, une sous-interrogation supplémentaire est générée, utilisant encore plus de ressources dans la base de données.

Dans les tableaux de bord classiques, au lieu d'utiliser des fonctions de série chronologique, vous pouvez utiliser des mesures de base avec la fonction Filter pour filtrer la période appropriée. Vous obtenez généralement les mêmes résultats. Cette méthode peut s'avérer trop complexe pour les rapports destinés aux utilisateurs professionnels, mais elle fonctionne parfaitement dans les tableaux de bord prédéfinis par l'équipe informatique. Avec cette méthode, le code SQL physique généré est beaucoup plus simple et efficace et il ne nécessite aucune sous-interrogation supplémentaire. Par conséquent, l'interrogation SQL est plus rapide et utilise moins de ressources dans la base de données, réduisant ainsi l'utilisation globale d'UC et les appels d'entrée-sortie de la base de données.

L'illustration suivante présente un exemple de l'interrogation physique qui est générée lorsque vous utilisez la mesure de base et la mesure Month Ago dans le même rapport. Deux interrogations sont générées.

Description de GUID-37245A7E-00E9-4071-9627-1A5BAED91311-default.jpg ci-après
.jpg

L'illustration suivante présente le code SQL qui est généré pour une interrogation simple lorsque vous utilisez une fonction Filter à la place.

Description de GUID-F1D33998-F8D4-40BF-B630-6EDCEF1DCEFC-default.jpg ci-après
.jpg

Mettre en oeuvre des fonctions de filtre dans un tableau de bord avec des invites

Dans la plupart des mises en oeuvre, le tableau de bord comprend déjà une invite et les utilisateurs peuvent sélectionner le mois qui les intéressent. La première étape consiste à identifier les périodes que vous devez filtrer en fonction de la sélection de l'utilisateur.

Dans cet exemple, la dimension de calendrier comprend la colonne Julian Period Number, car cela facilite le calcul. Il est également possible de ne pas utiliser de colonne Julian Period Number, mais cela nécessiterait des formules beaucoup plus complexes pour calculer la période sélectionnée.

  1. Modifiez l'invite Month pour ajouter la variable de présentation (MonthSelected).

    Description de GUID-DEEBC7D1-806C-48E9-965C-6131745A65CE-default.png ci-après
    .png

  2. Créez une invite de tableau de bord distincte pour extraire la valeur Julian Period Number correspondante et la placer dans une autre variable (PeriodNumberSelected). Cette seconde invite n'apparaît pas pour l'utilisateur final. Elle est masquée dans le tableau de bord et la valeur est calculée automatiquement en fonction de la variable MonthSelected.

    Description de GUID-D41AE43F-CD62-498D-B041-9700D586BF77-default.png ci-après
    .png

  3. Modifiez les propriétés de votre tableau de bord et cliquez sur Filtres et variables.
  4. Ajoutez le chemin de l'invite Julian Period.

    Description de GUID-E46E926E-F0A3-4934-9D10-F0119B9109DF-default.jpg ci-après
    .jpg

  5. Dans l'analyse, supprimez le filtre global dans la colonne Month et utilisez les fonctions de filtre des formules de colonne en fonction de Julian Period Number, le cas échéant. Voici quelques exemples :

    Current Month: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800})

    Month Ago: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800}-1)

    Year Ago: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800}-12)

    Year to date: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"<=@{PeriodNumberSelected}{80800} and “Time”.”Year”=@{YearSelected}{2019})

Mettre en oeuvre les fonctions de filtre dans un classeur avec des paramètres

Vous pouvez appliquer le même principe pour un classeur. À la place des invites et des variables de présentation, un filtre de tableau de bord et des paramètres sont utilisés.

Créez trois paramètres : MonthSelected, PeriodNumberSelected et YearSelected. Seul le paramètre MonthSelected apparaît dans le canevas d'un filtre de tableau de bord.

Les valeurs possibles pour le paramètre MonthSelected sont définies en fonction d'une interrogation SQL logique qui sélectionne tous les mois.

Pour les paramètres PeriodNumberSelected et YearSelected, les valeurs possibles ne sont pas alimentées.Description de GUID-B0D153C1-7DDF-445F-BF09-7E21EBECB88B-default.jpg ci-après
.jpg

Seule la valeur initiale est alimentée au moyen d'une interrogation logique filtrée sur la base de la valeur de MonthSelected.Description de GUID-C21AC2BA-E3B8-43BC-A812-517A074DBFA2-default.jpg ci-après
.jpg