Uso
dimensão: field_name {
primary_key: sim
}
}
Hierarquia
primary_key |
Tipos de campo possíveis
DimensãoAceita
Um booleano (sim ou não) |
Definição
O parâmetro primary_key
especifica que uma dimensão é a chave primária para a visualização dela. O valor padrão é false
. Exemplo:
dimension: id {
primary_key: yes
sql: ${TABLE}.id ;;
}
O parâmetro primary_key
tem as seguintes qualidades e requisitos:
- Ajuda o Looker a evitar cláusulas
GROUP BY
desnecessárias. - É necessário para que o parâmetro
foreign_key
funcione corretamente. - É necessário para o funcionamento adequado dos agregados simétricos. Ao mesclar visualizações com medidas (agregadas), é necessário definir um
primary_key
em cada lado da mesclagem para calcular corretamente as agregações. - Não pode ser um
dimension_group
que especifica mais de umtimeframe
.
Como criar uma chave primária composta
Se você tiver uma chave primária composta de várias colunas, crie uma dimensão que as concatena e declare-a como sua chave primária. Exemplo:
dimension: primary_key {
primary_key: yes
sql: CONCAT(${TABLE}.promotion_id, ${TABLE}.sku) ;;
}
CONCAT
funciona em alguns bancos de dados, como o MySQL, mas outros podem ter um equivalente diferente. O Redshift, por exemplo, usa||
como o operador de concatenação.
Como usar uma tabela derivada permanente (PDT) para criar uma chave primária
Nos casos em que não há uma forma razoável de identificar uma linha exclusiva como uma chave primária, é possível criar uma tabela derivada persistente (PDT, na sigla em inglês) para gerar um ID exclusivo. Por exemplo, a tabela derivada abaixo usa o número da linha da tabela para servir como 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 ;;
...
}
}