chiave_principale

Utilizzo

view: view_name {
dimension: field_name {
primary_key:
}
}
Gerarchia
primary_key
Tipi di campi possibili
Dimensione

Accetta
Una voce booleana (sì o no)

Definizione

Il parametro primary_key specifica che una dimensione è la chiave principale per la sua vista. Il valore predefinito è false. Ad esempio:

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

Il parametro primary_key ha le seguenti qualità e requisiti:

  • Consente a Looker di evitare clausole GROUP BY non necessarie.
  • È necessario che il parametro foreign_key funzioni correttamente.
  • È necessario per il corretto funzionamento degli aggregati simmetrici. Quando unisci le visualizzazioni con misure (aggregate), per poter calcolare correttamente le aggregazioni è necessario definire un primary_key su ogni lato dell'unione.
  • Non può essere un dimension_group che specifica più di un timeframe.

Creazione di una chiave primaria composta

Se hai una chiave primaria composta da più colonne, puoi creare una dimensione che concatena queste colonne, quindi dichiararla come chiave primaria. Ad esempio:

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

CONCAT funziona in alcuni database, ad esempio MySQL, ma altri database potrebbero avere un equivalente diverso. Redshift, ad esempio, utilizza || come operatore di concatenazione.

Utilizzo di una tabella derivata permanente (PDT) per creare una chiave primaria

Se non esiste un modo ragionevole per identificare una riga univoca come chiave primaria, puoi creare una tabella derivata permanente (PDT) per generare un ID univoco. Ad esempio, la seguente tabella derivata utilizza il numero di riga della tabella per essere utilizzato come chiave principale:

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 ;;
    ...
  }
}