Analisi dell'intervallo di tempo e periodo di tempo utilizzando filtri basati su modelli

Per confrontare una metrica filtrata da più periodi di tempo nello stesso look o nella stessa dashboard, puoi utilizzare le misure filtrate. Le misure filtrate ti consentono di applicare un filtro hardcoded direttamente a una misura anziché a un'intera query.

Se hai un numero limitato di periodi di tempo che ti interessano confrontare, puoi definire alcune misure con filtri di periodo di tempo hardcoded (ad es. "quest'anno" e "l'anno scorso") e visualizzarle in un'esplorazione, un look o una dashboard. Puoi anche compiere un ulteriore passo in avanti per rendere dinamici i confronti dei periodi di tempo, o le misure che cambiano con i periodi di tempo specificati dagli utenti in Esplorazioni, Look o dashboard, utilizzando filtri basati su modelli nelle misure filtrate.

Panoramica sequenza

A livello generale, questo approccio prevede tre componenti:

  1. Definisci un filtro basato su modello di type: date per ogni periodo di tempo che verrà visualizzato come campo solo con filtri nell'esplorazione, nel look o nella dashboard.
  2. Crea una dimensione di tipo yesno da collegare al filtro basato su modelli in modo che, quando un utente seleziona un valore per il campo solo filtro, la dimensione yesno restituisca "sì" per i record che soddisfano le condizioni del filtro.
  3. Crea una misura filtrata che fa riferimento alla dimensione yesno con la condizione value = "yes". In questo modo, la misura aggrega solo i record che soddisfano la condizione di periodo di tempo specificata nel filtro definita nel passaggio 1.

Questa logica consente agli utenti di creare analisi e visualizzazioni che confrontano i valori di periodi di tempo diversi, come la seguente esplorazione:

Gli utenti possono modificare i valori nei filtri Periodo di tempo A e Periodo di tempo B e influire solo sui valori di Conteggio ordini A e Conteggio ordini B. Conteggio ordini A e Conteggio ordini B sono misure con filtri che fanno riferimento alle condizioni relative al periodo di tempo nei filtri relativi al periodo di tempo. Periodo di tempo A influisce sui valori di Conteggio ordini A, mentre Periodo di tempo B influisce sui valori di Conteggio ordini B.

La sezione seguente fornisce il codice LookML per questo esempio.

LookML

Il seguente codice LookML presuppone che tu abbia un gruppo di dimensioni con un periodo di tempo raw denominato created_raw:

  dimension_group: created {
    type: time
    timeframes: [
      raw,
      time,
      date,
    ]
    sql: ${TABLE}.created_at ;;
  }
  

Il LookML per il confronto delle misure di conteggio, Conteggio ordini A e Conteggio ordini B, filtrato in base a due intervalli di tempo dinamici (Periodo di tempo A e Intervallo di tempo B) basato su created_raw ha il seguente aspetto:

  ## 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"] }

Puoi utilizzare questa logica per creare tutti i confronti di periodo di tempo di cui hai bisogno.

Applicazione di filtri a un'intera query con periodi di tempo dinamici

Le misure filtrate non applicano una condizione di filtro ai risultati complessivi della query. Se vuoi limitare i risultati complessivi della query entro i periodi di tempo specificati, puoi:

  1. Crea la seguente dimensione yesno
  2. Filtra i valori delle dimensioni in base a "yes" in esplorazioni, look o dashboard:

  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 %} ;;
  }

In questo modo, il database non esegue la scansione di più dati del necessario per la query e questo può contribuire a migliorare le prestazioni e il costo delle query.