용도
join: view_name_2 {
관계: 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
뷰) 관계는 결합 뷰에서 뷰로 연결됩니다. 한 사용자에 대해 많은 주문이 있을 수 있다는 의미입니다.
뷰가 다른 뷰를 통해 탐색에 결합되는 경우(예: user_facts
가 user
를 통해 order
에 조인되는 경우) 정의되는 관계는 중간 뷰(user
)에서 뷰, 최종 뷰(user_facts
)까지입니다. 이 예에서는 사용자 한 명에 한 명의 사용자가 있다고 말합니다.
relationship
에 사용 가능한 값은 이 페이지의 다음 섹션에서 설명합니다.
일대일
탐색의 한 행이 조인된 뷰의 하나의 행과만 일치할 수 있다면 관계는 one_to_one
입니다.
예를 들어 dna
조인된 뷰가 있는 user
탐색은 one_to_one
입니다.
one_to_one
관계를 사용하려면 테이블의 기본 키에 null 값이 없어야 합니다. 테이블의 기본 키 중 하나 또는 모두에 null 값이 있으면 관계는many_to_many
또는many_to_one
입니다.
Many_to_one (기본값)
탐색의 여러 행이 조인된 뷰의 한 행과 일치할 수 있는 경우 관계는 many_to_one
입니다. 예를 들어 user
조인된 뷰가 있는 order
탐색은 many_to_one
입니다.
일대다
탐색의 한 행이 조인된 뷰의 여러 행과 일치할 수 있다면 관계는 one_to_many
입니다. 예를 들어 item
조인된 뷰가 있는 order
탐색은 one_to_many
입니다.
다대다
탐색의 많은 행이 조인된 뷰의 여러 행과 일치할 수 있는 경우 관계는 many_to_many
입니다. 예를 들어 class
조인 뷰를 사용한 student
탐색은 스키마가 다음 예시와 같이 설계되었다면 many_to_many
일 수 있습니다. 실제로 many-to-many
관계는 SQL 데이터베이스 설계에서 피하는 경우가 많으므로 대부분의 모델은 many_to_many
가 필요하지 않습니다.
Examples
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
}
}