Uso
view: view_name {
dimension: field_name {
primary_key: yes
}
}
|
Jerarquía
primary_key |
Tipos de campos posibles
Dimensión
Acepta
Un valor booleano (sí o no)
|
Definición
El parámetro primary_key especifica que una dimensión es la clave primaria de su vista. El valor predeterminado es false. Por ejemplo:
dimension: id {
primary_key: yes
sql: ${TABLE}.id ;;
}
El parámetro primary_key tiene las siguientes cualidades:
- Ayuda a Looker a evitar cláusulas
GROUP BYinnecesarias. - Es necesario para que el parámetro
foreign_keyfuncione correctamente. - Se requiere para el funcionamiento correcto de los agregados simétricos. Cuando unes vistas con medidas (agregados), se debe definir un
primary_keyen cada lado de la unión para calcular correctamente las agregaciones.
El parámetro primary_key tiene las siguientes limitaciones:
- No puedes agregar este parámetro a más de un campo en cada vista.
- No puedes agregar este parámetro a un objeto
dimension_groupque especifique más de untimeframe.
Cómo crear una clave primaria compuesta
Si tienes una clave primaria que se compone de varias columnas, puedes crear una dimensión que concatene esas columnas y, luego, declararla como tu clave primaria. Por ejemplo:
dimension: primary_key {
primary_key: yes
sql: CONCAT(${TABLE}.promotion_id, ${TABLE}.sku) ;;
}
CONCATfunciona en algunas bases de datos, como MySQL, pero otras bases de datos pueden tener un equivalente diferente. Por ejemplo, Redshift usa||como operador de concatenación.
Cómo usar una tabla derivada persistente (PDT) para crear una clave primaria
En los casos en que no haya una forma razonable de identificar una fila única como clave primaria, puedes crear una tabla derivada persistente (PDT) para generar un ID único. Por ejemplo, la siguiente tabla derivada usa el número de fila de la tabla como clave 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 ;;
...
}
}
Cómo definir una clave primaria nueva en una vista extendida
Si usas el parámetro extends para extender una vista, la clave primaria de la vista base se extenderá a la vista nueva.
Para cambiar la clave primaria a una dimensión nueva, agrega primary_key: no a la definición de la dimensión original en la vista nueva y agrega primary_key: yes a la definición de la dimensión nueva en la vista nueva.
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 ;;
}
}