Comparaison de l'analyse des périodes à l'aide de filtres basés sur un modèle

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 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:

  1. Définissez un filtre basé sur un modèle type: date pour chaque période. Il apparaîtra sous forme de champ de filtre uniquement dans votre exploration, votre présentation ou votre tableau de bord.
  2. 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 dimension yesno renvoie"oui" pour les enregistrements qui répondent aux conditions du filtre.
  3. Créez une mesure filtrée qui fait référence à la dimension yesno avec la condition value = "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:

  1. Créez la dimension yesno suivante :
  2. 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.