このページでは、join の一部である
type
パラメータについて説明します。
type
は、ディメンションの一部として使用することもできます。詳しくは、ディメンション、フィルタ、パラメータの種類に関するドキュメント ページをご覧ください。
type
は、メジャーの一部として使用することもできます。詳しくは、メジャーのタイプに関するドキュメント ページをご覧ください。
type
はダッシュボード フィルタの一部として使用することもできます。詳しくは、ダッシュボード パラメータに関するドキュメント ページをご覧ください。
type
は、ダッシュボード要素の一部として使用することもできます(type
(LookML ダッシュボード用)パラメータのドキュメント ページを参照)。
使用状況
join: view_name_2 {
type: 内部
}
}
階層
type |
デフォルト値
left_outer 許可
結合のタイプ(cross 、full_outer 、inner 、left_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
を使用して、owner
と property
の可能な組み合わせをすべて生成します。
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
を使用して user
を event
に参加すると、ユーザーが作成したイベントのみが表示され、システム イベントは表示されなくなります。代わりに LEFT JOIN
を使用すると、ユーザーに関連付けられているかどうかにかかわらず、すべてのイベントを確認できます。
行を制限する必要がある場合は、always_join
を使用することをおすすめします。
Looker はクエリの SQL を生成する際、可能な限りクリーンな SQL の作成を試み、ユーザーが選択したフィールドに必要な結合のみを使用します。type
を使用して LEFT JOIN
以外のものを定義する場合、常に特定の結合(または一連の結合)をクエリの一部として使用して、結果の行に結合の制限が含まれるようにすることをおすすめします。これを行うには、always_join
パラメータを使用します。