gruppo_dimensioni

Utilizzo

view: view_name {
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
  • Il valore di type può essere time o duration
  • Utilizzati di solito con un parametro timeframes o intervals
  • Utilizzare un parametro datatype se il gruppo di dimensioni non è basato su un campo data/ora
  • Per i gruppi di dimensioni di type: time, utilizza un parametro convert_tz se vuoi impedire la conversione automatica del fuso orario

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 e sql_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 dimensioni 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 è descritto più dettagliatamente nella sezione Specificare il database datatype 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 di type: 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 è inclusa timeframes, 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 dimensioni type: 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 database datatype 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 e convert_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

Intervallo di tempo Descrizione Output di esempio
raw Il valore non elaborato del database, senza trasmissione o conversione del fuso orario. raw è accessibile solo da LookML e non verrà visualizzato nella pagina Esplora. A differenza della maggior parte degli altri periodi di tempo che restituiscono una stringa formattata, l'intervallo di tempo raw restituisce un timestamp. Viene utilizzata principalmente per eseguire operazioni sulla data in un campo. 2014-09-03
17:15:00 +0000
yesno Una dimensione yesno, che restituisce "Sì" se la data/ora ha un valore, altrimenti "No". A differenza di altri periodi di tempo, quando fai riferimento a una dimensione relativa a un periodo di tempo di yesno proveniente da un altro campo, non includere il periodo di tempo nel riferimento. Ad esempio, per fare riferimento a un periodo di tempo yesno in dimension_group: created, utilizza la sintassi ${created}, non ${created_yesno}. Yes

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

Intervalli di date

Intervallo di tempo Descrizione Output di esempio
date Data del campo sottostante 2017-09-03

Intervalli di tempo della settimana

Intervallo di tempo Descrizione Output di esempio
week Data della settimana a partire da un lunedì della data/ora sottostante 2017-09-01
day_of_week Solo il giorno della settimana Wednesday
day_of_week_index Indice del giorno della settimana (0 = Monday, 6 = Sunday) 2

Tempistiche di un mese

Intervallo di tempo Descrizione Output di esempio
month Anno e mese della data e ora sottostanti 2014-09
month_num Numero intero del mese della data/ora sottostante 9
fiscal_month_num Numero intero del mese fiscale della data/ora sottostante 6
month_name Nome del mese September
day_of_month Giorno del mese 3

Per utilizzare gli intervalli fiscal_month_num, il parametro fiscal_month_offset deve essere impostato nel modello.

Tempistiche del trimestre

Intervallo di tempo Descrizione Output di esempio
quarter Anno e trimestre della data e ora sottostanti 2017-Q3
fiscal_quarter Anno fiscale e trimestre dell'orario di riferimento sottostante 2017-Q3
quarter_of_year Trimestre dell'anno preceduto da una "Q" Q3
fiscal_quarter_of_year Trimestre fiscale dell'anno preceduto da una "Q" Q3

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

Intervallo di tempo Descrizione Output di esempio
year Anno intero della data/ora sottostante 2017
fiscal_year Anno fiscale intero del data/ora sottostante FY2017
day_of_year Giorno dell'anno 143
week_of_year Settimana dell'anno in formato numerico 17

Per utilizzare il periodo di tempo di fiscal_year, il parametro fiscal_month_offset deve essere impostato nel modello.

Utilizzo di hourX

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.

Utilizzo di minuteX

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.

Utilizzo di millisecondX

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 su dimension_group con più di timeframe. 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.