Pour comparer une métrique filtrée par plusieurs périodes dans le même look ou 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, un look 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 visuels 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
type: datepour chaque période. Il s'affichera en tant que champ de filtre uniquement dans votre exploration, votre présentation ou votre tableau de bord. -
Créez une dimension de type
yesnoà associer au filtre basé sur un modèle afin que, lorsqu'un utilisateur sélectionne une valeur pour le champ réservé au filtre, la dimensionyesnorenvoie"oui" pour les enregistrements qui répondent aux conditions du filtre. -
Créez une mesure filtrée qui fait référence à la dimension
yesnoavec la conditionvalue = "yes". Cela garantit que 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 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 de 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 nombre (Nombre de commandes A et Nombre de commandes B) filtrées par deux périodes dynamiques (Période A et Période B) en fonction de created_raw se présente comme suit:
## 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 l'intégralité d'une requête 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
yesnosuivante : - Filtrez 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, ce qui peut améliorer les performances et réduire le coût des requêtes.