ディメンション、フィルター、パラメータのタイプ

このページでは、ディメンションまたはフィルタの一部である type パラメータについて説明します。

type は、メジャーの一部として使用することもできます。詳しくは、メジャーのタイプに関するドキュメント ページをご覧ください。

type は、dimension_group パラメータのドキュメント ページに記載されているとおり、ディメンション グループの一部として使用することもできます。

使用状況

ビュー: view_name {
dimension: field_name {
type: field_type
}
}
階層
type
使用可能なフィールドタイプ
ディメンション、フィルタ、パラメータ

デフォルト値
string

許可
ディメンション、フィルタ、パラメータ タイプ

このページでは、dimensionfilterparameter に割り当てることができる各種のタイプについてさらに詳しく説明します。ディメンション、フィルタ、パラメータに指定できるタイプは 1 つのみです。タイプが指定されていない場合、デフォルトは string です。

一部のタイプには補助パラメーターがあります。補助パラメーターについては、該当するセクションで説明しています。

タイプ定義

D = ディメンション
DG = ディメンション グループ
F = フィルタ
P = パラメータ
Type 説明 有効なフィールドタイプ
bin 21.14 追加 数値を複数の範囲にグループ化するフィールド用 D
date 日付を含むフィールドに使用します。 D F P
date_time 日時を含むフィールドに使用します。 D F P
distance 2 つの type: location ディメンション間の最直線の距離(「カラスが飛ぶように」)を計算するフィールドの場合 D
duration dimension_group とともに使用して、1 つのテーブル列から複数の期間ベースのディメンションを作成します。ディメンション グループについて詳しくは、dimension_group パラメータに関するドキュメント ページをご覧ください。 DG
location 緯度と経度に基づき、ビジュアリゼーションで使用されるフィールドに使用します。 D
number 数値を含むフィールドに使用します。 D F P
string 文字や特殊文字を含むフィールドに使用します。 D F P
tier 数値を複数の範囲にグループ化するフィールドに使用します。 D
time dimension_group とともに使用して、単一のテーブル列から複数の時間ベースのディメンションを作成します。ディメンション グループについて詳しくは、dimension_group パラメータに関するドキュメント ページをご覧ください。 DG
unquoted 値が SQL に直接挿入されるため、引用符で囲まない parameter フィールド(type: string を使用する場合と同様)
yesno 何かが真であるか偽であるかを示すフィールドに使用します。 D F P
zipcode 郵便番号を含み、ビジュアリゼーションで使用されるフィールドに使用します。 D
個別の日時型 単一の時間ベースのディメンションを作成するのに、type: time の代用としてほとんど使われません。 D F
個々の期間のタイプ 時間の差異を計算する単一の時間ベースのディメンションを作成するのに、type: duration の代用としてほとんど使われません。 D
int 5.4 で削除 type: number に置き換え D

bin

type: bintype: tier のエイリアスです。この2つのタイプはどちらも同じ意味で使用できます。

type: binbins パラメータと組み合わせて使用し、数値ディメンションを一連の数値範囲に分割します。たとえば、年齢のディメンションを異なる年齢層に分けることができます。style パラメータを使用すると、Looker UI でのビンの表示方法を変更できます。

使用パターンは次のとおりです。

ビュー: view_name {
dimension: field_name {
type: bin
bins: [numeric_value, numeric_value, ... ]
style: interval
sql: ${my_field_name} {
} {my_field_name}

type: bin ディメンションの sql パラメータは、有効な SQL 式を受け取って、数値または整数にすることができます。

上記の年齢の例の場合は次のようになります。

dimension: age_bin {
  type: bin
  bins: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
  style: interval
  sql: ${age} ;;
}

Looker UI での表示方法については、このページの type: tier パラメータの style セクションをご覧ください。

bin 型は type: tier のエイリアスです。2 つのモデルは相互に互換性があり、どちらも同じように動作します。

  • style サブパラメータは、Looker UI のビンの外観をカスタマイズするために使用されます。
  • Dimensions of type: binカスタム フィルタでは使用できません。
  • type: binディメンションの塗りつぶしと組み合わせて使用すると、予期しない階層バケットが作成されることがあります。

distance

type: distance は、2 つの type: location ディメンション間の最直線経路(「カラスが飛ぶように」)の距離を計算するために使用されます。

type: distance ディメンションの sql パラメータは除外されます。代わりに、start_location_field パラメータと end_location_field パラメータに type: location ディメンションへの参照を指定します。

使用方法は次のとおりです。

ビュー: view_name {
dimension: field_name {
type: distance
start_location_field: field_name_1
end_location_field: field_name_2
units }キロメートル}

距離の単位は、units パラメータで決まります。このパラメータには次の値を使用できます。

  • feet
  • kilometers
  • meters
  • miles
  • nautical_miles
  • yards

例えば、顧客がレンタル品をピックアップする際に移動する距離を計算するには、次のようにします。

dimension: distance_to_pickup {
  type: distance
  start_location_field: customer.home_location
  end_location_field: rental.pickup_location
  units: miles
}

計算される距離は2点間の最短パスであり、必ずしも道のりではありません。

start_location_field パラメータと end_location_field パラメータでは ${view_name.field_name} 構文を使用しないでください。代わりに、ビュー名とフィールド名だけを使用してください(例: view_name.field_name)。

duration

type: durationdimension_group とともに使用して、ディメンションや SQL 式の間で時間差のセットを作成します。

type: durationdimension_group でのみ機能します。通常の dimension では機能しません。ただし、このセクションで説明するように、個々の時間ベースのディメンションを指定できます。

type: duration を使用したディメンション グループについて詳しくは、dimension_group パラメータに関するドキュメントをご覧ください。

location

type: locationsql_latitude および sql_longitude パラメータと組み合わせて使用して、地図または静的地図(ポイント)の可視化にプロットする座標(静的マップ(地域)に州または国のフィールドを使用)または type: distance の計算に使用する座標を作成します。

使用パターンは次のとおりです。

ビュー: view_name {
dimension: field_name {
type: location
sql_latitude:${field_name_1} ;;
sql_longitude:${field_name_2} ;;
}
}

type: location ディメンションの sql パラメータは除外されます。代わりに、sql_latitudesql_longitude のパラメータに、有効な SQL 式を指定します。緯度または経度は小数になります。これらは通常、緯度または経度情報を含むLookMLフィールドへの参照になりますが、本社の場所などを指定したい場合は静的値にすることができます。

たとえば、次のような store_location ディメンションを作成できます。

dimension: store_location {
  type: location
  sql_latitude: ${store_latitude} ;;
  sql_longitude: ${store_longitude} ;;
}

位置情報をプロットしたり距離を計算したりしたくない場合は、type: number などの単純なタイプを使用できます。テーブル内の場所を表示すると、データベース内の値が表示され、さらにGoogleマップのその場所へのリンクが自動的に生成されます。

location でサポートされているデータベース言語

Looker プロジェクトで type: location をサポートするには、データベース言語もサポートしている必要があります。次の表に、Looker の最新リリースで type: location をサポートしている言語を示します。

number

type: number は数値または整数とともに使用されます。

type: number ディメンションの sql パラメータは、有効な SQL 式を受け取って、数値または整数にすることができます。

type: number フィールドは、value_format パラメータまたは value_format_name パラメータを使用してフォーマットできます。

たとえば、次の LookML は、revenue フィールドと cost フィールドに基づいて profit というフィールドを作成し、金額形式($1,234.56)で表示します。

dimension: profit {
  type: number
  sql: ${revenue} - ${cost} ;;
  value_format_name: usd
}

1 つのディメンションは、他のディメンションについては算術演算のみを行うことができます。メジャーは行えません。また、type: number ディメンションは、ID 番号を表示するために使用している場合でも、ユーザーに提案しません。

string

type: string は通常、文字または特殊文字を含むフィールドで使用されます。番号フィールドでも使用できますが、代わりに type: number を使用すると、Looker で番号を処理しやすくなります。

type: string ディメンションの sql パラメータは、有効な SQL 式を取ることができます。

たとえば、次の LookML は、first_namelast_name というフィールドを組み合わせて、full_name フィールドを作成します。

dimension: full_name {
  type: string
  sql: CONCAT(${first_name}, ' ', ${last_name}) ;;
}

この例では、stringtype のデフォルト値であるため、type: string は省略できます。

tier

type: bintype: tier のエイリアスとして使用できます。この2つのタイプはどちらも同じ意味で使用できます。

type: tiertiers パラメータと組み合わせて使用し、数値ディメンションを一連の数値範囲に分割します。たとえば、年齢のディメンションを異なる年齢層に分割できます。style パラメータを使用して、Looker UI 内での階層の表示方法を変更できます。

使用パターンは次のとおりです。

ビュー: view_name {
dimension: field_name {
type: tier
tiers: [numeric_value, numeric_value, ... ]
style: interval
sql: ${my_field_name} {
}{my_field_name}

type: tier ディメンションの sql パラメータは、有効な SQL 式を受け取って、数値または整数にすることができます。

上記の年齢の例の場合は次のようになります。

dimension: age_tier {
  type: tier
  tiers: [0, 10, 20, 30, 40, 50, 60, 70, 80]
  style: classic # the default value, could be excluded
  sql: ${age} ;;
}

Looker UI での表示については、このページの style セクションをご覧ください。

type: tier のディメンションはカスタム フィルタでは使用できません。

style

style パラメータを使用すると、Looker UI での階層の表示方法を変更できます。下の例には示されていませんが、データに負の数が含まれている場合、初期層には負の無限大から 0 までのすべての数値が含まれます。指定可能な値は次の4つです。

classic

style: classic はデフォルトであり、次のようになります。

  • この階層表記は、次のように解釈できます。
    • T02 [10,20)] は、10 から 20 までの範囲です。
    • T09 (80,inf) は 80 から範囲(無限大)までの範囲です

interval

style: intervalstyle: classic に似ていますが、先頭に TXX ラベルがありません。次のように表示されます。

integer

style: integer は離散整数値(年齢など)とともに使用する必要があります。整数以外を使用して階層を定義しようとすると、エラーが発生します。このスタイルを使用すると、次のように表示されます。

relational

style: relational は、次のように連続する数値(ドルなど)に最適です。

value_format で階層のスタイルを設定することもできます。例:

dimension: amount_tier {
  type: tier
  tiers: [0, 10, 20, 30, 40, 50, 60, 70, 80]
  style: integer
  sql: ${amount} ;;
  value_format: "$#,##0"
}

この例では、階層ラベルは $10 to $19$20 to $29 などになります。

注意点

tierディメンションの塗りつぶしと組み合わせて使用すると、予期しない階層バケットが作成されることがあります。

たとえば、ディメンション「年齢層」では、ディメンションの入力が有効になっている場合、0 未満0 ~ 9 の階層バケットが表示されますが、これらのバケットの年齢の値はデータに含まれません。

年齢層のディメンションの入力が無効になっている場合、データで使用できる年齢の値がより正確にバケットに反映されます。

ディメンションの塗りつぶしを有効または無効にするには、Explore でディメンション名にカーソルを合わせ、フィールド レベルの歯車アイコンをクリックして [Remove Filled in Tier Values] を選択するか、[Fill in Missing Tier Values] を選択して有効にします。

time

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

type: timedimension_group でのみ機能します。通常の dimension では機能しません。ただし、以下のこのセクションで説明するように、個別の時間ベースのディメンションを指定できます。

ディメンション グループについて詳しくは、dimension_group パラメータに関するドキュメント ページで、timeframesconvert_tzdatatype のパラメータに関する情報のほか、時間ベースのデータを使用する際の一般的な課題と注意点をご確認ください。

unquoted

type: unquoted は、parameter フィールドでのみ使用されます。unquoted 型は type: string と類似していますが、parameter の値が {% parameter %} Liquid 変数に挿入される場合、引用符で囲みません。これは、列名やテーブル名など、正しく機能させるためには引用符で囲むことができない値をSQLに挿入する場合に役立ちます。

引用符で囲まれていない値を SQL に直接挿入すると、不要な SQL アクションが発生する可能性があります。この問題に対処するため、type: unquoted のパラメータ値は文字 A ~ Z と 0 ~ 9 に限定されます(スペースやその他の特殊文字は使用できません)。

たとえば、次の LookML は、引用符で囲まれていない値を生成する table_name という parameter を作成します。

parameter: table_name {
  type: unquoted
}

yesno

type: yesno は、正誤問題を示すフィールドを作成します。値は、Explore UI に [Yes] と [No] と表示されます。

type: yesno ディメンションの sql パラメータは、TRUE または FALSE と評価される有効な SQL 式を受け取ります。条件が TRUE と評価されると、ユーザーに [はい] と表示されます。それ以外の場合、[いいえ] が表示されます。

type: yesno ディメンションの SQL 式に集計を含めることはできません。つまり、SQL 集計や LookML メジャーへの参照を含めることはできません。SQL 集計を含む yesno フィールドや LookML メジャーを参照する yesno フィールドを作成する場合は、ディメンションではなく type: yesno を含むメジャーを使用します。

たとえば、次の LookML は、status フィールドに基づいて、注文の支払いが完了したかどうかを示すフィールドを作成します。

dimension: is_order_paid {
  type: yesno
  sql: ${status} = 'paid' ;;
}

別のフィールドの type: yesno フィールドを参照するには、type: yesno フィールドをブール値として扱います(つまり、すでに true 値または false 値が含まれているかのようになります)。例:

dimension: is_big_order {
  type: yesno
  sql: ${order_size} = 'big' ;;
}
# This is correct
measure: total_boxes_needed {
  type: number
  sql: SUM(CASE WHEN ${is_big_order} THEN 2 ELSE 1 END) ;;
}
# This is NOT correct
measure: total_boxes_needed {
  type: number
  sql: SUM(CASE WHEN ${is_big_order} = 'Yes' THEN 2 ELSE 1 END) ;;
}

type: yesno を時間ベースのデータとともに使用すると、日時に値がある場合はディメンションは yes を返し、そうでない場合は no を返します。

zipcode

type: zipcode は、静的マップ(ポイント)の可視化でプロットする郵便番号ディメンションとともに使用します(静的マップ(地域)では州または国のフィールドを使用します)。type: zipcode のディメンションには us_zipcode_tabulation_areasmap_layer_name が自動的に付与されます。郵便番号をプロットしない場合は、type: number などの単純なタイプを使用できます。

type: zipcode ディメンションの sql パラメータには、有効な 5 桁の米国の郵便番号を指定できます。

郵便番号ディメンションでフィルタリングできるように、一部のデータベースダイアレクトでは、このディメンションで参照されるデータベースフィールドが、整数タイプフィールドではなくvarchar(ストリング)タイプフィールドであることが必要です。

例:

dimension: zip {
  type: zipcode
  sql: ${TABLE}.zipcode ;;
}

個別の時刻タイプおよび日付タイプ

通常、日付は type: time を使用する dimension_group として処理されます。

1 つの dimension_group ですべてを生成する代わりに、指定する期間ごとに 1 つの dimension または filter フィールドを作成できます。通常は、データベースで事前計算された時間列がある場合や、Looker の期間の命名規則を変更する場合(例: created_date ではなく created_date_of_purchase という名前のフィールド)を除き、回避されます。

個々の日付と日付に基づくタイプの多くはに記載されています。

たとえば、次の dimension_group 定義の場合、

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

次の記述は上記と論理的に等価です。

dimension: created_week {
  type: date_week
  sql: ${TABLE}.created_at ;;
}
dimension: created_month {
  type: date_month
  sql: ${TABLE}.created_at ;;
}
dimension: created_year {
  type: date_year
  sql: ${TABLE}.created_at ;;
}

使用可能な時間ベースのタイプ

時間または日付ベースのフィールドを作成するには、個々のディメンションの type パラメータで次のタイプを使用します。timeframe パラメータにこれらのタイプを使用しないでください。このパラメータは、dimension_group ドキュメント ページに記載されています。

すべての個別の時刻タイプおよび日付タイプで、データベースからのインプットとしてタイムスタンプが必要になります。

特殊なタイプ

Type 説明 出力例
date_raw キャストやタイムゾーン変換を行わない、データベースの生の値は [探索] ページに表示されません(通常は結合や時間比較では必要ありません)。 2014-09-03 17:15:00 +0000

時刻タイプ

Type 説明 出力例
date_time 基礎となるフィールドの日時(SQLダイアレクトに応じて、値がデータベース内のデータと同じ精度で示される場合と秒までしか示されない場合があります) 2014-09-03 17:15:00
date_time_of_day 時刻 17:15
date_hour 直近の時間まで切り捨てた日時 2014-09-03 17
date_hour_of_day 基礎となるフィールドの時間を表す整数 17
date_hourX 指定した時間間隔で毎日をスプリットします。説明が必要です。下記をご覧ください。 以下をご覧ください。
date_minute 直近の分まで切り捨てた日時 2014-09-03 17:15
date_minuteX 指定した時間(分単位)に分割します。説明が必要です。下記をご覧ください。 以下をご覧ください。
date_second 直近の秒まで切り捨てた日時 2014-09-03 17:15:00
date_millisecond 日時はミリ秒単位で切り捨てられます(言語のサポートについては、ミリ秒とマイクロ秒のダイアレクトのサポートをご覧ください)。 2014-09-03 17:15:00.000
date_millisecondX 指定されたミリ秒単位の間隔で秒を分割します(言語のサポートについては、ミリ秒とマイクロ秒のダイアレクトのサポートをご覧ください)。 2014-09-01 01:00:00.250
date_microsecond 日時は最も近いマイクロ秒に切り詰められます(方言のサポートについては、ミリ秒とマイクロ秒のダイアレクトのサポートをご覧ください)。 2014-09-03 17:15:00.000000

日付タイプ

Type 説明 出力例
date 元のフィールドの日付 2017-09-03
date_date 4.6 で削除 date に置き換え

週タイプ

Type 説明 出力例
date_week 元の日時の、月曜日から始まる週の日付 2017-09-01
date_day_of_week 曜日のみ Wednesday
date_day_of_week_index 曜日インデックス(0 = 月曜日、6 = 日曜日) 2

date_weekdate_day_of_weekdate_day_of_week_index のタイプは、week_start_day の値(デフォルトでは月曜日)に依存することに注意してください。

月タイプ

Type 説明 出力例
date_month 元の日時の年と月 2017-09
date_month_num 元の日時の月を表す整数 9
date_month_name 月の名前 September
date_day_of_month 3
date_fiscal_month_num 元の日時の月を表す整数 9

date_fiscal_month_num タイプを使用するには、fiscal_month_offset パラメータをモデルで設定する必要があります。

四半期タイプ

Type 説明 出力例
date_quarter 元の日時の年と四半期 2017-Q3
date_quarter_of_year 「Q」で始まる四半期 Q3
date_fiscal_quarter 元の日時の会計年度と四半期 2017-Q3
date_fiscal_quarter_of_year 「Q」で始まる前四半期 Q3

date_fiscal_quarter 型と date_fiscal_quarter_of_year 型を使用するには、モデルに fiscal_month_offset パラメータを設定する必要があります。

年タイプ

Type 説明 出力例
date_year 基礎となる日時の年を表す整数 2017
date_day_of_year 通日 143
date_week_of_year 年の週番号 17
date_fiscal_year 元の日時の会計年度を表す整数 2017

date_fiscal_year タイプを使用するには、fiscal_month_offset パラメータをモデルで設定する必要があります。

date_hourX の使用

date_hourX では、X が 2、3、4、6、8、12 に置き換えられます。

これは、指定した時間単位の間隔で毎日に分割されます。たとえば、date_hour6 は毎日、6 時間のセグメントに分割されます。次のように表示されます。

  • 2014-09-01 00:00:00
  • 2014-09-01 06:00:00
  • 2014-09-01 12:00:00
  • 2014-09-01 18:00:00

たとえば、time2014-09-01 08:03:17 である行の date_hour62014-09-01 06:00:00 になります。

date_minuteX の使用

date_minuteX で、X が 2、3、5、10、15、または 30 に置き換えられます。

指定した時間(分単位)に分割されます。たとえば、date_minute15 は 1 時間ごとに 15 分のセグメントに分割されます。次のように表示されます。

  • 2014-09-01 01:00:00
  • 2014-09-01 01:15:00
  • 2014-09-01 01:30:00
  • 2014-09-01 01:45:00

たとえば、time2014-09-01 01:17:35 である行の date_minute152014-09-01 01:15:00 です。

タイムゾーンと convert_tz

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

Looker には、異なるタイムゾーン間で時間ベースのデータを変換するさまざまなタイムゾーン設定があります。Looker はデフォルトでタイムゾーンを変換する。特定のディメンションやディメンション グループに対してタイムゾーン変換を実行しない場合は、convert_tz パラメータのドキュメント ページに記載されている convert_tz パラメータを使用します。

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

Looker ではマイクロ秒の精度がサポートされていますが、一部のデータベースでは数秒の精度しかサポートしていません。このようなデータベースに、対応する時間タイプよりも精度の高い時間タイプが入力された場合、時間は秒単位に切り上げとなります。

Looker の最新リリースでは、次の言語がミリ秒をサポートしています。

Looker の最新リリースでは、次の言語がマイクロ秒をサポートしています。

個別の期間タイプ

通常、再生時間は type: duration を使用する dimension_group として処理されます。

1 つの dimension_group ですべてを生成する代わりに、指定する期間ごとに 1 つの dimension を作成できます。Looker の期間の命名規則を変更する場合(例: [配信までの所要時間] ではなく [配信までの日数] のフィールドがある場合)を除き、この問題は回避されます。

個々の期間の種類を以下に示します。

ディメンションの期間タイプを使用する場合は、時間の差を計算する開始時間と終了時間を示す sql_start パラメータと sql_end パラメータも指定する必要があります。

sql_start パラメータと sql_end パラメータには、タイムスタンプ、日時、日付、エポック、または yyyymmdd 形式のデータを含む有効な SQL 式を指定できます。sql_start フィールドと sql_end フィールドは、次のいずれかになります。

  • type: time の既存のディメンション グループからの raw 期間への参照。
  • type: date_raw ディメンションへの参照。
  • タイムスタンプ(SQLのタイムスタンプ列の参照など)を含むSQL式
  • データベースから時間を取り込むSQL式(対象のダイアレクトに適した式を使用)

たとえば、次の dimension_group 定義の場合、

dimension_group: to_delivery {
  type: duration
  intervals: [day, hour]
  sql_start: ${created_raw} ;;
  sql_end: ${delivered_raw};;
}

これらの dimension パラメータを論理的に同等なものとして使用できます。

dimension: number_of_days_to_delivery {
  type: duration_day
  sql_start: ${created_raw} ;;
  sql_end: ${delivered_raw};;
}

dimension: number_of_hours_to_delivery {
  type: duration_hour
  sql_start: ${created_raw} ;;
  sql_end: ${delivered_raw};;
}

Explore の UI で、[配信日数] と [配信時間数] というディメンションが作成されます。

使用可能な期間タイプ

個々のディメンションの type パラメータで、次の型を使って期間ベースのフィールドを作成します。intervals パラメータにこれらのタイプを使用しないでください。このパラメータは、dimension_group ドキュメント ページに記載されています。

すべての個別の期間タイプで、データベースからのインプットとしてタイムスタンプが必要になります。

Type 説明 出力例
duration_day 時間差を日単位で計算します。 9 days
duration_hour 時間差を時間単位で計算します。 171 hours
duration_minute 時間差を分単位で計算します。 10,305 minutes
duration_month 時間差を月単位で計算します。 3 months
duration_quarter 時間差を四半期単位で計算します。 2 quarters
duration_second 時間差を秒単位で計算します。 606,770 seconds
duration_week 時間差を週単位で計算します。 6 weeks
duration_year 時間差を年単位で計算します。 2 years