from(結合用)

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

from は、Explore の一部として使用することもできます(from(Explore 用)パラメータのドキュメント ページを参照)。

使用状況

Explore: view_name
join: join_name

from: view_name_2
}
}
階層
from
デフォルト値
名前が結合の名前と一致するビュー

許可
既存のビューの名前

定義

from は、結合で使用する view を指定します。from が省略されている場合、Looker は基になるビュー名が結合名と同じであると見なします。

通常、結合とそのフィールドの名前が元のビューと異なる場合にのみ、from を使用します。わかりやすいように、underlying_view というビューに order_value というディメンションを作成した例について考えてみましょう。

  • 通常、このフィールドは Explore UI で [UNDERLYING VIEW Order Value] と表示され、LookML では ${underlying_view.order_value} を使用して参照されます。
  • 上記の使用例では、このフィールドは NEW ALIAS NAME Order Value として表示され、${new_alias_name.order_value} として参照されます。

この手法は、同じビューを複数の異なる方法で Explore に結合する必要がある場合に特に便利です。

ビュー person を Explore order に結合しますが、customer という名前にします。

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

ビュー person を Explore order に 2 回追加します(customer で 1 回、representative で 1 回)。

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
  join: representative {
    from: person
    sql_on: ${order.representative_id} = ${representative.id} ;;
  }
}

注意点

from は、Explore 内のフィールドの参照方法を変更します。

前述のように、from を使用すると、フィールドの参照方法に重要な影響があります。そのため、view が複数の異なる場所で使用されている場合、いくつかの問題が発生する可能性があります。次の例を考えてみましょう。

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

ここでは、personorder に結合していますが、名前は customer です。そのため、order 内の customer からフィールドを参照する必要がある場合は、${customer.field_name} を使用します。2 番目の Explore で再度 personorder に結合しても、名前を customer に変更しないと、2 番目の Explore で ${customer.field_name} 参照は機能しません。この問題に対する一般的なアプローチは、fields を使用して、問題のあるフィールドを 2 番目の Explore から除外することです。それは次のようになります。

explore: the_second_explore {
  fields: [ALL_FIELDS*, -person.problem_field]
  join: person {
    sql_on: ${the_second_explore.some_field} = ${person.some_field} ;;
  }
}

from は、同じテーブルを Explore に複数回結合する場合に最もよく使用されます。

1 つのテーブルに異なるタイプのエンティティが含まれている場合、ビューを Explore に複数回結合できます。order Explore があり、person ビューを 2 回(お客様用とカスタマー サービス担当者に対して 1 回)結合する必要があるとします。次のようにできます。

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
  join: representative {
    from: person
    sql_on: ${order.representative_id} = ${representative.id} ;;
  }
}

Looker がこの LookML から生成する SQL は次のとおりです。

SELECT    ...
FROM      order
LEFT JOIN person AS customer
ON        customer.id = order.customer_id
LEFT JOIN person AS representative
ON        representative.id = order.representative_id