type

このページでは、結合の一部である type パラメータについて説明します。

type は、ディメンション、フィルタ、パラメータ タイプのドキュメント ページで説明されているように、ディメンションの一部としても使用できます。

type は、メジャーの型のドキュメント ページで説明されているように、メジャーの一部としても使用できます。

type は、ダッシュボード パラメータのドキュメント ページで説明されているように、ダッシュボード フィルタの一部として使用することもできます。

type は、type(LookML ダッシュボードの場合)パラメータのドキュメント ページで説明されているように、ダッシュボード要素の一部としても使用できます。

用途

explore: view_name {
  join: view_name_2 {
    type: inner
  }
}
階層
type
デフォルト値
left_outer

許可
結合のタイプ(crossfull_outerinnerleft_outer

特別なルール
left_outer 以外の type を使用する場合は、always_join を使用して、結果の行に結合の制限が含まれるようにすることをおすすめします。

定義

type を使用すると、実行する結合のタイプを記述できます。

結合タイプで使用できる値については、このページの次のセクションで説明します。

left_outer(デフォルト値)

Looker で最も一般的な結合タイプは left_outer です(このページで説明する left_outer 結合タイプが通常推奨されるセクションで、頻繁に使用される理由について説明します)。SQL では LEFT JOIN として知られています。この type を使用すると、Explore のすべての行が含まれ、結合されたビューのデータが利用可能な場合は取り込まれます。

full_outer

full_outer 結合タイプ(SQL では FULL OUTER JOIN と呼ばれます)は、他のビューに対応するデータがない場合でも、Explore と結合されたビューのすべての行を含みます。

inner

inner 結合タイプ(SQL では JOIN または INNER JOIN と呼ばれる)では、Explore と結合されたビューの両方に一致するレコードがある行のみが含まれます。

cross

cross 結合タイプ(SQL の CROSS JOIN として知られている)は、ほとんど使用されません。ゼロフィルや行列の生成に役立つ場合があります。Explore と結合されたビューのすべての組み合わせに対して行が作成されます。

ユーザーが注文していない場合でも、FULL OUTER JOIN を使用して user データを order データに追加します。

explore: order {
  join: user {
    sql_on: ${order.user_id} = ${user.id} ;;
    type: full_outer
  }
}

INNER JOIN を使用して user データを event データに追加し、結果をユーザーが生成したイベントのみに制限します。

explore: event {
  join: user {
    sql_on: ${event.user_id} = ${user.id} ;;
    type: inner
  }
}

CROSS JOIN を使用して、ownerproperty の可能なすべての組み合わせを生成します。

explore: property {
  join: owner {
    sql_on: 1 = 1 ;; # this sql_on condition is required in some dialects,
    type: cross      # but causes problems in other dialects, try adding or
  }                  # removing if you experience problems with cross joins
}

知っておくべきこと

通常は left_outer 結合タイプが推奨されます

SQL の学習時や使用時に多くの人が主に焦点を当てるのは JOIN です。専門的には「内部結合」と呼ばれます。このため、多くのケースで type: inner_join が使用されると思われるかもしれません。ただし、通常 Looker が最適に動作するタイプは type: left_outer です。これは SQL の LEFT JOIN を使用する場合に似ています。

その理由は、Explore に関連付けられているビュー(Explore に結合されたビューではない)が通常は「プライマリ」データだからです。たとえば、イベント情報に基づく Explore があるとします。システムによって生成されるイベントもあれば、ユーザーによって生成されるイベントもあります。通常の JOIN を使用して userevent に結合した場合、確認できるのはユーザーによって作成されたイベントのみで、システム イベントは確認できません。代わりに LEFT JOIN を使用すれば、ユーザーに関連付けられているかどうかにかかわらず、すべてのイベントを確認できます。

行を制限する必要がある場合は、always_join の使用をおすすめします。

Looker はクエリの SQL を生成する際、可能な限りクリーンな SQL の作成を試み、ユーザーが選択したフィールドに必要な結合のみを使用します。type を使用して LEFT JOIN 以外を定義する場合は、特定の結合(または一連の結合)を必ずクエリの一部として使用して、結果の行に結合の制限が含まれるようにすることをおすすめします。これを行うには、always_join パラメータを使用します。