기본_키

용도

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

결제 가능
부울 (예 또는 아니요)

정의

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

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

primary_key 매개변수의 특성과 요구사항은 다음과 같습니다.

  • 불필요한 GROUP BY 절을 피할 수 있도록 Looker를 지원합니다.
  • foreign_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 ;;
    ...
  }
}