サポートされている言語の場合、Looker のカスタム カレンダー機能を使用すると、特定の会計年度や小売業の暦など、データベースでカスタム カレンダーを定義し、そのカレンダーを LookML モデルの日付ベースのディメンション グループに適用できます。ユーザーは、標準の期間と同じように、カスタム期間(custom_week、custom_period など)を使用してデータ探索クエリを作成できます。
前提条件
カスタム カレンダーを使用する前に、次の前提条件を満たしていることを確認してください。
- カスタム カレンダーをサポートする言語への Looker 接続が必要です。
- データベースにカレンダー テーブルを作成し、Looker でビューとしてモデル化する必要があります。Looker は、データベースのカレンダー テーブルを使用してカスタム期間を計算します。詳細については、データベースにカレンダー テーブルを作成するをご覧ください。
- LookML プロジェクトで新しい LookML ランタイムを使用する必要があります。インスタンスで [以前の LookML ランタイムを使用する] レガシー機能が有効になっている場合は、プロジェクトのマニフェスト ファイルに
new_lookml_runtime: yesステートメントを追加する必要があります。
カスタム カレンダーの作成
カスタム カレンダーを実装するには、次のセクションで説明する一般的な手順を行う必要があります。
データベースにカレンダー テーブルを作成する
カスタム カレンダーの日付を計算するには、カスタム期間を定義する専用のカレンダー テーブルがデータベースに必要です。テーブルには、標準のカレンダーの日付を使用する参照日付列が必要です。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 |