사용
explore: view_name {
join: view_name_2 {
relationship: one_to_one
}
}
|
계층 구조
relationship |
기본값
many_to_one
수락
관계 (many_to_one, many_to_many, one_to_many, one_to_one)
|
정의
relationship를 사용하면 조인된 뷰 간의 join 관계를 설명할 수 있습니다. Looker가 정확한 측정값을 계산할 수 있도록 관계 유형을 올바르게 정의하는 것이 중요합니다.
정의되는 관계를 이해하려면 다음 예시를 참고하세요.
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
relationship: many_to_one
}
join: user_facts {
sql_on: ${user.id} = ${user_facts.user_id} ;;
relationship: one_to_one
}
}
이 예의 user 뷰와 같이 뷰가 Explore에 직접 조인되면 관계는 Explore에서 조인된 뷰로 향합니다. 여기에서는 한 명의 사용자가 여러 개의 주문을 할 수 있다고 말합니다.
뷰가 다른 뷰를 통해 탐색 분석에 조인되는 경우(예: 이 예에서 user_facts가 user을 통해 order에 조인됨) 정의되는 관계는 중간 뷰(user)에서 최종 뷰(user_facts)로입니다. 이 예에서는 사용자 사실 레코드 하나에 사용자가 하나 있다고 말합니다.
relationship에 가능한 값은 이 페이지의 다음 섹션에 설명되어 있습니다.
one_to_one
Explore의 한 행이 조인된 뷰의 한 행과만 일치할 수 있는 경우 관계는 one_to_one입니다.
예를 들어 user_facts 조인 뷰가 있는 user Explore는 one_to_one입니다. 두 테이블 모두 사용자당 행이 하나씩 있기 때문입니다.
one_to_one관계에서는 테이블의 기본 키에 null 값이 없어야 합니다. 테이블의 기본 키 중 하나 또는 둘 다에 null 값이 있으면 관계는many_to_many또는many_to_one입니다.
many_to_one (기본값)
Explore의 여러 행이 조인된 뷰의 한 행과 일치할 수 있는 경우 관계는 many_to_one입니다. 예를 들어 user 조인 뷰가 있는 order Explore는 사용자당 주문이 여러 개 있을 수 있으므로 many_to_one가 됩니다.

one_to_many
Explore의 한 행이 조인된 뷰의 여러 행과 일치할 수 있는 경우 관계는 one_to_many입니다. 예를 들어 item 조인 뷰가 있는 order Explore는 one_to_many입니다. 하나의 주문에 여러 상품이 포함될 수 있기 때문입니다.

many_to_many
Explore의 여러 행이 조인된 뷰의 여러 행과 일치할 수 있는 경우 관계는 many_to_many입니다. 예를 들어 학생이 여러 수업을 듣고 수업에 여러 학생이 있는 경우 class 조인 뷰가 있는 student 탐색은 many_to_many일 수 있습니다. 실제로 SQL 데이터베이스 설계에서는 many-to-many 관계를 피하는 경우가 많으므로 대부분의 모델에는 many_to_many이 필요하지 않습니다.

예시
user에서 dna로의 관계를 one_to_one로 선언합니다.
explore: user {
join: dna {
sql_on: ${user.dna_id} = ${dna.id} ;;
relationship: one_to_one
}
}
order에서 user로의 관계를 many_to_one로 선언합니다.
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
relationship: many_to_one
}
}
order에서 item로의 관계를 one_to_many로 선언합니다.
explore: order {
join: item {
sql_on: ${order.order_id} = ${item.order_id} ;;
relationship: one_to_many
}
}
student에서 class로의 관계를 many_to_many로 선언합니다.
explore: student {
join: class {
sql_on: ${student.student_id} = ${class.student_id} ;;
relationship: many_to_many
}
}
user에서 user_type로의 관계를 many_to_one로 선언합니다.
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
relationship: many_to_one
}
join: user_type {
sql_on: ${user.type_id} = ${user_type.id} ;;
relationship: many_to_one
}
}