Utilizzo di calendari personalizzati in Looker

Per i dialetti che la supportano, la funzionalità dei calendari personalizzati in Looker ti consente di definire un calendario personalizzato nel database, ad esempio un calendario fiscale o di vendita al dettaglio specifico, e poi di applicarlo a un gruppo di dimensioni basato sulla data nel modello LookML. Gli utenti possono quindi creare query di esplorazione utilizzando i timeframe personalizzati, ad esempio custom_week, custom_period, come se fossero timeframe standard.

Prerequisiti

Prima di utilizzare i calendari personalizzati, assicurati che siano soddisfatti i seguenti prerequisiti:

Creare un calendario personalizzato

Per implementare un calendario personalizzato, devi eseguire questi passaggi generali descritti nelle sezioni seguenti:

  1. Crea la tabella del calendario nel database
  2. Definisci la visualizzazione del calendario personalizzato in LookML
  3. Crea un gruppo di dimensioni del calendario personalizzato

Creare una tabella del calendario nel database

Per calcolare le date dei calendari personalizzati, Looker ha bisogno di una tabella del calendario dedicata nel database che definisca i timeframe personalizzati. La tabella deve avere una colonna della data di riferimento che utilizzi la data del calendario standard. Looker unisce la tabella del calendario alle tabelle dei 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 database ai nomi dei timeframe personalizzati standard.

Di seguito è riportato un esempio di schema di tabella per una tabella del calendario denominata fiscal_calendar_table.

Nome colonna Tipo di dati Descrizione
reference_date DATE La data del calendario standard (ad esempio "2023-01-01"). Utilizzata per l'unione. Deve essere una chiave univoca o primaria.
fiscal_year VARCHAR L'anno fiscale (ad esempio "FY2023").
fiscal_year_num INTEGER L'anno fiscale numerico (ad esempio 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 esempio "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).

Per illustrare, ecco alcune righe di esempio della tabella fiscal_calendar_table:

reference_date fiscal_year fiscal_year_num fiscal_period fiscal_period_num
2023-12-25 FY2024 2024 P01 1
2023-12-26 FY2024 2024 P01 1
2024-01-01 FY2024 2024 P02 2
2024-01-02 FY2024 2024 P02 2

Definire la visualizzazione del calendario personalizzato in LookML

Dopo aver creato una tabella del calendario nel database, devi creare una visualizzazione LookML per modellare la tabella del calendario del database.

Il file di vista del calendario personalizzato deve includere quanto segue:

  • Il sql_table_name parametro che rimanda alla tabella del calendario personalizzato nel database.
  • Il blocco calendar_definition per mappare le colonne della tabella ai tipi di timeframe personalizzati di Looker.
  • dimension parametri per modellare le colonne della tabella del calendario personalizzato nel database.

Di seguito è riportato un esempio di file di vista 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_date_num
      custom_week: fiscal_week_of_year_num
      custom_period: fiscal_period_of_year_num
      custom_season: season_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_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.

Creare 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 visualizzazione 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 set di timeframe personalizzati per il gruppo di dimensioni created (ad esempio "Created Custom Year", "Created Custom Week"). Gli utenti possono quindi utilizzare questi campi per l'esplorazione, la creazione di report e il filtraggio.

Per informazioni dettagliate sulla creazione di un gruppo di dimensioni per i calendari personalizzati, consulta la pagina della documentazione dimension_group.

Aspetti da considerare

Tieni presenti le seguenti limitazioni con i 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 filters di 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.
  • Aggregazioni simmetriche: in alcuni scenari di unione complessi, le aggregazioni simmetriche potrebbero non essere completamente supportate per le query che coinvolgono le dimensioni del calendario personalizzato.
  • Riempimento delle dimensioni: Looker non può riempire le date mancanti per le dimensioni del calendario personalizzato.
  • Filtraggio oltre i limiti del calendario: se viene applicato un filtro a un timeframe personalizzato che genera una data non presente nel calendario, potrebbero essere restituiti risultati imprevisti. Questo è dovuto all'aritmetica ordinale utilizzata per calcolare l'inizio di un periodo.
  • Comportamento di conversione del fuso orario: Looker rispetta la semantica di conversione del fuso orario esistente. Ovvero, se il fuso orario del database e della query corrispondono, non viene applicata alcuna conversione del fuso orario. In caso contrario, Looker applica la conversione del fuso orario. Puoi ignorare questo comportamento specificando convert_tz: no nel gruppo di dimensioni del calendario personalizzato.
  • Ordinamento predefinito: Looker applica un ordinamento predefinito al primo campo data quando vengono selezionati i campi del calendario personalizzato. 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 is in the last 3 custom years (è negli ultimi 3 anni personalizzati) o is this custom period (è questo periodo personalizzato). Per saperne di più, consulta la sezione Filtri del calendario personalizzato nella pagina della documentazione Filtrare e limitare i 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
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
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