Uso
always_join: [
view_name,
view_name,
...
]
}
Jerarquía
always_join |
Valor predeterminado
NingunaAcepta
Corchetes que contienen una lista de nombres de vistas separados por comasReglas especiales
Debes unir una vista a explore antes de usarla en always_join
|
Definición
always_join
obliga a que se incluyan una o más uniones en el SQL que genera Looker, incluso si el usuario no seleccionó un campo de esa vista unida. Se pueden requerir varias uniones mediante una lista separada por comas, como [view_name_a, view_name_b, etc]
.
Cuando Looker genera SQL para una consulta, intenta crear el SQL más limpio posible y solo usará las uniones necesarias para los campos que un usuario selecciona. Si usas always_join
, puedes forzar que se produzcan uniones sin importar lo que suceda.
always_join
puede ser valiosa cuando una unión se ejecuta con el parámetro type
y la unión no es un LEFT JOIN
. En tal caso, la combinación puede ser crítica para limitar correctamente las filas que se muestran.
Ejemplos
Asegúrate de que member
esté siempre unido a event
, incluso si el usuario no elige un campo de member
. Esto limita los resultados para que solo se muestren los eventos generados por los miembros:
explore: event {
always_join: [member]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
}
Asegúrate de que member
y payment
siempre estén unidos a event
, incluso si el usuario no elige un campo de ninguna de esas vistas. Esto limita los resultados para que solo se muestren los eventos generados por los miembros que ya hayan pagado:
explore: event {
always_join: [member, payment]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
join: payment {
sql_on: ${member.payment_id} = ${payment.id} ;;
type: inner
}
}
Desafíos habituales
Una vista debe unirse a una exploración antes de que se pueda hacer referencia en always_join
Para colocar una vista en always_join
, asegúrate de que esté unida a Explorar en la que se usa always_join
. Por ejemplo, esto no funcionará:
explore: event {
always_join: [member]
}
Aquí la vista member
no se unió a event
, por lo que no está disponible para su uso en always_join
.
Qué debes saber
Si es posible, no aplique la lógica empresarial en las uniones.
El enfoque estándar de Looker para unirse es usar un LEFT JOIN
siempre que sea posible. En los ejemplos anteriores, evitamos un LEFT JOIN
para que la lógica empresarial se pueda aplicar dentro de la combinación. En uno de los ejemplos, creamos una exploración que incluía solo aquellos eventos que estaban asociados con los miembros:
explore: event {
always_join: [member]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
}
La forma preferida de ejecutar esto en Looker es usar un LEFT JOIN
para obtener los datos de eventos y los datos de los miembros juntos:
explore: event {
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
}
}
Luego, puede crear una dimensión que se pueda establecer en sí o no, a fin de ver únicamente los eventos de miembros:
dimension: is_member_event {
type: yesno
sql: ${member.id} IS NOT NULL ;;
}
Este enfoque les brinda a los usuarios la flexibilidad de ver todos los eventos o solo los eventos para miembros. No obligaste a los usuarios a mirar solo los eventos de los miembros mediante la unión.