Utilisation des fonctions de filtre à la place des fonctions de séries temporelles

Cette rubrique décrit la différence entre les fonctions de séries temporelles et les fonctions de filtre. Elle explique comment implémenter les fonctions de filtre. Ces informations s'appliquent aux classeurs et aux tableaux de bord classiques.

Fonctions de séries temporelles et fonctions de filtre

Les fonctions de séries temporelles Ago et Todate permettent de créer facilement des mesures pour calculer year-ago, year-to-date, etc. Cette méthode fonctionne bien pour les rapports des utilisateurs professionnels. Toutefois, ces fonctions génèrent des requêtes complexes qui ont une incidence considérable sur les performances. De plus, à chaque utilisation de l'une de ces fonctions dans un rapport, une sous-requête supplémentaire est générée, ce qui utilise encore plus de ressources sur la base de données.

Dans les tableaux de bord classiques, au lieu d'utiliser des fonctions de séries temporelles, vous pouvez généralement obtenir le même résultat en utilisant des mesures de base avec la fonction Filter afin de filtrer sur la période appropriée. Cette méthode peut se révéler trop complexe pour les rapports des utilisateurs professionnels, mais elle fonctionne bien dans les tableaux de bord prédéfinis par le service informatique. Grâce à cette méthode, le code SQL physique généré est beaucoup plus simple et plus efficace. De plus, aucune sous-requête supplémentaire n'est nécessaire. Ainsi, l'exécution de la requête SQL est plus rapide et utilise moins de ressources sur la base de données, ce qui réduit les appels d'entrée/de sortie et l'utilisation globale de l'UC de base de données.

La figure suivante présente un exemple de requête physique générée lorsque vous utilisez la mesure de base et la mesure month Ago. Deux requêtes sont générées .

La description de GUID-37245A7E-00E9-4071-9627-1A5BAED91311-default.jpg est la suivante
.jpg

La figure suivante présente le code SQL généré pour une requête unique lorsque vous utilisez une fonction Filter à la place.

La description de GUID-F1D33998-F8D4-40BF-B630-6EDCEF1DCEFC-default.jpg est la suivante
.jpg

Implémentation des fonctions de filtre dans un tableau de bord avec des invites

Dans la plupart des implémentations, le tableau de bord inclut déjà une invite pour permettre aux utilisateurs de sélectionner le mois de leur choix. La première étape consiste à identifier les périodes à filtrer d'après la sélection d'un utilisateur.

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

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

    La description de GUID-DEEBC7D1-806C-48E9-965C-6131745A65CE-default.png est la suivante
    .png

  2. Créez une invite de tableau de bord distincte pour extraire l'élément Julian Period Number correspondant et le placer dans une autre variable (PeriodNumberSelected). Cette deuxième invite n'est pas visible par l'utilisateur final. Elle est masquée dans le tableau de bord et la valeur est calculée automatiquement d'après la variable MonthSelected.

    La description de GUID-D41AE43F-CD62-498D-B041-9700D586BF77-default.png est la suivante
    .png

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

    La description de GUID-E46E926E-F0A3-4934-9D10-F0119B9109DF-default.jpg est la suivante
    .jpg

  5. Dans l'analyse, supprimez le filtre global appliqué à la colonne Month, et utilisez les fonctions de filtre des formules de colonne d'après Julian Period Number tel que requis. 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})

Implémentation des fonctions de filtre dans un classeur avec des paramètres

Vous pouvez appliquer le même principe dans un classeur. Les invites et les variables de présentation sont remplacées par des paramètres et un filtre de tableau de bord.

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

Les valeurs possibles pour le paramètre MonthSelected sont définies selon une requête SQL logique en sélectionnant tous les mois.

Pour les paramètres PeriodNumberSelected et YearSelected, les valeurs possibles ne sont pas renseignées.La description de GUID-B0D153C1-7DDF-445F-BF09-7E21EBECB88B-default.jpg est la suivante
.jpg

Seule la valeur initiale est renseignée avec une requête logique filtrée d'après la valeur de MonthSelected.La description de GUID-C21AC2BA-E3B8-43BC-A812-517A074DBFA2-default.jpg est la suivante
.jpg