Looker でカスタム カレンダーを使用する

Looker のカスタム カレンダー機能を使用すると、サポートされている言語で、特定の会計カレンダーや小売カレンダーなどのカスタム カレンダーをデータベースで定義し、そのカレンダーを LookML モデルの日付ベースのディメンション グループに適用できます。ユーザーは、標準の期間と同じように、custom_weekcustom_period などのカスタム期間を使用して Explore クエリを作成できます。

前提条件

カスタム カレンダーを使用する前に、次の前提条件を満たしていることを確認してください。

  • カスタム カレンダーをサポートする言語への Looker 接続が必要です。
  • データベースにカレンダー テーブルを作成し、Looker でビューとしてモデル化する必要があります。Looker は、データベースのカレンダー テーブルを使用してカスタム期間を計算します。詳細については、データベースにカレンダー テーブルを作成するをご覧ください。
  • LookML プロジェクトで新しい LookML ランタイムを使用する必要があります。インスタンスでレガシー機能の [以前の LookML ランタイムを使用する] が有効になっている場合は、プロジェクトのマニフェスト ファイルに new_lookml_runtime: yes ステートメントを追加する必要があります。

カスタム カレンダーを作成する

カスタム カレンダーを実装するには、次のセクションで説明する一般的な手順を行う必要があります。

  1. データベースにカレンダー テーブルを作成する
  2. LookML でカスタム カレンダー ビューを定義する
  3. カスタム カレンダー ディメンション グループを作成する

データベースにカレンダー テーブルを作成する

カスタム カレンダーの日付を計算するには、カスタム期間を定義する専用のカレンダー テーブルがデータベースに必要です。テーブルには、標準カレンダーの日付を使用する参照日付列が必要です。Looker は、参照日付列に基づいてカレンダー テーブルをデータテーブル(orders テーブルなど)に結合します。

カレンダー テーブルの列名は柔軟に設定できます。LookML でカスタム カレンダー ビューを定義する場合は、calendar_definition ブロックを使用して、データベースの列を標準のカスタム期間名にマッピングします。

次の表に、fiscal_calendar_table という名前のカレンダー テーブルのテーブル スキーマの例を示します。

列名 データ型 説明
reference_date DATE 標準カレンダーの日付(「2023-01-01」など)。結合に使用されます。一意のキーまたは主キーにする必要があります。
fiscal_year VARCHAR 会計年度(「FY2023」など)。
fiscal_year_num INTEGER 数値の会計年度(2023 など)。
fiscal_quarter_of_year VARCHAR 会計四半期(「FQ1」など)。
fiscal_quarter_of_year_num INTEGER 数値の会計四半期(1 など)。
fiscal_week_of_year VARCHAR 年内の会計週(「Week01」、「FW01」など)。
fiscal_week_of_year_num INTEGER 数値の年内の会計週(1 など)。
fiscal_period_of_year VARCHAR カスタム期間名(「P01」など)。
fiscal_period_of_year_num INTEGER 数値のカスタム期間(1 など)。
season VARCHAR カスタム シーズン名(「Winter」など)。
season_num INTEGER 数値のカスタム シーズン(1 など)。

例として、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

LookML でカスタム カレンダー ビューを定義する

データベースにカレンダー テーブルを作成したら、LookML ビューを作成してデータベース カレンダー テーブルをモデル化する必要があります。

カスタム カレンダー ビューファイルには、次のものが含まれている必要があります。

  • データベースのカスタム カレンダー テーブルを指す sql_table_name パラメータ。
  • テーブルの列を Looker のカスタム期間タイプにマッピングする calendar_definition ブロック。
  • dimension データベースのカスタム カレンダー テーブルの列をモデル化するパラメータ。

次に、例の fiscal_calendar_table をモデル化する fiscal_calendar.view.lkml というビューファイルの例を示します。

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

calendar_definition パラメータの詳細については、calendar_definition パラメータのページをご覧ください。

カスタム カレンダー ディメンション グループを作成する

データベースにカレンダー テーブルを作成し、LookML でデータベース カレンダー テーブルをモデル化したら、カスタム カレンダー ビューに基づいてディメンション グループtype: custom_calendarを作成できます。

たとえば、カスタム カレンダー ディメンション グループを定義する orders.view.lkml という名前のビューファイルは次のようになります。

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

この LookML を使用すると、Looker は created ディメンション グループの新しいカスタム期間セット(「Created Custom Year」、「Created Custom Week」など)を自動的に作成します。ユーザーは、これらのフィールドを使用して、探索、レポート作成、フィルタリングを行うことができます。

カスタム カレンダーのディメンション グループの作成の詳細については、dimension_group ドキュメント ページをご覧ください。

注意点

カスタム カレンダーには次の制限事項があります。

  • フィルタされたメジャー: カスタム カレンダーは、フィルタされたメジャーではサポートされていません。メジャーの filters パラメータでカスタム カレンダー ディメンションを参照することはできません。
  • 高度なフィルタ: カスタム カレンダーは、高度なフィルタではサポートされていません。Looker フィルタ式でカスタム カレンダー ディメンションを参照することはできません。
  • 対称集計: 複雑な結合シナリオでは、対称集計がカスタム カレンダー ディメンションを含むクエリで完全にサポートされない場合があります。
  • ディメンション フィル: Looker では、カスタム カレンダー ディメンションの欠落した日付をディメンション フィルすることはできません。
  • カレンダーの境界を超えるフィルタリング: カレンダーにない日付になるカスタム期間にフィルタを適用すると、予期しない結果が返されることがあります。これは、期間の開始を計算するために使用される順序演算に関連しています。
  • タイムゾーン変換の動作: Looker は、既存のタイムゾーン変換セマンティクスを尊重します。つまり、データベースとクエリのタイムゾーンが一致する場合、タイムゾーン変換は適用されません。一致しない場合は、Looker がタイムゾーン変換を適用します。この動作をオーバーライドするには、カスタム カレンダー ディメンション グループに convert_tz: no を指定します。
  • デフォルトの並べ替え: カスタム カレンダー フィールドを選択すると、Looker は最初の日付フィールドにデフォルトの並べ替えを適用します。ユーザーは、別のデータの並べ替えを指定できます
  • カスタム カレンダー フィルタ: カスタム カレンダー ディメンションは、[is in the last 3 custom years] や [is this custom period] などの特定のフィルタ オプションをサポートしています。詳細については、カスタム カレンダー フィルタ セクションの データのフィルタリングと制限 ドキュメント ページをご覧ください。

カスタム カレンダーでサポートされているデータベース言語

次の表に、Looker の最新リリースでカスタム カレンダーをサポートする言語を示します。

言語 サポート対象
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