Série temporelle

Ces informations s'appliquent aux classeurs et aux tableaux de bord classiques.

Fonctions de séries temporelles ou 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 d'utilisateurs professionnels, mais elle fonctionne très bien dans les tableaux de bord prédéfinis par le service informatique. Grâce à cette méthode, la requête SQL physique générée est beaucoup plus simple et plus efficace, et elle n'a pas besoin d'une sous-requête supplémentaire. Ainsi, la requête SQL est plus rapide et utilise moins de ressources sur la base de données, ce qui réduit les E/S et l'utilisation globale de l'UC de base de données.

Voici un exemple de la 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

Voici la requête SQL générée lorsque vous utilisez une fonction Filter à la place. Une seule requête est générée, et elle est beaucoup plus simple :

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

Mode d'implémentation 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 simple, nous partons du principe que la dimension de calendrier inclut une colonne Julian Period Number car cela facilite grandement 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.

Tout d'abord, l'invite pour Month doit remplir une variable de présentation (MonthSelected dans l'exemple ci-dessous). Ensuite, nous allons créer 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. Reportez-vous à l'exemple ci-dessous.

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

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

  2. Créez une invite de tableau de bord distincte pour Julian Period Number.

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

  3. Modifiez les propriétés du tableau de bord et cliquez sur Filtres et variables.

    La description de GUID-39A7720B-5345-418B-BDEE-33BC7426FAF0-default.jpg est la suivante
    .jpg

  4. Ajoutez l'invite Julian Period.

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

  5. Ensuite, 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})

Mode d'implémentation dans un classeur avec des paramètres

Le même principe peut être appliqué 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 du 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. Seule la valeur initiale est renseignée avec une requête logique filtrée d'après la valeur de MonthSelected. Reportez-vous aux exemples ci-dessous.

La description de GUID-C21AC2BA-E3B8-43BC-A812-517A074DBFA2-default.jpg est la suivante
.jpg

La description de GUID-B0D153C1-7DDF-445F-BF09-7E21EBECB88B-default.jpg est la suivante
.jpg