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

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

前提条件

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

カスタム カレンダーの作成

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

  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 カスタム シーズン名(「冬」など)。
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 では、カスタム カレンダー ディメンションの欠落している日付をディメンション フィルできません。
  • カレンダーの範囲を超えたフィルタリング: フィルタをカスタム期間に適用した結果、カレンダーにない日付が生成された場合、予期しない結果が返されることがあります。これは、期間の開始を計算するために使用される順序演算に関連しています。
  • OR フィルタ: カスタム カレンダーを含むクエリでは、OR フィルタは対象外です。
  • タイムゾーン変換の動作: Looker は、既存のタイムゾーン変換のセマンティクスを尊重します。つまり、データベースとクエリのタイムゾーンが一致する場合、タイムゾーン変換は適用されません。一致しない場合は、Looker によってタイムゾーン変換が適用されます。この動作をオーバーライドするには、カスタム カレンダー ディメンション グループに convert_tz: no を指定します。
  • デフォルトの並べ替え: カスタム カレンダー フィールドが選択されている場合、Looker は最初の日付フィールドにデフォルトの並べ替えを適用します。ユーザーは、別のデータ並べ替えを指定できます。
  • カスタム カレンダー フィルタ: カスタム カレンダー ディメンションでは、[過去 3 年間のカスタム期間] や [このカスタム期間] などの特定のフィルタ オプションがサポートされています。詳細については、データのフィルタリングと制限のドキュメント ページのカスタム カレンダー フィルタをご覧ください。

カスタム カレンダーに対応するデータベース言語

次の表に、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