Pour comparer une métrique filtrée sur plusieurs périodes dans la même présentation ou le même tableau de bord, vous pouvez utiliser des mesures filtrées. Les mesures filtrées vous permettent d'appliquer un filtre encodé en dur directement à une mesure, plutôt qu'à une requête entière.
Si vous souhaitez comparer un nombre limité de périodes, vous pouvez définir quelques mesures avec des filtres de période codés en dur (par exemple, "cette année" et "l'année dernière") et les afficher dans une exploration, une analyse ou un tableau de bord. Vous pouvez également aller plus loin dans cette approche pour rendre les comparaisons de périodes dynamiques (ou les mesures qui changent en fonction des périodes spécifiées par les utilisateurs dans les explorations, les visages ou les tableaux de bord) en utilisant des filtres avec modèle dans les mesures filtrées.
Présentation du modèle
De manière générale, cette approche comprend trois composants :
-
Définissez un filtre basé sur un modèle de
type: date
pour chaque période qui s'affichera en tant que champ réservé au filtrage dans votre exploration, votre présentation ou votre tableau de bord. -
Créez une dimension de type
yesno
à associer au filtre créé à partir d'un modèle. Ainsi, lorsqu'un utilisateur sélectionne une valeur pour le champ réservé au filtrage, la dimensionyesno
affichera "oui". pour les enregistrements qui répondent aux conditions du filtre. -
Créez une mesure filtrée qui fait référence à la dimension
yesno
avec la conditionvalue = "yes"
. Ainsi, la mesure n'agrège que les enregistrements qui répondent à la condition de période spécifiée dans le filtre défini à l'étape 1.
Cette logique permet aux utilisateurs de créer des analyses et des visualisations qui comparent les valeurs à partir de différentes périodes, comme l'exploration suivante:
Les utilisateurs peuvent modifier les valeurs des filtres Période A et Période B, et n'affecter que les valeurs des Nombre de commandes A et Nombre de commandes B. Nombre de commandes A et Nombre de commandes B sont des mesures avec des filtres qui font référence aux conditions de période dans les filtres de période. Période A a une incidence sur les valeurs de Nombre de commandes A, et Période B a une incidence sur les valeurs de Nombre de commandes B.
La section suivante fournit le code LookML de cet exemple.
Le code LookML
Le code LookML suivant suppose que vous disposez d'un groupe de dimensions avec une période raw
nommée created_raw
:
dimension_group: created { type: time timeframes: [ raw, time, date, ] sql: ${TABLE}.created_at ;; }
Le code LookML permettant de comparer les mesures de décompte (Orders Count A (Nombre de commandes A) et Orders Count B (Nombre de commandes B), filtré par deux périodes dynamiques (Timeframe A et Timeframe B), se présente comme suit en fonction de created_raw
:
## filter determining time range for all "A" measures filter: timeframe_a { type: date_time } ## flag for "A" measures to only include appropriate time range dimension: group_a_yesno { hidden: yes type: yesno sql: {% condition timeframe_a %} ${created_raw} {% endcondition %} ;; } ## filtered measure A measure: count_a { type: count filters: [group_a_yesno: "yes"] } ## filter determining time range for all "B" measures filter: timeframe_b { type: date_time } ## flag for "B" measures to only include appropriate time range dimension: group_b_yesno { hidden: yes type: yesno sql: {% condition timeframe_b %} ${created_raw} {% endcondition %} ;; } measure: count_b { type: count filters: [group_b_yesno: "yes"] }
Vous pouvez utiliser cette logique pour créer autant de comparaisons de périodes que nécessaire.
Filtrer une requête entière avec des périodes dynamiques
Les mesures filtrées n'appliquent pas de condition de filtre aux résultats globaux de la requête. Si vous souhaitez limiter les résultats globaux de la requête dans les délais spécifiés, vous pouvez :
-
Créez la dimension
yesno
suivante : - Filtrer les valeurs de la dimension par "Oui" dans les explorations, les Looks ou les tableaux de bord:
dimension: is_in_time_a_or_b { group_label: "Time Comparison Filters" type: yesno sql: {% condition timeframe_a %} ${created_raw} {% endcondition %} OR {% condition timeframe_b %} ${created_raw} {% endcondition %} ;; }
Cela empêche la base de données d'analyser plus de données que nécessaire pour la requête, et peut contribuer à améliorer les performances et les coûts des requêtes.