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 codé en dur directement à une mesure, plutôt que d'appliquer un filtre à 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 "année dernière") et les afficher dans une exploration, une présentation ou un tableau de bord. Vous pouvez également aller un peu plus loin 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 présentations ou les tableaux de bord) en utilisant des filtres basés sur un 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 s'affichera 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. Ainsi, lorsqu'un utilisateur sélectionne une valeur pour le champ réservé au filtrage, la dimension yesno affichera "oui". pour les enregistrements qui répondent aux conditions du filtre.
  3. Créez une mesure filtrée qui 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 à 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. Le délai A a une incidence sur les valeurs du nombre de commandes A, et le délai B a une incidence sur les valeurs du nombre de commandes B.

La section suivante fournit le LookML pour 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 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 de requête globaux dans les délais spécifiés, vous pouvez:

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