home ユーザーガイド 基本情報 ヘルプセンター ドキュメンテーション コミュニティ トレーニング 認証
menu
close
settings
Looker keyboard_arrow_down
language keyboard_arrow_down
English
Français
Deutsch
日本語
search
print
Looker documentation will be moving to cloud.google.com in mid-2022!
All the information you rely on will be migrated and all docs.looker.com URLs will be redirected to the appropriate page.
dimension_group

使用方法

view: view_name {
  dimension_group: field_name {}
}

階層

dimension_group

許容値

Looker識別子(ディメンショングループによって作成された各ディメンションの名前の最初の部分として機能する)

特別なルール

  • typeにはtimeまたはduration
  • を使用できます。
  • 通常、timeframesまたはintervalsパラメーターとともに使用されます。
  • ディメンショングループが日時フィールドに基づいていない場合は、datatypeパラメーターを使用します。
  • type: timeのディメンショングループの場合、自動タイムゾーン変換が行われないようにするには、convert_tzパラメーターを使用します。

定義

dimension_groupパラメーターは、時間ベースまたは期間ベースのディメンションのセットを一度に作成するために使用されます。ディメンショングループを定義すると、そのディメンショングループは異なる間隔タイムフレームに対してそれぞれ個別のディメンションのセットを作成します。例えば、タイムスタンプ列に基づいてディメンショングループtype: timeを指定すると、このディメンショングループは、時刻、日付、週、時間、四半期、年のデータを表す、対応するディメンションが作成されます。

ディメンショングループの形式と機能は、ディメンショングループのtype値によって異なります。

期間タイプ

type: durationは、間隔ベースの期間ディメンションのセットを計算するために、dimension_groupとともに使用されます。

type: durationのディメンショングループの形式は次のとおりです。

dimension_group: dimension_group_name { type: duration sql_start: SQL expression ;; # often this is a single database column sql_end: SQL expression ;; # often this is a single database column intervals: [interval, interval, …] # valid intervals described below }

type: durationのディメンショングループの場合:

ここには示されていませんが、フィールドレベルパラメーターの多くは、ディメンショングループでも使用できます。

例えば、enrollment_dateおよびgraduation_dateの列がある場合、期間ディメンショングループを作成して、生徒が学校で過ごした時間を週と年の間隔で計算して確認できます。

dimension_group: enrolled { type: duration intervals: [week, year] sql_start: ${TABLE}.enrollment_date ;; sql_end: ${TABLE}.graduation_date ;; }

Explore UIでは、これによってDuration Enrolledと呼ばれるディメンショングループが、Weeks EnrolledおよびYears Enrolledと呼ばれる個別のディメンションと一緒に生成されます。

間隔オプション

intervalsパラメーターは、sql_start時間とsql_end時間の時間差を測定するために使用する間隔単位をディメンショングループに伝えます。intervalsパラメーターは、type: durationのディメンショングループでのみサポートされます。

intervalsが含まれていない場合、ディメンショングループにはすべての可能な間隔が含まれます。

intervalsパラメーターのオプションは次のとおりです。

間隔 説明 出力例
day 時間差を日数で計算します。 9 days
hour 時間差を時間数で計算します。 171 hours
minute 時間差を分数で計算します。 10305 minutes
month 時間差を月数で計算します。 3 months
quarter 時間差を四半期数で計算します。 2 quarters
second 時間差を秒数で計算します。 606770 seconds
week 時間差を週数で計算します。 6 weeks
year 時間差を年数で計算します。 2 years

期間の開始と終了の定義

type: durationのディメンショングループの場合、sql_startパラメーターとsql_endパラメーターは、時間差の計算に使用される開始と終了の情報を提供します。これらのフィールドには、タイムスタンプ、日時、日付、エポック、またはyyyymmdd形式のデータを含む有効なSQL式を指定できます。sql_startおよびsql_endフィールドには、次のいずれかを使用できます。

例として、日時情報を含むfaa_event_date_rawという名前のディメンションがあるとします。

dimension: faa_event_date_raw { type: date_raw sql: ${TABLE}.event_date ;; }

FAAイベント日付から経過した時間を計算するtype: durationのディメンショングループを作成できます。そのためには、faa_event_date_rawディメンションを計算の開始時間として使用し、計算の終了時間には現在の時間のダイアレクトのSQL式を使用できます。この例は、MySQLデータベース用です。

dimension_group: since_event { type: duration intervals: [hour, day] sql_start: ${faa_event_date_raw} ;; sql_end: CURRENT_TIMESTAMP();; }

Explore UIでは、これによってDuration Since Eventと呼ばれるディメンショングループが、Hours Since EventおよびDays Since Eventと呼ばれる個別のディメンションと一緒に生成されます。

別のLookMLフィールドからの間隔の参照

type: durationdimension_groupinterval値を参照するには、interval値の複数形を使用して、構文${interval_fieldname}を使用します。例えば、LookMLの次の例では、average_days_since_eventメジャーは${days_since_event}を使用して、since_eventディメンショングループのday間隔を参照します。

dimension_group: since_event { type: duration intervals: [hour, day, week, month, quarter, year] sql_start: ${faa_event_date_raw} ;; sql_end: CURRENT_TIMESTAMP();; } measure: average_days_since_event { type: average sql: ${days_since_event} ;; }

期間フィールドのあるLookMLフィールドタイプ参照の使用

カスタム期間フィールドを作成するには、type: durationのディメンショングループのsql_startおよびsql_endパラメーターで参照されるディメンションに対して::dateまたは::datetime参照タイプを指定できます。SQLの組み込みとLookMLオブジェクトの参照ドキュメンテーションページで説明されているview_name.field_name::type構文を使用すると、これらのディメンションへの参照をストリングにキャストせずに、フィールドの::dateまたは::datetimeバージョンを作成できます。

例えば、次のように定義された、timedateweekmonthrawのタイムフレームを持つtype: timecreatedディメンショングループがあるとします。

dimension_group: created { type: time timeframes: [time, date, week, month, raw] sql: ${TABLE}.created_at ;; }

ディメンションcreated_monthおよびcreated_timeを使用して、created_dateフィールドの日付とその日付が発生した月の最初の日との間の時間を週、日、時間単位で測定するtype: durationのディメンショングループを作成できます。

dimension_group: since_first_of_month { type: duration intervals: [week, day, hour] sql_start: ${created_month::datetime} ;; sql_end: ${created_time::datetime} ;; }

Explore UIでは、これによってDuration Since First of Monthと呼ばれるディメンショングループが、Weeks Since First of MonthDays Since First of Month、およびHours Since First of Monthという個別のディメンションと一緒に生成されます。sql_startおよびsql_endパラメーターで参照されるフィールドに::datetime参照タイプを指定すると、生成されたSQLでcreated_monthおよびcreated_timeディメンションをタイムスタンプとして扱うことができます。

例として、ユーザーがフィールドピッカーからCreated DateおよびDays Since First of Monthディメンションを選択するとします。Created Dateに対して返されるいずれかの値が2019-03-10である場合、Days Since First of Monthに返される値は9 daysになります。

時間タイプ

type: timeは、時間ベースのディメンションのセットを作成するために、dimension_groupおよびtimeframesパラメーターとともに使用されます。例えば、単一のタイムスタンプ列に基づいて日付、週、月のディメンションを簡単に作成できます。

type: timeのディメンショングループの形式は次のとおりです。

dimension_group: dimension_group_name { type: time timeframes: [timeframe, timeframe, …] # valid timeframes described below sql: SQL expression ;; # often this is a single database column datatype: epoch| timestamp | datetime | date | yyyymmdd # defaults to datetime convert_tz: yes | no # defaults to yes }

type: timeのディメンショングループの場合:

ここには示されていませんが、フィールドレベルパラメーターの多くは、ディメンショングループでも使用できます。

例として、日時情報を含むcreated_atという名前の列があるとします。この日時に基づいて日、週、月のディメンションを作成します。次のように指定できます。

dimension_group: created { type: time timeframes: [date, week, month] sql: ${TABLE}.created_at ;; }

Explore UIでは、これによってCreated DateCreated Week、およびCreated Monthという名前の3つのディメンションが生成されます。ディメンション名を生成するために、dimension_group名がタイムフレームとどのように組み合わされるかに注意してください。

タイムフレームオプション

timeframesパラメーターは、type: timeのディメンショングループでのみサポートされます。type: durationのディメンショングループの場合は、代わりにintervalsパラメーターを使用します。

timeframesパラメーターは、ディメンショングループにどのディメンションを生成するかを指示します。オプションは次のとおりです。

特別なタイムフレーム

タイムフレーム 説明 出力例
raw データベースの生の値(キャストもタイムゾーン変換も行っていないもの)。rawはLookML内でのみアクセス可能であり、Exploreページに表示されません。フォーマットされたストリングを返す他のほとんどのタイムフレームとは異なり、rawタイムフレームはタイムスタンプを返します。主にフィールドで日付操作を実行するために使用されます。 2014-09-03
17:15:00 +0000
yesno yesnoディメンション。日時に値がある場合は「Yes」、ない場合は「No」を返します。他のタイムフレームとは異なり、別のフィールドからyesnoタイムフレームディメンションを参照する場合は、参照にタイムフレームを含めないでください。例えば、dimension_group: createdyesnoタイムフレームを参照する場合は、${created_yesno}ではなく、構文${created}を使用します。 Yes

時間タイムフレーム

タイムフレーム 説明 出力例
time 元となるフィールドの日時(SQLダイアレクトによっては、値がデータベース内のデータと同じ精度で示される場合と秒までしか示されない場合があります) 2014-09-03 17:15:00
time_of_day 時刻 17:15
hour 直近の時間まで切り捨てた日時 2014-09-03 17
hour_of_day 基礎となるフィールドの時間を表す整数 17
hourX 各日を指定した時間数で分割します。詳細については、後述の説明を参照してください。 後述の説明を参照
minute 直近の分まで切り捨てた日時 2014-09-03 17:15
minuteX 各時間を指定した分数で分割します。詳細については、後述の説明を参照してください。 後述の説明を参照
second 直近の秒まで切り捨てた日時 2014-09-03 17:15:00
millisecond 直近のミリ秒まで切り捨てた日時(ダイアレクトサポートに関する情報は、このページのダイアレクトにおけるミリ秒およびマイクロ秒のサポートセクションをご覧ください)。 2014-09-03 17:15:00.000
millisecondX 各秒を指定のミリ間隔で分割(ダイアレクトサポートに関する情報は、このページのダイアレクトにおけるミリ秒およびマイクロ秒のサポートセクションをご覧ください)。詳細については、後述の説明を参照してください。 後述の説明を参照
microsecond 直近のミリ秒まで切り捨てた日時(ダイアレクトサポートに関する情報は、このページのダイアレクトにおけるミリ秒およびマイクロ秒のサポートセクションをご覧ください)。 2014-09-03 17:15:00.000000

日付タイムフレーム

タイムフレーム 説明 出力例
date 元のフィールドの日付 2017-09-03

週タイムフレーム

タイムフレーム 説明 出力例
week 元の日時の、月曜日から始まる週の日付 2017-09-01
day_of_week 曜日のみ Wednesday
day_of_week_index 曜日インデックス(0 = 月曜日、6 = 日曜日) 2

月タイムフレーム

タイムフレーム 説明 出力例
month 元の日時の年と月 2014-09
month_num 元の日時の月を表す整数 9
fiscal_month_num 元の日時の会計月を表す整数 6
month_name 月の名前 September
day_of_month 月の日 3

fiscal_month_numタイムフレームを使用するには、モデルでfiscal_month_offsetパラメーターが設定されている必要があります。

四半期タイムフレーム

タイムフレーム 説明 出力例
quarter 元の日時の年と四半期 2017-Q3
fiscal_quarter 元の日時の会計年度と四半期 2017-Q3
quarter_of_year 先頭に「Q」が付いた、年の四半期 Q3
fiscal_quarter_of_year 先頭に「Q」が付いた、年の会計四半期 Q3

fiscal_quarterおよびfiscal_quarter_of_yearタイムフレームを使用するには、モデルでfiscal_month_offsetパラメーターが設定されている必要があります。

年タイムフレーム

タイムフレーム 説明 出力例
year 元の日時の年を表す整数 2017
fiscal_year 元の日時の会計年度を表す整数 FY2017
day_of_year 通日 143
week_of_year 年の週番号 17

fiscal_yearタイムフレームを使用するには、モデルでfiscal_month_offsetパラメーターが設定されている必要があります。

hourXの使用

hourXXは2、3、4、6、8、12のいずれかに置き換えられます。

これにより、各日が指定した時間数で分割されます。例えば、hour6では、各日が次のように6時間のセグメントに分割されます。

例を挙げると、time2014-09-01 08:03:17の行は、hour6では2014-09-01 06:00:00になります。

minuteXの使用

minuteXXは2、3、4、5、6、10、12、15、20、30のいずれかに置き換えられます。

これにより、各時間が指定した分数で分割されます。例えば、minute15では、各時間が次のように15分のセグメントに分割されます。

例を挙げると、time2014-09-01 01:17:35の行は、minute15では2014-09-01 01:15:00になります。

millisecondXの使用

millisecondXXは2、4、5、8、10、20、25、40、50、100、125、200、250、500のいずれかに置き換えられます。

これにより、各秒が指定したミリ秒数で分割されます。例えば、millisecond250では、各秒が次のように250ミリ秒のセグメントに分割されます。

例を挙げると、time2014-09-01 01:00:00.333の行は、millisecond250では2014-09-01 01:00:00.250になります。

タイムゾーンの変換とconvert_tz

一般的に、時間の計算(差、期間など)を正しく行うには、対象となるすべての時間値を同じタイムゾーンに変換する必要があります。したがって、LookMLを記述する際には、タイムゾーンに留意することが重要です。

Lookerには、時間ベースのデータを異なるタイムゾーン間で変換するための各種タイムゾーン設定が用意されています。Lookerでは、デフォルトでタイムゾーン変換が行われます。convert_tzパラメーターは、type: timeのディメンショングループでサポートされます。特定のディメンションまたはディメンショングループでタイムゾーンの自動変換をしたくない場合は、convert_tzパラメーターのドキュメンテーションページで説明されているconvert_tzパラメーターを使用します。

ダイアレクトにおけるミリ秒およびマイクロ秒のサポート

Lookerはマイクロ秒単位のタイムフレーム精度に対応していますが、データベースによっては秒単位の精度しかサポートしていないものもあります。このようなデータベースに、対応するタイムフレームよりも精度の高いタイムフレームが入力された場合、時間は秒単位に切り上げられます。

Looker 22.8では、次のダイアレクトがミリ秒をサポートしています。

Looker 22.8では、次のダイアレクトがマイクロ秒をサポートしています。

データベースdatatypeの指定

datatypeパラメーターを使用して、ディメンショングループに提供するデータベーステーブル内の時間データのタイプを指定できます。これにより、クエリのパフォーマンスを向上させることができます。

type: timeのディメンショングループの場合、datatypeパラメーターはディメンショングループのsqlパラメーターに適用されます。

type: durationのディメンショングループの場合、datatypeパラメーターはsql_startパラメーターとsql_endパラメーターの両方に適用されるため、sql_startsql_endの両方が指定したデータタイプであることを確認してください。

datatypeパラメーターは、次の値を受け入れます。

datatypeのデフォルト値はtimestampです。

日時情報を含むcreated_atという名前の列があるとします。この日時に基づいて日、週、月のディメンションを作成します。次のように指定できます。

dimension_group: created { type: time timeframes: [date, week, month] sql: ${TABLE}.created_at ;; }

Explore UIでは、これによってCreated DateCreated Week、およびCreated Monthという名前の3つのディメンションが生成されます。ディメンション名を生成するために、dimension_group名がタイムフレームとどのように組み合わされるかに注意してください。

考慮事項

ディメンショングループは個別のディメンションによって参照される必要があります。

ディメンショングループは、1つのディメンションではなくディメンションのグループを表すため、LookMLで直接参照することはできません。代わりに、ディメンショングループによって作成されるディメンションを参照する必要があります。

例えば、次のディメンショングループについて考えます。

dimension_group: created { type: time timeframes: [date, week, month] sql: ${TABLE}.created_at ;; }

別のLookMLフィールドでこれらのディメンションのいずれかを参照する場合は、参照${created_date}${created_week}、または{$created_month}を使用します。${created}のみを使用しようとすると、Lookerでは参照しているタイムフレームが認識されず、エラーが発生します。

これと同じ理由で、複数のtimeframeを指定する場合は、ディメンショングループでprimary_keyパラメーターを使用しないでください。

チャットチーム情報:複数のtimeframeを含むdimension_groupprimary_keyを使用した場合に発生する検証エラーについてよく質問されます。詳細については、このコミュニティのトピックを参照してください。

タイムゾーン情報を含むタイムスタンプデータ

一部のデータベースダイアレクトには、タイムゾーン情報を含むタイムスタンプオプションがあります。これによって、タイムゾーンが複数ある単一フィールドにタイムスタンプデータを保管することができます。あるデータ行はUTCで保存され、別の行は東部時間で保存されます。例として、Snowflakeダイアレクトのタイムスタンプオプションに関するSnowflakeTIMESTAMP_LTZ, TIMESTAMP_NTZ, TIMESTAMP_TZタイムスタンプのドキュメンテーションを参照してください。

この場合、Lookerでゾーン変換を実行するとエラーが発生することがあります。これを回避するには、ディメンションのsqlパラメーターで、タイムスタンプデータを明示的にtimestamp型に変換し、タイムゾーン変換が行われないようにします。例えば、Snowflakeダイアレクトでは、TO_TIMESTAMP関数を使用してタイムスタンプデータを型変換します。

個別の時間または期間ディメンションを作成可能

すべてを単一のdimension_groupで作成する代わりに、含めたい個別の時間枠または期間ごとに1つのディメンションを作成することが可能です。一般的に、Lookerのタイムフレームの命名規則を変更する場合、またはデータベースに計算済みの時間列が存在する場合を除き、個別のディメンションの作成を避けることができます。詳細については、ディメンション、フィルタ、パラメーターのタイプのドキュメンテーションページを参照してください。

週の最初の曜日を変更可能

デフォルトでは、Lookerの週は月曜日に始まります。これを変更するには、モデルレベルでweek_start_dayパラメーターを使用します。

week_start_dayweek_of_yearタイムフレームでは機能しないことに注意してください。そのタイムフレームは月曜日から始まる週を使用するISO標準に基づいているためです。

カスタムフィルタとカスタムフィールドで一部のタイムフレームがサポートされない

現在、タイムフレームday_of_weekfiscal_quarter_of_yearmillisecondmillisecondXmicrosecondmonth_namequarter_of_year、およびtime_of_dayカスタムフィルタまたはカスタムフィールドでサポートされません。

月、四半期、年の間隔では完全な期間のみがカウントされる

durationディメンショングループ内のmonth間隔では、終了日が開始日以降の場合にのみ、1か月が経過したと見なされます。 次に例を示します。

quarteryearの間隔も同じロジックに従います。

Top