Per i dialetti che la supportano, la funzionalità di calendario personalizzato di Looker ti consente di definire un calendario personalizzato nel tuo database, ad esempio un calendario fiscale o di vendita al dettaglio specifico, e di applicarlo a un gruppo di dimensioni basato su date nel tuo modello LookML. I tuoi utenti possono quindi creare query di Esplora utilizzando i tuoi intervalli di tempo personalizzati, ad esempio custom_week, custom_period, come se fossero intervalli di tempo standard.
Prerequisiti
Prima di utilizzare i calendari personalizzati, assicurati che siano soddisfatti i seguenti prerequisiti:
- Devi disporre di una connessione di Looker a un dialetto che supporti i calendari personalizzati.
- Devi creare una tabella di calendario nel tuo database che puoi poi modellare come visualizzazione in Looker. Looker utilizza la tabella del calendario nel database per calcolare i periodi di tempo personalizzati. Per saperne di più, consulta la sezione Crea una tabella di calendario nel database.
- Il tuo progetto LookML deve utilizzare il nuovo runtime LookML. Se nella tua istanza è abilitata la funzionalità legacy Utilizza il runtime LookML legacy, devi aggiungere l'istruzione
new_lookml_runtime: yesal file manifest del progetto.
Creazione di un calendario personalizzato
Per implementare un calendario personalizzato, devi eseguire i seguenti passaggi generali descritti nelle sezioni seguenti:
- Crea la tabella del calendario nel database
- Definisci la visualizzazione del calendario personalizzato in LookML
- Crea un gruppo di dimensioni del calendario personalizzato
Crea una tabella del calendario nel tuo database
Per calcolare le date per i calendari personalizzati, Looker richiede una tabella di calendario dedicata nel database che definisca i periodi di tempo personalizzati. La tabella deve contenere una colonna della data di riferimento che utilizza la data del calendario standard. Looker unisce la tabella del calendario alle tabelle di dati (ad esempio una tabella orders) in base alla colonna della data di riferimento.
I nomi delle colonne nella tabella del calendario sono flessibili. Quando definisci la visualizzazione del calendario personalizzato in LookML, utilizzerai il blocco calendar_definition per mappare le colonne del tuo database ai nomi dei periodi di tempo personalizzati standard.
Di seguito è riportato uno schema di tabella di esempio per una tabella di calendario denominata fiscal_calendar_table.
| Nome colonna | Tipo di dati | Descrizione |
|---|---|---|
reference_date |
DATE |
La data di calendario standard (ad es. "2023-01-01"). Utilizzato per l'unione. Deve essere una chiave univoca o primaria. |
fiscal_day_num |
INTEGER |
La data personalizzata numerica o il giorno ordinale dell'anno (ad esempio 1). |
fiscal_year |
VARCHAR |
L'anno fiscale (ad esempio "FY2023"). |
fiscal_year_num |
INTEGER |
L'anno fiscale numerico (ad es. 2023). |
fiscal_quarter_of_year |
VARCHAR |
Il trimestre fiscale (ad esempio "FQ1"). |
fiscal_quarter_of_year_num |
INTEGER |
Il trimestre fiscale numerico (ad esempio 1). |
fiscal_week_of_year |
VARCHAR |
La settimana fiscale dell'anno (ad es. "Week01", "FW01"). |
fiscal_week_of_year_num |
INTEGER |
La settimana fiscale numerica dell'anno (ad esempio 1). |
fiscal_period_of_year |
VARCHAR |
Un nome di periodo personalizzato (ad esempio "P01"). |
fiscal_period_of_year_num |
INTEGER |
Il periodo personalizzato numerico (ad esempio 1). |
season |
VARCHAR |
Un nome di stagione personalizzato (ad esempio "Inverno"). |
season_num |
INTEGER |
La stagione personalizzata numerica (ad esempio 1). |
prev_week_num |
INTEGER |
Il valore ordinale della settimana precedente (ad esempio 52 o 53). Looker ha bisogno di questo valore per calcolare le misure periodo su periodo nei casi in cui la settimana corrente è 1 e la settimana precedente nel calendario non è 52. L'utilizzo di prev_week_num è necessario solo se vuoi utilizzare misure di confronto tra periodi con calendari personalizzati e solo se il tuo calendario personalizzato non ha 52 settimane. |
prev_day_num |
INTEGER |
Il valore ordinale del giorno precedente (ad esempio 364 o 371). Looker ha bisogno di questo valore per calcolare le misure periodo su periodo nei casi in cui il giorno corrente è 1 e il giorno precedente nel calendario non è 364. L'utilizzo di prev_day_num è necessario solo se vuoi utilizzare misure di confronto tra periodi con calendari personalizzati e solo se il tuo calendario personalizzato non ha 364 giorni. |
Per illustrare, ecco alcune righe di esempio della tabella fiscal_calendar_table:
reference_date |
fiscal_day_num |
fiscal_year |
fiscal_year_num |
fiscal_period |
fiscal_period_num |
prev_week_num |
prev_day_num |
|---|---|---|---|---|---|---|---|
2023-12-25 |
359 |
FY2024 |
2024 |
P01 |
1 |
51 |
358 |
2023-12-26 |
360 |
FY2024 |
2024 |
P01 |
1 |
51 |
359 |
2024-01-01 |
1 |
FY2024 |
2024 |
P02 |
2 |
52 |
364 |
2024-01-02 |
2 |
FY2024 |
2024 |
P02 |
2 |
52 |
1 |
Definisci la visualizzazione del calendario personalizzato in LookML
Dopo aver creato una tabella di calendario nel database, devi creare una vista LookML per modellare la tabella di calendario del database.
Il file della visualizzazione calendario personalizzata deve includere quanto segue:
- Il parametro
sql_table_nameche rimanda alla tabella del calendario personalizzato nel tuo database. - Il blocco
calendar_definitionper mappare le colonne della tabella ai tipi di periodo di tempo personalizzati di Looker. - Parametri
dimensionper modellare le colonne della tabella del calendario personalizzato nel database.
Ecco un esempio di file di visualizzazione denominato fiscal_calendar.view.lkml che modella l'esempio fiscal_calendar_table:
view: fiscal_calendar {
sql_table_name: fiscal_calendar_table ;;
calendar_definition: {
reference_date: reference_date
timeframe_mapping: {
custom_year: fiscal_year
custom_quarter: fiscal_quarter_of_year
custom_date: fiscal_date
custom_week: fiscal_week_of_year
custom_period: fiscal_period_of_year
custom_season: season
}
timeframe_ordinal_mapping: {
custom_year: fiscal_year_num
custom_quarter: fiscal_quarter_of_year_num
custom_date: fiscal_day_num
custom_week: fiscal_week_of_year_num
custom_period: fiscal_period_of_year_num
custom_season: season_num
}
previous_ordinal_mapping: {
custom_week: prev_week_num
custom_date: prev_day_num
}
}
dimension: reference_date {
type: date
primary_key: yes
sql: ${TABLE}.reference_date ;; # Assuming column name is reference_date
}
dimension: fiscal_date {
type: string
sql: FORMAT_TIMESTAMP('%Y-%m-%d', ${TABLE}.reference_date) ;;
}
dimension: fiscal_day_num {
type: number
sql: ${TABLE}.fiscal_day_num ;;
}
dimension: fiscal_year {
type: string
sql: ${TABLE}.fiscal_year ;;
}
dimension: fiscal_year_num {
type: number
sql: ${TABLE}.fiscal_year_num ;;
}
# ... other dimensions for quarters, weeks, periods, seasons, etc. ...
# Example placeholder dimensions for unused timeframes
dimension: season {
type: string
sql: 'N/A' ;;
hidden: yes
}
dimension: season_num {
type: number
sql: 0 ;;
hidden: yes
}
}
Per informazioni dettagliate sui parametri calendar_definition, consulta la pagina dei parametri calendar_definition.
Crea un gruppo di dimensioni del calendario personalizzato
Dopo aver creato una tabella del calendario nel database e modellato la tabella del calendario del database in LookML, puoi creare un gruppo di dimensioni di type: custom_calendar basato sulla vista del calendario personalizzato.
Ad esempio, di seguito è riportato un file di visualizzazione denominato orders.view.lkml che definisce un gruppo di dimensioni del calendario personalizzato.
include: "/views/fiscal_calendar.view"
view: orders {
sql_table_name: public.orders ;;
dimension_group: created {
type: custom_calendar
# Optional list of allowed timeframes
custom_timeframes: [
custom_date,
custom_week,
custom_year
]
sql: ${TABLE}.created_at ;;
based_on_calendar: fiscal_calendar # This links to your calendar view
}
}
Con questo LookML, Looker creerà automaticamente un nuovo insieme di periodi di tempo personalizzati per il gruppo di dimensioni created (ad esempio "Anno fiscale", "Settimana fiscale"). Gli utenti possono quindi utilizzare questi campi per l'esplorazione, la generazione di report e l'applicazione di filtri.
Per informazioni dettagliate sulla creazione di un gruppo di dimensioni per i calendari personalizzati, consulta la pagina della documentazione di dimension_group.
Aspetti da considerare
Tieni presente le seguenti limitazioni relative ai calendari personalizzati:
- Misure filtrate: i calendari personalizzati non sono supportati per le misure filtrate. Non puoi fare riferimento a una dimensione del calendario personalizzato nel parametro
filtersdi una misura. - Filtri avanzati: i calendari personalizzati non sono supportati nei filtri avanzati. Non puoi fare riferimento a una dimensione del calendario personalizzato nelle espressioni di filtro di Looker.
- Aggregati simmetrici: in alcuni scenari di join complessi, gli aggregati simmetrici potrebbero non essere completamente supportati per le query che coinvolgono dimensioni del calendario personalizzate.
- Riempimento della dimensione:Looker non può riempire la dimensione con le date mancanti per le dimensioni del calendario personalizzato.
- Filtro oltre i limiti del calendario:se un filtro viene applicato a un periodo di tempo personalizzato che genera una data non presente nel calendario, potrebbero essere restituiti risultati imprevisti. Questo è legato all'aritmetica ordinale utilizzata per calcolare l'inizio di un periodo.
- Filtri
OR:i filtriORnon sono supportati per le query con calendari personalizzati. - Comportamento di conversione del fuso orario:Looker rispetta la semantica di conversione del fuso orario esistente. In altre parole, se il fuso orario del database e quello della query corrispondono, non viene applicata alcuna conversione del fuso orario. Se non corrispondono, Looker applica la conversione del fuso orario. Puoi eseguire l'override di questo comportamento specificando
convert_tz: nonel gruppo di dimensioni del calendario personalizzato. - Ordinamento predefinito:Looker applica un ordinamento predefinito al primo campo della data quando vengono selezionati campi del calendario personalizzati. L'utente può quindi specificare un ordinamento dei dati diverso.
- Filtri del calendario personalizzato:le dimensioni del calendario personalizzato supportano opzioni di filtro specifiche, ad esempio è negli ultimi 3 anni personalizzati o è questo periodo personalizzato. Per saperne di più, consulta la sezione Filtri del calendario personalizzati della pagina della documentazione Filtro e limitazione dei dati.
Dialetti di database supportati per i calendari personalizzati
La tabella seguente mostra i dialetti che supportano i calendari personalizzati nell'ultima release di Looker:
| 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 | |
| ClickHouse 26+ | |
| 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+ | |
| Dremio 26+ with Arrow Flight SQL | |
| 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 |