Utilizzo
view: view_name {
dimension: field_name {
primary_key: yes
}
}
|
Gerarchia
primary_key |
Tipi di campi possibili
Dimensioni
Accetta
Un valore booleano (sì o no)
|
Definizione
Il parametro primary_key specifica che una dimensione è la chiave primaria della relativa visualizzazione. Il valore predefinito è false. Ad esempio:
dimension: id {
primary_key: yes
sql: ${TABLE}.id ;;
}
Il parametro primary_key ha le seguenti qualità:
- Aiuta Looker a evitare clausole
GROUP BYnon necessarie. - È necessario per il corretto funzionamento del parametro
foreign_key. - È necessario per il corretto funzionamento degli aggregati simmetrici. Quando unisci le visualizzazioni con le misure (aggregazioni), è necessario definire un
primary_keysu ogni lato dell'unione per calcolare correttamente le aggregazioni.
Il parametro primary_key presenta le seguenti limitazioni:
- Non puoi aggiungere questo parametro a più di un campo in ogni visualizzazione.
- Non puoi aggiungere questo parametro a un
dimension_groupche specifica più di untimeframe.
Creazione di una chiave primaria composta
Se hai una chiave primaria composta da più colonne, puoi creare una dimensione che le concatena e dichiararla come chiave primaria. Ad esempio:
dimension: primary_key {
primary_key: yes
sql: CONCAT(${TABLE}.promotion_id, ${TABLE}.sku) ;;
}
CONCATfunziona in alcuni database, come 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
Nei casi in cui non esiste un modo ragionevole per identificare una riga univoca come chiave primaria, puoi creare una tabella derivata persistente (PDT) per generare un ID univoco. Ad esempio, la seguente tabella derivata utilizza il numero di riga della tabella come chiave primaria:
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 ;;
...
}
}
Definizione di una nuova chiave primaria in una visualizzazione estesa
Se utilizzi il parametro extends per estendere una visualizzazione, la chiave primaria della visualizzazione di base verrà estesa alla nuova visualizzazione.
Per modificare la chiave primaria in una nuova dimensione, aggiungi primary_key: no alla definizione della dimensione originale nella nuova visualizzazione e aggiungi primary_key: yes alla definizione della nuova dimensione nella nuova visualizzazione.
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 ;;
}
}