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:
-
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. -
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 dimensioneyesno
restituisca "sì" per i record che soddisfano le condizioni del filtro. -
Crea una misura filtrata che fa riferimento alla dimensione
yesno
con la condizionevalue = "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:
-
Crea la seguente dimensione
yesno
- 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.