Looker のカスタム カレンダー機能を使用すると、サポートされている言語で、特定の会計カレンダーや小売カレンダーなどのカスタム カレンダーをデータベースで定義し、そのカレンダーを LookML モデルの日付ベースのディメンション グループに適用できます。ユーザーは、標準の期間と同じように、custom_week、custom_period などのカスタム期間を使用して Explore クエリを作成できます。
前提条件
カスタム カレンダーを使用する前に、次の前提条件を満たしていることを確認してください。
- カスタム カレンダーをサポートする言語への 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 |
カスタム シーズン名(「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 |