dimension_group

Utilizzo

view: view_name {
  dimension_group:  field_name { ... }
}
Gerarchia
dimension_group
Accetta
Un identificatore Looker (che fungerà 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. Definisci il gruppo di dimensioni e questo creerà un insieme di dimensioni individuali per diversi intervalli o periodi di tempo. Ad esempio, è possibile specificare un gruppo di dimensioni ditype: time in base a una colonna timestamp, il gruppo di dimensioni creerà le dimensioni corrispondenti per esprimere i dati in termini di tempo, data, settimana, ora, trimestre e anno.

La forma e la funzione del gruppo di dimensioni sono diverse a seconda del valore type del gruppo di dimensioni:

Gruppi di dimensioni del tipo di durata

type: duration viene utilizzato insieme a un dimension_group per calcolare un insieme di dimensioni della durata basate sull'intervallo.

La forma di un gruppo di dimensioni di type: duration è la seguente:

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, …] # see following explanation for valid intervals
}

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 di fine della durata. Per maggiori dettagli, consulta la sezione Definire l'inizio e la fine di una durata in questa pagina.

  • Il parametro intervals specifica una o più unità di intervallo da utilizzare per misurare la differenza di tempo. Le scelte possibili sono elencate nella sezione Opzioni di intervallo di questa pagina.

  • I valori di durata vengono arrotondati per difetto al numero intero più vicino.

  • Il parametro datatype è facoltativo. Se il gruppo di dimensioni non si basa su una data e ora, puoi specificare un formato epoca, timestamp, data o AAAAMMGG. Per i gruppi di dimensioni di type: duration, il parametro datatype si applica sia al parametro sql_start che al parametro sql_end, quindi assicurati che sia sql_start che sql_end siano del tipo di dati specificato. ILdatatype parameter is described in greater detail in theSpecifying the databasedatatype section on this page.

Sebbene non siano 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 di durata per vedere quanto tempo hanno trascorso gli studenti a scuola, calcolato a intervalli di settimane e anni:

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 chiamato Durata iscrizione, con dimensioni individuali chiamate Settimane di iscrizione e Anni di iscrizione.

Opzioni di intervallo

Il parametro intervals indica al gruppo di dimensioni le unità di intervallo da 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 per il parametro intervals sono le seguenti:

Intervallo Descrizione Output di esempio
day Calcola la 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 la differenza di fuso orario tra i trimestri dell'anno. 2 quarters
second Calcola la 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

Definire l'inizio e la fine di una 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 accettare qualsiasi espressione SQL valida che contenga 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 orario dal database, utilizzando l'espressione appropriata per il tuo dialetto
  • Un riferimento a un campo LookML che utilizza il ::datetime o il ::date riferimento al tipo di campo

Ad esempio, supponiamo 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 di type: duration che calcola la quantità di tempo trascorso dalla data dell'evento FAA. A questo scopo, puoi utilizzare la dimensione faa_event_date_raw come ora di inizio del calcolo e poi, per l'ora di fine del calcolo, puoi utilizzare l'espressione SQL del tuo dialetto per l'ora corrente. Questo esempio riguarda 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, verrà generato un gruppo di dimensioni chiamato Durata dall'evento, con dimensioni individuali chiamate 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 al tipo 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 di type: duration. La sintassi view_name.field_name::type, descritta nella pagina di documentazione Incorporare SQL e fare riferimento agli oggetti LookML, consente di creare una versione ::date o ::datetime di un campo senza eseguire il cast dei riferimenti a queste dimensioni in stringhe.

Ad esempio, supponiamo di avere un gruppo di dimensioni created di type: time con periodi 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 il periodo di tempo tra una data del campo created_date e il primo giorno del mese in cui si è verificata la data, misurato 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} ;;
}

Nell'interfaccia utente di Esplora, viene creato un gruppo di dimensioni denominato Durata dal primo del mese, con le singole dimensioni Settimane dal primo del mese, Giorni dal primo del mese e Ore dal primo del mese. La specifica del tipo di riferimento ::datetime per i campi a cui viene fatto riferimento nei parametri sql_start e sql_end consente di trattare le dimensioni created_month e created_time come timestamp nell'SQL generato.

Ad esempio, supponiamo che un utente selezioni le dimensioni Data di creazione e Giorni trascorsi dal primo del mese dal selettore campi. Se uno dei valori restituiti per Data creazione è 2019-03-10, il valore restituito per Giorni dal primo del mese sarà 9 giorni.

Gruppi di dimensioni di tipo ora

type: time viene utilizzato insieme a un dimension_group e al parametro timeframes per creare un insieme di dimensioni basate sul tempo. Ad esempio, è possibile creare una dimensione per data, settimana e mese basata su una singola colonna di timestamp.

La forma di un gruppo di dimensioni di type: time è la seguente:

dimension_group: dimension_group_name {
  type: time
  timeframes: [timeframe, timeframe, …] # see following explanation for valid timeframes
  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:

  • ILtimeframes Questo parametro è facoltativo, ma raramente viene omesso. Specifica uno o più periodi di tempo che devono essere generati dal gruppo di dimensioni. Setimeframes non è incluso ogni opzione di intervallo temporale verrà aggiunta al gruppo di dimensioni. Le possibili scelte sono elencate nella sezione Opzioni di intervallo temporale di questa pagina.

  • ILsql parametro pertype: time I gruppi di dimensioni possono accettare qualsiasi espressione SQL valida che contenga dati in formato timestamp, datetime, date, epoch o yyyymmdd.

  • Il parametro datatype è facoltativo. Se il gruppo di dimensioni non si basa su una data e ora, puoi specificare un formato epoca, timestamp, data o AAAAMMGG. È descritto in modo più dettagliato nella sezione Specifica del database datatype di questa pagina.

  • Il parametro convert_tz è facoltativo e consente di impedire la conversione automatica del fuso orario. È descritto in modo più dettagliato nella sezione Conversioni dei fusi orari e convert_tz di questa pagina.

Sebbene non siano elencati qui, molti dei parametri a livello di campo possono essere utilizzati anche con i gruppi di dimensioni.

Ad esempio, supponiamo di avere una colonna denominata created_at che contiene informazioni su data e ora. Si desidera creare una dimensione per data, settimana e mese basata su questa data e ora. Potresti utilizzare:

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

Nell'interfaccia utente di Esplora, verranno generate tre dimensioni con i nomi Data creazione, Settimana creazione e Mese creazione. Tieni presente che il nome dimension_group viene combinato con i periodi di tempo per generare i nomi delle dimensioni.

Opzioni periodo di tempo

Il parametro timeframes è supportato solo per i gruppi di dimensioni di type: time. Per gruppi di dimensioni ditype: duration, utilizzare ilintervals parametro invece.

Il parametro timeframes indica al gruppo di dimensioni quali dimensioni deve produrre e include le seguenti opzioni:

Se non utilizzi il parametro timeframes per un gruppo di dimensioni di type: time o se lasci vuoto il parametro timeframes (timeframes: []), l'esplorazione includerà il set predefinito di periodi di tempo per il gruppo di dimensioni:

Periodi di tempo speciali

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

Periodi di tempo

Periodo di tempo Descrizione Output di esempio
time Data e ora del campo sottostante (alcuni dialetti SQL mostrano la stessa precisione del database, mentre altri mostrano solo la precisione al secondo). 2014-09-03 17:15:00
time_of_day Ora del giorno 17:15
hour Data e ora troncate all'ora più vicina 2014-09-03 17
hour_of_day Ora intera del giorno del campo sottostante 17
hourX Divide ogni giorno in intervalli con il numero di ore specificato. Vedi Utilizzare hourX.
minute Data e ora troncate al minuto più vicino 2014-09-03 17:15
minuteX Divide ogni ora in intervalli con il numero di minuti specificato. Vedi Utilizzare minuteX.
second Data e ora troncate al secondo più vicino 2014-09-03 17:15:00
millisecond Data e ora troncate al millisecondo più vicino (per informazioni sul supporto dei dialetti, consulta la sezione Supporto dei dialetti per millisecondi e microsecondi di questa pagina). 2014-09-03 17:15:00.000
millisecondX Divide ogni secondo in intervalli con il numero di millisecondi specificato (vedere la sezione Supporto dei dialetti per millisecondi e microsecondi in questa pagina per informazioni sul supporto dei dialetti). Vedi Utilizzare millisecondX.
microsecond Data e ora troncate al microsecondo più vicino (vedere la sezione Supporto dei dialetti per millisecondi e microsecondi in questa pagina per informazioni sul supporto dei dialetti). 2014-09-03 17:15:00.000000

Periodi di tempo

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

Periodi di tempo settimanali

Periodo di tempo Descrizione Output di esempio
week Data della settimana che inizia di lunedì della data e ora sottostante 2017-09-01
day_of_week Solo giorno della settimana Wednesday
day_of_week_index Indice del giorno della settimana (0 = lunedì, 6 = domenica) 2

Periodi di tempo mensili

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

Per utilizzare i periodi di tempo fiscal_month_num, nel modello deve essere impostato il parametro fiscal_month_offset.

Periodi di tempo trimestrali

Periodo di tempo Descrizione Output di esempio
quarter Anno e trimestre della data e ora sottostante 2017-Q3
fiscal_quarter Anno fiscale e trimestre della data e ora 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, nel modello deve essere impostato il parametro fiscal_month_offset.

Periodi di tempo annuali

Periodo di tempo Descrizione Output di esempio
year Anno intero della data e ora sottostante 2017
fiscal_year Anno fiscale intero della data e ora sottostante FY2017
day_of_year Giorno dell'anno 143
week_of_year Settimana dell'anno sotto forma di numero 17

Per utilizzare ilfiscal_year periodo di tempo, ilfiscal_month_offset Il parametro deve essere impostato nel modello.

Uso: hourX

In hourX, X viene sostituito con 2, 3, 4, 6, 8 o 12.

In questo modo, ogni giorno verrà suddiviso in intervalli con il numero di ore specificato. Ad esempio, hour6 dividerà ogni giorno in segmenti di 6 ore, che appariranno 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.

Uso: minuteX

In minuteX l'X viene sostituito con 2, 3, 4, 5, 6, 10, 12, 15, 20 o 30.

In questo modo, ogni ora verrà suddivisa in intervalli con il numero di minuti specificato. Ad esempio, minute15 dividerà ogni ora in segmenti di 15 minuti, che appariranno 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.

Uso: millisecondX

In millisecondX, X viene sostituito con 2, 4, 5, 8, 10, 20, 25, 40, 50, 100, 125, 200, 250 o 500.

In questo modo, ogni secondo verrà suddiviso in intervalli con il numero specificato di millisecondi. Ad esempio, millisecond250 suddividerà ogni secondo in segmenti di 250 millisecondi, che verranno visualizzati nel seguente modo:

  • 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 di fuso orario e convert_tz

In generale, i calcoli del tempo (differenze, durate e così via) funzionano correttamente solo quando operi su valori di tempo tutti convertiti nello stesso fuso orario, quindi è importante tenere presente i fusi orari quando scrivi LookML.

Looker dispone di varie impostazioni del fuso orario che convertono 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 una conversione del fuso orario per una determinata dimensione o un determinato gruppo di dimensioni, puoi utilizzare il parametro convert_tz descritto nella pagina di documentazione del parametro convert_tz.

Supporto dei dialetti per millisecondi e microsecondi

Looker supporta la precisione del periodo di tempo fino ai microsecondi, ma alcuni database supportano la precisione solo fino al secondo. Se un database rileva un periodo di tempo più preciso di quanto possa supportare, verrà arrotondato ai secondi.

Nell'ultima release di Looker, i seguenti dialetti supportano i millisecondi:

Dialetto Supportata?
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13.x - 0.17.x
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Exasol
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud AlloyDB for PostgreSQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
MongoSQL
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
Trino
Vector
Vertica

Nell'ultima release di Looker, i seguenti dialetti supportano i microsecondi:

Dialetto Supportata?
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13.x - 0.17.x
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Exasol
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud AlloyDB for PostgreSQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
MongoSQL
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
Trino
Vector
Vertica

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, il che può migliorare il rendimento delle query.

Per i gruppi di dimensioni di type: time, il parametro datatype si applica al parametro sql del gruppo di dimensioni.

Per gruppi di dimensioni ditype: duration, ILdatatype il parametro si applica a entrambisql_start Esql_end parametri, quindi assicurati chesql_start Esql_end entrambi sono del tipo di dati specificato.

Il parametro datatype accetta i seguenti valori:

  • epoch: Un campo epoch SQL (ovvero, un numero intero che rappresenta il numero di secondi dall'epoca Unix).
  • date: Un campo data SQL (ovvero, un campo che non contiene informazioni sull'ora del giorno).
  • datetime: un campo SQL datetime.
  • timestamp: un campo timestamp SQL.
  • yyyymmdd: un campo SQL che contiene un numero intero che rappresenta una data nel formato AAAAMMGG.

Il valore predefinito di datatype è timestamp.

Gruppi di dimensioni del tipo di calendario personalizzato

Se hai implementato calendari personalizzati nel tuo progetto LookML, puoi utilizzare type: custom_calendar insieme al parametro dimension_group per creare un insieme di dimensioni basate sul tempo in base a una tabella del calendario personalizzato definita nel database. Consulta la pagina di documentazione Utilizzo di calendari personalizzati in Looker per informazioni su come configurare calendari personalizzati nel tuo progetto LookML.

La forma di un gruppo di dimensioni di type: custom_calendar è la seguente:

dimension_group: dimension_group_name {
  type: custom_calendar
  custom_timeframes: [custom_timeframe, custom_timeframe, …] # see the following section for valid custom timeframes
  sql: SQL expression ;;  # often this refers to a single database column
  based_on_calendar: custom_calendar_view
}

Per i gruppi di dimensioni di type: custom_calendar:

  • Il parametro custom_timeframes è facoltativo. Specifica uno o più periodi di tempo personalizzati che devono essere generati dal gruppo di dimensioni. Se custom_timeframes non è specificato, il gruppo di dimensioni creerà tutti i periodi di tempo personalizzati. I possibili periodi di tempo personalizzati sono elencati nella sezione custom_timeframes di questa pagina.

  • Il parametro sql per i gruppi di dimensioni type: custom_calendar può accettare qualsiasi espressione SQL valida che contenga dati in formato timestamp, data/ora, data, epoca o aaaammgg.

  • Il parametro based_on_calendar specifica il nome della visualizzazione del calendario personalizzato che hai modellato in LookML.

  • Il parametro convert_tz è facoltativo e consente di impedire la conversione automatica del fuso orario. È descritto in modo più dettagliato nella sezione Conversioni dei fusi orari e convert_tz di questa pagina.

  • Il parametro datatype è facoltativo. Se il gruppo di dimensioni non si basa su una data e ora, puoi specificare un formato epoca, timestamp, data o AAAAMMGG. È descritto in modo più dettagliato nella sezione Specifica del tipo di dati del database di questa pagina.

Sebbene non siano elencati qui, molti dei parametri a livello di campo possono essere utilizzati anche con i gruppi di dimensioni.

Ecco un esempio di un gruppo di dimensioni del calendario personalizzato in un file LookML orders.view:

view: orders

include: "/views/retail_custom_calendar.view"

dimension_group: created {
  type: custom_calendar
  sql: ${TABLE}.created_at ;;
  custom_timeframes: [custom_year, custom_quarter]
  based_on_calendar: retail_custom_calendar
}

Si notino i seguenti elementi in questo gruppo di dimensioni del calendario personalizzato:

  • type: custom_calendar: il gruppo di dimensioni è definito come tipo di calendario personalizzato.
  • sql: ${TABLE}.created_at ;; - Il gruppo di dimensioni utilizza le informazioni di data e ora dalla colonna orders.created_at del database.
  • custom_timeframes: [custom_year, custom_quarter] - Il gruppo di dimensioni sarà etichettato Calendario personalizzato creato e conterrà intervalli di tempo etichettati Anno fiscale e Trimestre fiscale. Per saperne di più, consulta Etichette per i gruppi di dimensioni del calendario personalizzato.
  • based_on_calendar: retail_custom_calendar: il gruppo di dimensioni unirà i dati del calendario personalizzato definito nella visualizzazione retail_custom_calendar del progetto LookML ai dati della colonna orders.created_at del database per fornire risultati delle query utilizzando il calendario personalizzato. Per informazioni sulla definizione di un calendario personalizzato, consulta la pagina della documentazione Utilizzo di calendari personalizzati in Looker.

custom_timeframes

Per i gruppi di dimensioni definiti come type: custom_calendar, se non vuoi includere tutti i possibili periodi di tempo personalizzati nel gruppo di dimensioni, puoi utilizzare il parametro custom_timeframes per specificare i periodi di tempo che vuoi includere nel gruppo di dimensioni. Sono supportati i seguenti periodi di tempo personalizzati:

Tempistiche Descrizione Presupposti (per i tipi _num)

custom_date

La data specifica visualizzata nel calendario.

custom_day_num

Il giorno numerico dalla visualizzazione del calendario. Presuppone fino a 371 giorni

custom_period

Un periodo generico all'interno del calendario (ad esempio con i calendari 4-4-5).

custom_period_num

Il valore numerico del periodo personalizzato. Si presume che ci siano 12 periodi all'anno.

custom_quarter

Il trimestre dalla visualizzazione del calendario.

custom_quarter_num

Il trimestre numerico dell'anno. Si presume che ci siano 4 trimestri all'anno.

custom_season

Un periodo stagionale personalizzato.

custom_season_num

Il valore numerico della stagione personalizzata. Presuppone 2 stagioni all'anno.

custom_week

La settimana vista dal calendario.

custom_week_of_year

La settimana numerica dell'anno. Presuppone fino a 53 settimane all'anno.

custom_year

L'anno dalla visualizzazione del calendario.

custom_year_num

Il valore numerico dell'anno doganale.

based_on_calendar

Per i gruppi di dimensioni definiti come type: custom_calendar, il parametro based_on_calendar specifica il nome della visualizzazione del calendario personalizzato che hai modellato in LookML.

Etichette per i gruppi di dimensioni del calendario personalizzati

Looker genera le etichette dei campi delle dimensioni e le etichette dei gruppi nel selettore campi dell'esplorazione in base all'utilizzo dei parametri label o group_label nel gruppo di dimensioni type: custom_calendar:

  • Predefinito (non è specificato né labelgroup_label):
    • Looker raggruppa i periodi di tempo del gruppo di dimensioni sotto l'etichetta predefinita del gruppo di dimensioni, ovvero il nome del gruppo di dimensioni concatenato con Calendario personalizzato (ad esempio, Creato calendario personalizzato).
    • Looker antepone Fiscale a ogni nome di periodo di tempo (ad esempio, Data fiscale, Settimana fiscale, Anno fiscale).
  • Solo group_label:
    • Looker raggruppa i periodi di tempo del gruppo di dimensioni in base al valore group_label specificato.
    • Looker antepone il nome del gruppo di dimensioni e Fiscale a ogni nome di periodo di tempo (ad esempio, Data fiscale di creazione, Settimana fiscale di creazione, Anno fiscale di creazione).
  • Solo label:
    • Looker raggruppa i periodi di tempo del gruppo di dimensioni sotto il valore label a cui viene aggiunto Calendario personalizzato (ad esempio, per un gruppo di dimensioni definito con label: "My Label", i periodi di tempo vengono raggruppati sotto Calendario personalizzato della mia etichetta).
    • Looker antepone Fiscale a ogni nome di periodo di tempo (ad esempio, Data fiscale, Settimana fiscale, Anno fiscale).
  • Sono specificati sia group_label che label:
    • Looker raggruppa gli intervalli temporali del gruppo di dimensioni sotto il valore specificato group_label.
    • Looker antepone il valore label a ogni periodo di tempo (ad esempio, per un gruppo di dimensioni definito con label: "My Label", i periodi di tempo avranno i nomi Data etichetta, Settimana etichetta e Anno etichetta).

Localizzare i gruppi di dimensioni

È possibile utilizzare la localizzazione del modello per personalizzare e tradurre i nomi di intervalli temporali, intervalli o intervalli temporali personalizzati generati da un gruppo di dimensioni. Per informazioni, consulta Localizzazione dei gruppi di dimensioni.

Aspetti da considerare

I gruppi di dimensioni devono essere referenziati dalle singole dimensioni

Poiché un gruppo di dimensioni rappresenta un insieme di dimensioni, anziché una singola dimensione, non è possibile farvi riferimento direttamente in LookML. Dovrai invece fare riferimento alle dimensioni che crea.

Ad esempio, si consideri 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 saprà a quale periodo di tempo ti riferisci e si verificherà un errore.

Per questo stesso motivo, non devi utilizzare il parametro primary_key in un gruppo di dimensioni se specifichi più di un timeframe.

Suggerimento del team di chat: Ci viene spesso chiesto dell'errore di convalida che può verificarsi se si utilizza primary_key su un dimension_group con più di un timeframe. Per saperne di più, consulta il post della community Timeframes and Dimension Groups in Looker .

Dati timestamp che includono informazioni sul fuso orario

Alcuni dialetti del database hanno opzioni di timestamp che includono informazioni sul fuso orario. Ciò ti consente di archiviare i dati timestamp in un unico campo che può avere più fusi orari. Una riga di dati potrebbe essere memorizzata in UTC, un'altra in Eastern Time. Ad esempio, consulta la documentazione sui timestamp TIMESTAMP_LTZ, TIMESTAMP_NTZ, TIMESTAMP_TZ di Snowflake per informazioni sulle opzioni dei timestamp del dialetto Snowflake.

In questo caso, quando Looker esegue le conversioni di fuso orario, possono verificarsi degli errori. Per evitare questo problema, nel parametro sql della dimensione, devi eseguire il cast esplicito dei dati timestamp in un tipo di timestamp che non esegue la conversione del fuso orario. Ad esempio, nel dialetto Snowflake, potresti usare la funzione TO_TIMESTAMP per convertire i dati del timestamp.

È possibile creare dimensioni individuali di tempo o durata

È possibile creare una dimensione per ogni singolo periodo di tempo o durata che vuoi includere, anziché generarle tutte in un unico dimension_group. In genere puoi evitare di creare dimensioni individuali, a meno che tu non voglia modificare la convenzione di denominazione dei periodi di tempo di Looker o se hai già calcolato in anticipo le colonne temporali nel tuo database. Per saperne di più, consulta la pagina della documentazione Tipi di dimensioni, filtri e parametri.

Puoi modificare il primo giorno della settimana

Per impostazione predefinita, le settimane in Looker iniziano di lunedì. È possibile modificare questa impostazione utilizzando ilweek_start_day parametro a livello di modello.

Tieni presente che week_start_day non funziona con l'intervallo di tempo week_of_year perché si basa sullo standard ISO, che utilizza settimane che iniziano di lunedì.

I filtri personalizzati e i campi personalizzati non supportano tutti gli intervalli di tempo.

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 conteggiano solo i periodi completi

L'intervallo month in un gruppo di dimensioni duration considera un mese trascorso solo se il giorno finale è maggiore o uguale al giorno iniziale. Ad esempio:

  • La differenza in mesi tra il 26 settembre e il 25 ottobre dello stesso anno è 0.
  • La differenza in mesi tra il 26 settembre e il 26 ottobre dello stesso anno è 1.

Gli intervalli quarter e year seguono la stessa logica.