Uso
view: view_name {
dimension: field_name {
primary_key: yes
}
}
|
Hierarquia
primary_key |
Tipos de campo possíveis
Dimensão
Aceita
Um booleano (sim ou não)
|
Definição
O parâmetro primary_key especifica que uma dimensão é a chave primária da visualização. O valor padrão é false. Exemplo:
dimension: id {
primary_key: yes
sql: ${TABLE}.id ;;
}
O parâmetro primary_key tem as seguintes qualidades:
- Ajuda o Looker a evitar cláusulas
GROUP BYdesnecessárias. - É necessário para que o parâmetro
foreign_keyfuncione corretamente. - É necessário para o funcionamento adequado de agregações simétricas. Ao unir visualizações com medidas (agregações), um
primary_keyprecisa ser definido em cada lado da junção para calcular corretamente as agregações.
O parâmetro primary_key tem as seguintes limitações:
- Não é possível adicionar esse parâmetro a mais de um campo em cada visualização.
- Não é possível adicionar esse parâmetro a um
dimension_groupque especifica mais de umtimeframe.
Como criar uma chave primária composta
Se você tiver uma chave primária composta por várias colunas, crie uma dimensão que concatene essas colunas e declare-a como sua chave primária. Exemplo:
dimension: primary_key {
primary_key: yes
sql: CONCAT(${TABLE}.promotion_id, ${TABLE}.sku) ;;
}
O
CONCATfunciona em alguns bancos de dados, como o MySQL, mas outros podem ter um equivalente diferente. O Redshift, por exemplo, usa||como operador de concatenação.
Usar uma tabela derivada permanente (PDT) para criar uma chave primária
Nos casos em que não há uma maneira razoável de identificar uma linha exclusiva como uma chave primária, é possível criar uma tabela derivada permanente (PDT) para gerar um ID exclusivo. Por exemplo, a tabela derivada a seguir usa o número da linha da tabela como uma chave primária:
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 ;;
...
}
}
Definir uma nova chave primária em uma visualização estendida
Se você usar o parâmetro extends para estender uma visualização, a chave primária da visualização de base será estendida para a nova visualização.
Para mudar a chave primária para uma nova dimensão, adicione primary_key: no à definição de dimensão original na nova visualização e primary_key: yes à definição de nova dimensão na nova visualização.
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 ;;
}
}