タイプ

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

type は、ディメンションの一部として使用することもできます。詳しくは、ディメンション、フィルタ、パラメータの種類に関するドキュメント ページをご覧ください。

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

type はダッシュボード フィルタの一部として使用することもできます。詳しくは、ダッシュボード パラメータに関するドキュメント ページをご覧ください。

type は、ダッシュボード要素の一部として使用することもできます(type(LookML ダッシュボード用)パラメータのドキュメント ページを参照)。

使用状況

Explore: view_name{
join: view_name_2 {
type: 内部
}
}
階層
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 と結合ビューのすべての行が含まれます。MySQL では完全外部結合はサポートされていません。



inner

inner 結合タイプ(SQL では JOIN または INNER JOIN として知られています)には、Explore と結合ビューの両方で一致するレコードを持つ行のみが含まれます。



cross

SQL から CROSS JOIN として知られている cross 結合タイプは、ほとんど使用されません。ゼロフィリングまたは行列生成に役立つ場合があります。Explore と結合ビューの組み合わせごとに行が作成されます。このコンセプトはベン図では説明しにくくなります。以下のテーブル サンプルを見ると理解が深まります。

LEFT JOIN を使用して dna データを people データに追加します(dna 情報がある場合)。

explore: person {
  join: dna {
    sql_on: ${person.dna_id} = ${dna.id} ;;
    type: left_outer  # Could be excluded since left_outer is the default
  }
}

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 では通常、SQL で LEFT JOIN を使用する場合と同様に、type: left_outer で最適に動作します。

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

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

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