primary_key

사용

view: view_name {
  dimension: field_name {
    primary_key: yes 
  }
}
계층 구조
primary_key
가능한 필드 유형
측정기준

수락
불리언 (예 또는 아니요)

정의

primary_key 매개변수는 측정기준이 뷰의 기본 키임을 지정합니다. 기본값은 false입니다. 예를 들면 다음과 같습니다.

dimension: id {
  primary_key: yes
  sql: ${TABLE}.id ;;
}

primary_key 파라미터에는 다음과 같은 특성이 있습니다.

  • Looker가 불필요한 GROUP BY 절을 방지하는 데 도움이 됩니다.
  • foreign_key 매개변수가 올바르게 작동하는 데 필요합니다.
  • 대칭 집계가 올바르게 작동하는 데 필요합니다. 측정값 (집계)으로 보기를 조인할 때는 집계를 올바르게 계산하기 위해 조인의 각 측면에 primary_key을 정의해야 합니다.

primary_key 파라미터에는 다음과 같은 제한사항이 있습니다.

  • 각 보기에서 두 개 이상의 필드에 이 매개변수를 추가할 수 없습니다.
  • timeframe을 두 개 이상 지정하는 dimension_group에는 이 매개변수를 추가할 수 없습니다.

복합 기본 키 만들기

여러 열로 구성된 기본 키가 있는 경우 이러한 열을 연결하는 측정기준을 만든 다음 이를 기본 키로 선언할 수 있습니다. 예를 들면 다음과 같습니다.

dimension: primary_key {
  primary_key: yes
  sql: CONCAT(${TABLE}.promotion_id, ${TABLE}.sku) ;;
}

CONCAT는 MySQL과 같은 일부 데이터베이스에서 작동하지만 다른 데이터베이스에는 다른 동등한 항목이 있을 수 있습니다. 예를 들어 Redshift는 ||을 연결 연산자로 사용합니다.

영구 파생 테이블 (PDT)을 사용하여 기본 키 만들기

고유한 행을 기본 키로 식별할 수 있는 합당한 방법이 없는 경우 영구 파생 테이블 (PDT)을 만들어 고유 ID를 생성할 수 있습니다. 예를 들어 다음 파생 테이블은 테이블의 행 번호를 기본 키로 사용합니다.

view: transaction {
  # sql_table_name: warehouse.transaction
  derived_table: {
    sql: SELECT ROW_NUMBER as transaction_pk, * FROM warehouse.transaction ;;
    sql_trigger_value: SELECT CURRENT_DATE ;;
    indexes: [customer_id, product_id, salesperson_id, transaction_date]
  }

  dimension: transaction_pk {
    type: number
    primary_key: yes
    hidden: yes
    sql: ${TABLE}.transaction_pk ;;
    ...
  }
}

확장 뷰에서 새 기본 키 정의

extends 매개변수를 사용하여 뷰를 확장하면 기본 뷰의 기본 키가 새 뷰로 확장됩니다.

기본 키를 새 측정기준으로 변경하려면 새 뷰의 원래 측정기준 정의에 primary_key: no를 추가하고 새 뷰의 새 측정기준 정의에 primary_key: yes를 추가합니다.

view: base {
  dimension: old_primary_key {
    primary_key: yes
    sql: ${TABLE}.id ;;
  }
}

view: new {
  extends: base

  dimension: old_primary_key {
    primary_key: no
  }

  dimension: new_primary_key {
    primary_key: yes
    sql: ${TABLE}.new_id ;;
  }
}