Utilizzo
dimension_group: field_name { ... }
}
Gerarchia
dimension_group |
Accetta
Un identificatore di Looker (che funge da prima parte del nome di ogni dimensione creata dal gruppo di dimensioni)Regole speciali
|
Definizione
Il parametro dimension_group
viene utilizzato per creare contemporaneamente un insieme di dimensioni basate sul tempo o sulla durata. Sei tu a definire il gruppo di dimensioni e quest'ultimo crea un insieme di dimensioni individuali per intervalli o periodi di tempo diversi. Ad esempio, puoi specificare un gruppo di dimensioni type: time
basato su una colonna timestamp, che creerà dimensioni corrispondenti per indicare i dati in base a ora, data, settimana, ora, trimestre e anno.
La forma e la funzione del gruppo di dimensioni variano a seconda del valore type
del gruppo di dimensioni:
Tipo di durata
type: duration
viene utilizzato in combinazione con un dimension_group
per calcolare un insieme di dimensioni di durata basate su intervalli.
La forma di un gruppo di dimensioni type: duration
è:
dimension_group: dimension_group_name {
type: duration
sql_start: SQL expression ;; # often this is a single database column
sql_end: SQL expression ;; # often this is a single database column
intervals: [interval, interval, …] # valid intervals described below
}
Per i gruppi di dimensioni di type: duration
:
I parametri
sql_start
esql_end
forniscono espressioni SQL che definiscono l'ora di inizio e l'ora di fine per la durata. Per informazioni dettagliate, consulta la sezione Definizione dell'inizio e della fine della durata in questa pagina.Il parametro
intervals
specifica una o più unità a intervalli che devono essere utilizzate per misurare la differenza di tempo. Le opzioni possibili sono elencate nella sezione Opzioni intervallo di questa pagina.I valori di durata vengono arrotondati al numero intero più vicino.
Il parametro
datatype
è facoltativo. Se il gruppo di dimensioni non si basa su una data, puoi specificare un formato epoch, timestamp, data o aaaammgg. Per i gruppi di dimensionitype: duration
, il parametrodatatype
viene applicato a entrambi i parametrisql_start
esql_end
, pertanto assicurati chesql_start
esql_end
siano entrambi del tipo di dati specificato. Il parametrodatatype
è descritto più dettagliatamente nella sezione Specificare il databasedatatype
di questa pagina.
Anche se non sono elencati qui, molti dei parametri a livello di campo possono essere utilizzati anche con i gruppi di dimensioni.
Ad esempio, se hai colonne per enrollment_date
e graduation_date
, puoi creare un gruppo di dimensioni Durata per vedere quanto tempo gli studenti hanno trascorso a scuola, calcolato in intervalli settimanali e annuali:
dimension_group: enrolled {
type: duration
intervals: [week, year]
sql_start: ${TABLE}.enrollment_date ;;
sql_end: ${TABLE}.graduation_date ;;
}
Nell'interfaccia utente di Esplora, viene generato un gruppo di dimensioni denominato Durata registrazione, con singole dimensioni denominate Settimane registrate e Anni di registrazione.
Opzioni per l'intervallo
Il parametro intervals
indica al gruppo di dimensioni le unità di intervallo che deve utilizzare per misurare la differenza di tempo tra l'ora sql_start
e l'ora sql_end
. Il parametro intervals
è supportato solo per i gruppi di dimensioni di type: duration
.
Se intervals
non è incluso, il gruppo di dimensioni includerà tutti gli intervalli possibili.
Le opzioni del parametro intervals
sono:
Intervallo | Descrizione | Output di esempio |
---|---|---|
day |
Calcola una differenza di tempo in giorni. | 9 days |
hour |
Calcola una differenza di tempo in ore. | 171 hours |
minute |
Calcola una differenza di tempo in minuti. | 10305 minutes |
month |
Calcola una differenza di tempo in mesi. | 3 months |
quarter |
Calcola una differenza di tempo nei trimestri dell'anno. | 2 quarters |
second |
Calcola una differenza di tempo in secondi. | 606770 seconds |
week |
Calcola una differenza di tempo in settimane. | 6 weeks |
year |
Calcola una differenza di tempo in anni. | 2 years |
Definizione dell'inizio e della fine della durata
Per i gruppi di dimensioni di type: duration
, i parametri sql_start
e sql_end
forniscono le informazioni di inizio e fine utilizzate per calcolare una differenza di tempo. Questi campi possono contenere qualsiasi espressione SQL valida che contiene dati in formato timestamp, data/ora, data, epoca o aaaammgg. I campi sql_start
e sql_end
possono essere:
- Un riferimento a un periodo di tempo
raw
di un gruppo di dimensioni esistente ditype: time
- Un riferimento a una dimensione di
type: date_raw
- Un'espressione SQL che è un timestamp, ad esempio un riferimento a una colonna SQL che è un timestamp
- Un'espressione SQL che estrae un tempo dal tuo database, utilizzando l'espressione appropriata per il tuo dialetto
- Un riferimento al campo LookML che utilizza il riferimento al tipo di campo
::datetime
o::date
Ad esempio, supponi di avere una dimensione denominata faa_event_date_raw
che contiene informazioni su data e ora:
dimension: faa_event_date_raw {
type: date_raw
sql: ${TABLE}.event_date ;;
}
Puoi creare un gruppo di dimensioni pari a type: duration
che calcola il tempo trascorso dalla data dell'evento FAA. A questo scopo, puoi utilizzare la dimensione faa_event_date_raw
come ora di inizio del calcolo, mentre per l'ora di fine del calcolo puoi usare l'espressione SQL del tuo dialetto per l'ora corrente. Questo è un esempio per un database MySQL:
dimension_group: since_event {
type: duration
intervals: [hour, day]
sql_start: ${faa_event_date_raw} ;;
sql_end: CURRENT_TIMESTAMP();;
}
Nell'interfaccia utente di Esplora, viene generato un gruppo di dimensioni denominato Durata dall'evento, con dimensioni individuali denominate Ore dall'evento e Giorni dall'evento.
Fare riferimento a intervalli di un altro campo LookML
Per fare riferimento a un valore interval
in un dimension_group
di type: duration
, utilizza la sintassi ${interval_fieldname}
, utilizzando la versione plurale del valore interval
. Ad esempio, nel seguente esempio di LookML, la misura average_days_since_event
utilizza ${days_since_event}
per fare riferimento all'intervallo day
nel gruppo di dimensioni since_event
:
dimension_group: since_event {
type: duration
intervals: [hour, day, week, month, quarter, year]
sql_start: ${faa_event_date_raw} ;;
sql_end: CURRENT_TIMESTAMP();;
}
measure: average_days_since_event {
type: average
sql: ${days_since_event} ;;
}
Utilizzo dei riferimenti ai tipi di campo LookML con i campi di durata
Per creare un campo di durata personalizzato, puoi specificare un tipo di riferimento ::date
o ::datetime
per le dimensioni a cui viene fatto riferimento nei parametri sql_start
e sql_end
di un gruppo di dimensioni type: duration
. La sintassi view_name.field_name::type
, descritta nella pagina della documentazione Incorporamento di SQL e riferimento agli oggetti LookML, consente di creare una versione ::date
o ::datetime
di un campo senza trasmettere i riferimenti a tali dimensioni alle stringhe.
Ad esempio, supponi di avere un gruppo di dimensioni created
pari a type: time
con intervalli di tempo di time
, date
, week
, month
e raw
, definiti come segue:
dimension_group: created {
type: time
timeframes: [time, date, week, month, raw]
sql: ${TABLE}.created_at ;;
}
Utilizzando le dimensioni created_month
e created_time
, puoi creare un gruppo di dimensioni type: duration
che calcola la quantità di tempo tra una data dal campo created_date
e il primo giorno del mese in cui si è verificata, misurata in settimane, giorni e ore:
dimension_group: since_first_of_month {
type: duration
intervals: [week, day, hour]
sql_start: ${created_month::datetime} ;;
sql_end: ${created_time::datetime} ;;
}
Nella UI di Esplora, viene creato un gruppo di dimensioni chiamato Durata dal primo mese, con dimensioni individuali Settimane dal primo mese, Giorni dal primo mese e Ore dal primo mese. Se specifichi il tipo di riferimento ::datetime
per i campi indicati nei parametri sql_start
e sql_end
, le dimensioni created_month
e created_time
devono essere trattate come timestamp nell'SQL generato.
Ad esempio, supponi che un utente selezioni le dimensioni Data di creazione e Giorni dal primo mese nel selettore campi. Se uno dei valori restituiti per Created Date (Data di creazione) è 2019-03-10, il valore restituito per Giorni dal primo mese sarà 9 giorni.
Tipo di orario
type: time
viene utilizzato in combinazione con un dimension_group
e il parametro timeframes
per creare un insieme di dimensioni basate sul tempo. Ad esempio, puoi creare facilmente una dimensione basata su data, settimana e mese in base a una singola colonna timestamp.
La forma di un gruppo di dimensioni type: time
è:
dimension_group: dimension_group_name {
type: time
timeframes: [timeframe, timeframe, …] # valid timeframes described below
sql: SQL expression ;; # often this is a single database column
datatype: epoch| timestamp | datetime | date | yyyymmdd # defaults to datetime
convert_tz: yes | no # defaults to yes
}
Per i gruppi di dimensioni di type: time
:
Il parametro
timeframes
è facoltativo, ma raramente viene ignorato. Specifica uno o più periodi di tempo che devono essere generati dal gruppo di dimensioni. Se non è inclusatimeframes
, ogni gruppo di dimensioni verrà aggiunto al gruppo di dimensioni. Le opzioni possibili sono elencate nella sezione Opzioni periodo di tempo di questa pagina.Il parametro
sql
per i gruppi di dimensionitype: time
può utilizzare qualsiasi espressione SQL valida contenente i dati in formato timestamp, data/ora, data, epoca o aaaammgg.Il parametro
datatype
è facoltativo. Se il gruppo di dimensioni non si basa su una data, puoi specificare un formato epoch, timestamp, data o aaaammgg. Viene descritta in maggiore dettaglio nella sezione Specificare il databasedatatype
di questa pagina.Il parametro
convert_tz
è facoltativo e ti consente di impedire la conversione automatica del fuso orario. Per maggiori dettagli, consulta la sezione Conversioni del fuso orario econvert_tz
di questa pagina.
Anche se non sono elencati qui, molti dei parametri a livello di campo possono essere utilizzati anche con i gruppi di dimensioni.
Ad esempio, supponi di avere una colonna denominata created_at
contenente informazioni di data e ora. Vuoi creare una dimensione di data, settimana e mese basata su questo timestamp. Potresti utilizzare:
dimension_group: created {
type: time
timeframes: [date, week, month]
sql: ${TABLE}.created_at ;;
}
Nell'interfaccia utente di Esplora, vengono generate tre dimensioni con i nomi Data di creazione, Settimana di creazione e Mese di creazione. Tieni presente come il nome dimension_group
viene combinato con i periodi di tempo per generare i nomi delle dimensioni.
Opzioni relative ai tempi
Il parametro timeframes
è supportato solo per i gruppi di dimensioni di type: time
. Per i gruppi di dimensioni di type: duration
, utilizza invece il parametro intervals
.
Il parametro timeframes
indica al gruppo di dimensioni le dimensioni che deve generare. Le opzioni sono:
Tempistiche speciali
Intervalli di tempo
Intervallo di tempo | Descrizione | Output di esempio |
---|---|---|
time |
Data e ora del campo sottostante (alcuni dialetti SQL mostrano la stessa precisione del database, altri vengono mostrati solo al secondo) | 2014-09-03 17:15:00 |
time_of_day |
Ora del giorno | 17:15 |
hour |
Data/ora troncata all'ora più vicina | 2014-09-03 17 |
hour_of_day |
Ora intero del giorno del campo sottostante | 17 |
hourX |
Si divide ogni giorno in intervalli con il numero di ore specificato. Per una spiegazione, vedi sotto. | Vedi di seguito |
minute |
Data/ora troncata al minuto più vicino | 2014-09-03 17:15 |
minuteX |
Divide ogni ora in intervalli con il numero di minuti specificato. Per una spiegazione, vedi sotto. | Vedi di seguito |
second |
Data/ora troncata al secondo più vicino | 2014-09-03 17:15:00 |
millisecond |
Data/ora troncata al millisecondo più vicino (vedi la sezione Supporto di Dialetti per millisecondi e microsecondi di questa pagina per informazioni sul dialetto supportato). | 2014-09-03 17:15:00.000 |
millisecondX |
Suddividi ogni secondo in intervalli con il numero di millisecondi specificato (per informazioni sul supporto del dialetto, consulta la sezione Assistenza di Quadrante per millisecondi e microsecondi in questa pagina). Per una spiegazione, vedi sotto. | Vedi di seguito |
microsecond |
Data/ora troncata al microsecondo più vicino (consulta la sezione Supporto di Dialetti per millisecondi e microsecondi di questa pagina per informazioni sul dialetto supportato). | 2014-09-03 17:15:00.000000 |
Intervallo di tempo | Descrizione | Output di esempio |
---|---|---|
date |
Data del campo sottostante | 2017-09-03 |
Intervalli di tempo della settimana
Tempistiche di un mese
Per utilizzare gli intervalli fiscal_month_num
, il parametro fiscal_month_offset
deve essere impostato nel modello.
Tempistiche del trimestre
Per utilizzare i periodi di tempo fiscal_quarter
e fiscal_quarter_of_year
, il parametro fiscal_month_offset
deve essere impostato nel modello.
Anni di tempo
Per utilizzare il periodo di tempo di fiscal_year
, il parametro fiscal_month_offset
deve essere impostato nel modello.
In hourX
, X
viene sostituito con 2, 3, 4, 6, 8 o 12.
Questo valore verrà suddiviso ogni giorno in intervalli con il numero di ore specificato. Ad esempio, il valore di hour6
verrà suddiviso ogni giorno in segmenti di 6 ore, che verranno visualizzati come segue:
2014-09-01 00:00:00
2014-09-01 06:00:00
2014-09-01 12:00:00
2014-09-01 18:00:00
Per fare un esempio, una riga con un time
di 2014-09-01 08:03:17
avrebbe un hour6
di 2014-09-01 06:00:00
.
In minuteX
la tabella X
viene sostituita con 2, 3, 4, 5, 6, 10, 12, 15, 20 o 30.
Ogni ora verrà suddivisa in intervalli con il numero di minuti specificato. Ad esempio, il valore di minute15
verrà suddiviso ogni ora in segmenti di 15 minuti, che verranno visualizzati come segue:
2014-09-01 01:00:00
2014-09-01 01:15:00
2014-09-01 01:30:00
2014-09-01 01:45:00
Per fare un esempio, una riga con un time
di 2014-09-01 01:17:35
avrebbe un minute15
di 2014-09-01 01:15:00
.
In millisecondX
la tabella X
viene sostituita con 2, 4, 5, 8, 10, 20, 25, 40, 50, 100, 125, 200, 250 o 500.
Ogni secondo verrà suddiviso in intervalli con il numero di millisecondi specificato. Ad esempio, millisecond250
divide il secondo in segmenti di 250 millisecondi, che viene visualizzato come segue:
2014-09-01 01:00:00.000
2014-09-01 01:00:00.250
2014-09-01 01:00:00.500
2014-09-01 01:00:00.750
Per fare un esempio, una riga con un time
di 2014-09-01 01:00:00.333
avrebbe un millisecond250
di 2014-09-01 01:00:00.250
.
Conversioni nel fuso orario e convert_tz
In generale, i calcoli orari (differenze, durate e così via) funzionano correttamente solo quando utilizzi valori di tempo che sono tutti convertiti nello stesso fuso orario, quindi è importante tenere presente i fusi orari quando scrivi LookML.
Looker dispone di diverse impostazioni del fuso orario che consentono di convertire i dati basati sul tempo tra fusi orari diversi. Looker esegue la conversione del fuso orario per impostazione predefinita. Il parametro convert_tz
è supportato per i gruppi di dimensioni di type: time
. Se non vuoi che Looker esegua la conversione del fuso orario per una determinata dimensione o gruppo di dimensioni, puoi utilizzare il parametro convert_tz
descritto nella pagina della documentazione del parametro convert_tz
.
Supporto del dialetto per millisecondi e microsecondi
Looker supporta la precisione del periodo di tempo in microsecondi; tuttavia, alcuni database supportano la precisione solo al secondo. Se un database rileva un periodo di tempo più preciso di quello supportato, verrà arrotondato a secondi.
Nell'ultima release di Looker i seguenti dialetti supportano i millisecondi:
Nell'ultima release di Looker, i seguenti dialetti supportano i microsecondi:
Specifica del database datatype
Il parametro datatype
ti consente di specificare il tipo di dati temporali nella tabella del database che fornisci al gruppo di dimensioni, con conseguente aumento delle prestazioni delle query.
Per i gruppi di dimensioni di type: time
, il parametro datatype
si applica al parametro sql
del gruppo di dimensioni.
Per i gruppi di dimensioni di type: duration
, il parametro datatype
viene applicato a entrambi i parametri sql_start
e sql_end
, pertanto assicurati che sql_start
e sql_end
siano entrambi del tipo di dati specificato.
Il parametro datatype
accetta i seguenti valori:
epoch
: un campo SQL epoca (ovvero un numero intero che rappresenta il numero di secondi dall'epoca Unix).date
: un campo data SQL (ovvero, uno che non contiene informazioni sull'ora del giorno).datetime
: un campo data/ora SQL.timestamp
: un campo timestamp SQL.yyyymmdd
: un campo SQL contenente un numero intero che rappresenta una data nel formato AAAAMMGG.
Il valore predefinito di datatype
è timestamp
.
Esempi
Supponi di avere una colonna denominata created_at
contenente informazioni su data e ora. Vuoi creare una dimensione di data, settimana e mese basata su questo timestamp. Potresti utilizzare:
dimension_group: created {
type: time
timeframes: [date, week, month]
sql: ${TABLE}.created_at ;;
}
-
Nell'interfaccia utente di Esplora, vengono generate tre dimensioni con i nomi Data di creazione, Settimana di creazione e Mese di creazione. Tieni presente come il nome dimension_group
viene combinato con i periodi di tempo per generare i nomi delle dimensioni.
Aspetti da considerare
È necessario fare riferimento ai gruppi di dimensioni in base alle rispettive dimensioni
Dato che un gruppo di dimensioni rappresenta un gruppo di dimensioni, anziché una sola dimensione, non puoi farvi riferimento direttamente in LookML. Dovrai fare riferimento alle dimensioni create.
Ad esempio, considera questo gruppo di dimensioni:
dimension_group: created {
type: time
timeframes: [date, week, month]
sql: ${TABLE}.created_at ;;
}
-
Per fare riferimento a una di queste dimensioni in un altro campo LookML, utilizza il riferimento ${created_date}
, ${created_week}
o {$created_month}
. Se provi a utilizzare solo ${created}
, Looker non riconosce il periodo di tempo a cui fai riferimento e genera un errore.
Per lo stesso motivo, non devi utilizzare il parametro primary_key
in un gruppo di dimensioni se specifichi più di timeframe
.
Suggerimento per il team di Chat: spesso ci viene chiesto dell'errore di convalida che si verifica se si utilizza
primary_key
sudimension_group
con più ditimeframe
. Per saperne di più, consulta questo argomento della community.
Dati di timestamp che includono informazioni sul fuso orario
Alcuni dialetti del database hanno opzioni timestamp che includono informazioni sul fuso orario. Ciò consente di memorizzare i dati di timestamp in un singolo campo che può avere più fusi orari. Una riga di dati potrebbe essere archiviata in UTC, in un'altra riga orientale. Ad esempio, consulta la documentazione relativa al timestamp TIMESTAMP_LTZ, TIMESTAMP_NTZ, TIMESTAMP_TZ
di Fiocco di neve per informazioni sulle opzioni di timestamp del dialetto Fiocco di neve.
In questo caso, quando Looker esegue conversioni nel fuso orario, possono verificarsi errori. Per evitare questo problema, nel parametro sql
della dimensione devi trasmettere esplicitamente i dati del timestamp a un tipo di timestamp che non effettua la conversione del fuso orario. Ad esempio, nel dialetto Fiocco di neve puoi utilizzare la funzione TO_TIMESTAMP
per trasmettere i dati del timestamp.
È possibile creare dimensioni di durata o durata individuali
È possibile creare una dimensione per ogni singolo periodo di tempo o durata che vuoi includere, invece di generarli tutti in un singolo dimension_group
. In genere, puoi evitare di creare dimensioni individuali, a meno che tu non voglia modificare la convenzione di denominazione degli intervalli di tempo di Looker o abbia già precalcolato le colonne di tempo nel tuo database. Per ulteriori informazioni, consulta la pagina Documentazione su dimensioni, filtri e tipi di parametri.
Puoi cambiare il primo giorno della settimana
Per impostazione predefinita, le settimane in Looker iniziano il lunedì. Puoi modificare questa impostazione utilizzando il parametro week_start_day
a livello di modello.
Tieni solo presente che week_start_day
non funziona con il periodo di tempo di week_of_year
, che si basa sullo standard ISO, che utilizza lunedì settimana.
I filtri personalizzati e i campi personalizzati non supportano tutti gli intervalli di tempo
Attualmente, i periodi di tempo day_of_week
, fiscal_quarter_of_year
, millisecond
, millisecondX
, microsecond
, month_name
, quarter_of_year
e time_of_day
non sono supportati nei filtri personalizzati o nei campi personalizzati.
Gli intervalli di mesi, trimestri e anni contano solo per i periodi completi
L'intervallo month
in un gruppo di dimensioni duration
considera solo un mese dopo che il giorno finale è maggiore o uguale al giorno iniziale.
Ad esempio:
- La differenza nell'arco di mesi tra il 26 settembre e il 25 ottobre dello stesso anno è 0.
- La differenza nell'arco di mesi tra il 26 settembre e il 26 ottobre dello stesso anno è pari a 1.
Gli intervalli quarter
e year
seguono la stessa logica.