Utiliser des calendriers personnalisés dans Looker

Pour les dialectes compatibles, la fonctionnalité de calendrier personnalisé de Looker vous permet de définir un calendrier personnalisé dans votre base de données, comme un calendrier fiscal ou commercial spécifique, puis de l'appliquer à un groupe de dimensions basé sur des dates dans votre modèle LookML. Vos utilisateurs peuvent ensuite créer des requêtes d'exploration à l'aide de vos périodes personnalisées, telles que custom_week, custom_period, comme s'il s'agissait de périodes standards.

Prérequis

Avant d'utiliser des calendriers personnalisés, assurez-vous que les conditions préalables suivantes sont remplies :

Créer un calendrier personnalisé

Pour implémenter un calendrier personnalisé, vous devez suivre les étapes générales décrites dans les sections suivantes :

  1. Créer votre table de calendrier dans votre base de données
  2. Définir votre vue d'agenda personnalisée en LookML
  3. Créer un groupe de dimensions de calendrier personnalisé

Créer une table de calendrier dans votre base de données

Pour calculer les dates des calendriers personnalisés, Looker a besoin d'une table de calendrier dédiée dans votre base de données qui définit vos périodes personnalisées. Votre table doit comporter une colonne de date de référence qui utilise la date du calendrier standard. Looker joint votre table de calendrier à vos tables de données (comme une table orders) en fonction de la colonne de date de référence.

Les noms des colonnes de la table de calendrier sont flexibles. Lorsque vous définissez la vue de calendrier personnalisé dans LookML, vous utilisez le bloc calendar_definition pour mapper les colonnes de votre base de données avec des noms de périodes personnalisées standards.

Voici un exemple de schéma de table pour une table de calendrier nommée fiscal_calendar_table.

Nom de la colonne Type de données Description
reference_date DATE Date calendaire standard (par exemple, "2023-01-01"). Utilisé pour la jointure. Doit être une clé unique ou primaire.
fiscal_day_num INTEGER Date personnalisée numérique ou jour ordinal de l'année (par exemple, 1).
fiscal_year VARCHAR L'année fiscale (par exemple, "FY2023").
fiscal_year_num INTEGER Année fiscale numérique (par exemple, 2023).
fiscal_quarter_of_year VARCHAR Trimestre fiscal (par exemple, "FQ1").
fiscal_quarter_of_year_num INTEGER Trimestre fiscal numérique (par exemple, 1).
fiscal_week_of_year VARCHAR Semaine fiscale de l'année (par exemple, "Week01", "FW01").
fiscal_week_of_year_num INTEGER Numéro de la semaine fiscale de l'année (par exemple, 1).
fiscal_period_of_year VARCHAR Nom de période personnalisé (par exemple, "P01").
fiscal_period_of_year_num INTEGER La période personnalisée numérique (par exemple, 1).
season VARCHAR Nom de saison personnalisé (par exemple, "Hiver").
season_num INTEGER La saison personnalisée numérique (par exemple, 1).
prev_week_num INTEGER Valeur ordinale de la semaine précédente (par exemple, 52 ou 53). Looker a besoin de cette valeur pour calculer les mesures d'une période à l'autre lorsque la semaine en cours est la semaine 1 et que la semaine précédente de votre calendrier n'est pas la semaine 52. L'utilisation de prev_week_num n'est nécessaire que si vous souhaitez utiliser des mesures d'une période à l'autre avec des calendriers personnalisés, et uniquement si votre calendrier personnalisé ne comporte pas 52 semaines.
prev_day_num INTEGER Valeur ordinale du jour précédent (par exemple, 364 ou 371). Looker a besoin de cette valeur pour calculer les mesures d'une période à l'autre lorsque le jour actuel est le jour 1 et que le jour précédent dans votre calendrier n'est pas le jour 364. L'utilisation de prev_day_num n'est nécessaire que si vous souhaitez utiliser des mesures d'une période à l'autre avec des calendriers personnalisés, et uniquement si votre calendrier personnalisé ne comporte pas 364 jours.

Voici quelques exemples de lignes de la table 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

Définir votre vue de calendrier personnalisée en LookML

Après avoir créé une table de calendrier dans votre base de données, vous devez créer une vue LookML pour modéliser la table de calendrier de la base de données.

Le fichier de vue de calendrier personnalisé doit inclure les éléments suivants :

  • Le paramètre sql_table_name qui pointe vers la table de calendrier personnalisée de votre base de données.
  • Le bloc calendar_definition pour mapper les colonnes de votre table aux types de périodes personnalisées Looker.
  • dimension pour modéliser les colonnes de la table de calendrier personnalisée dans votre base de données.

Voici un exemple de fichier de vue appelé fiscal_calendar.view.lkml qui modélise l'exemple 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
  }
}

Pour en savoir plus sur les paramètres calendar_definition, consultez la page du paramètre calendar_definition.

Créer un groupe de dimensions de calendrier personnalisé

Après avoir créé une table de calendrier dans votre base de données et modélisé la table de calendrier de la base de données dans LookML, vous pouvez créer un groupe de dimensions de type: custom_calendar basé sur la vue de calendrier personnalisée.

Par exemple, voici un fichier de vue nommé orders.view.lkml qui définit un groupe de dimensions de calendrier personnalisé.

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
  }
}

Avec ce code LookML, Looker créera automatiquement un nouvel ensemble de périodes personnalisées pour le groupe de dimensions created (par exemple, "Année fiscale", "Semaine fiscale"). Les utilisateurs peuvent ensuite utiliser ces champs pour l'exploration, la création de rapports et le filtrage.

Consultez la page de documentation dimension_group pour savoir comment créer un groupe de dimensions pour les calendriers personnalisés.

Éléments à prendre en compte

Notez les limites suivantes concernant les calendriers personnalisés :

  • Mesures filtrées : les calendriers personnalisés ne sont pas compatibles avec les mesures filtrées. Vous ne pouvez pas référencer une dimension de calendrier personnalisé dans le paramètre filters d'une mesure.
  • Filtres avancés : les calendriers personnalisés ne sont pas compatibles avec les filtres avancés. Vous ne pouvez pas référencer une dimension de calendrier personnalisé dans les expressions de filtre Looker.
  • Agrégations symétriques : dans certains scénarios de jointure complexes, il est possible que les agrégations symétriques ne soient pas entièrement compatibles avec les requêtes impliquant des dimensions de calendrier personnalisé.
  • Remplissage de dimension : Looker ne peut pas remplir les dimensions pour les dates manquantes dans les dimensions de calendrier personnalisées.
  • Filtrage au-delà des limites du calendrier : si un filtre est appliqué à une période personnalisée qui donne une date qui ne figure pas dans le calendrier, des résultats inattendus peuvent être renvoyés. Cela est lié à l'arithmétique ordinale utilisée pour calculer le début d'une période.
  • Filtres OR : les filtres OR ne sont pas compatibles avec les requêtes utilisant des calendriers personnalisés.
  • Comportement de conversion de fuseau horaire : Looker respecte la sémantique de conversion de fuseau horaire existante. Autrement dit, si le fuseau horaire de la base de données et celui de la requête correspondent, aucune conversion de fuseau horaire n'est appliquée. Si elles ne correspondent pas, Looker applique la conversion de fuseau horaire. Vous pouvez ignorer ce comportement en spécifiant convert_tz: no pour votre groupe de dimensions de calendrier personnalisé.
  • Tri par défaut : Looker applique un tri par défaut au premier champ de date lorsque des champs de calendrier personnalisés sont sélectionnés. L'utilisateur peut ensuite spécifier un autre tri des données.
  • Filtres de calendrier personnalisés : les dimensions de calendrier personnalisées sont compatibles avec des options de filtrage spécifiques, telles que is in the last 3 custom years (au cours des trois dernières années personnalisées) ou is this custom period (est cette période personnalisée). Pour en savoir plus, consultez la section Filtres de calendrier personnalisés de la page de documentation Filtrer et limiter les données.

Dialectes de base de données compatibles avec les calendriers personnalisés

Le tableau suivant répertorie les dialectes compatibles avec les calendriers personnalisés dans la dernière version de Looker :

Dialecte Compatibilité
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