relationship

용도

탐색: view_name {
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_factsuser를 통해 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

userdna 관계로 one_to_one로 선언합니다.

explore: user {
  join: dna {
    sql_on: ${user.dna_id} = ${dna.id} ;;
    relationship: one_to_one
  }
}

orderuser 관계로 many_to_one로 선언합니다.

explore: order {
  join: user {
    sql_on: ${order.user_id} = ${user.id} ;;
    relationship: many_to_one
  }
}

orderitem 관계로 one_to_many로 선언합니다.

explore: order {
  join: item {
    sql_on: ${order.order_id} = ${item.order_id} ;;
    relationship: one_to_many
  }
}

studentclass 관계로 many_to_many로 선언합니다.

explore: student {
  join: class {
    sql_on: ${student.student_id} = ${class.student_id} ;;
    relationship: many_to_many
  }
}

useruser_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
  }
}