En esta página, se hace referencia al parámetro
type
que forma parte de una unión.
type
también se puede usar como parte de una dimensión, que se describe en la página de documentación Dimensión, filtro y tipos de parámetros.
type
también se puede usar como parte de una medida, que se describe en la página de documentación Tipos de medición.
type
también se puede usar como parte de un filtro del panel, que se describe en la página de documentación Parámetros del panel.
type
también se puede usar como parte de un elemento del panel, descrito en la página de documentación del parámetrotype
(para paneles de LookML).
Uso
join: view_name_2 {
type: inner
}
}
Jerarquía
type |
Valor predeterminado
left_outer Acepta
Un tipo de unión (cross , full_outer , inner , left_outer )Reglas especiales
Cuando uses un type que no sea left_outer , te recomendamos usar always_join para asegurarte de que las filas resultantes incluyan tus restricciones para unirse.
|
Definición
type
te permite describir el tipo de unión que deseas realizar. Los valores de tipo de unión posibles se representan en la siguiente imagen:
Los valores de tipo de unión posibles se describen en estas secciones de esta página:
left_outer
(valor predeterminado)
El tipo de unión más común en Looker es left_outer
(el motivo de su uso frecuente se describe en la sección Se prefieren los tipos de unión left_outer
en esta página). Es posible que lo conozcas desde SQL como un LEFT JOIN
. Cuando usas este elemento type
, se incluyen todas las filas de la pestaña Explorar y se incluyen los datos de la vista unida, si están disponibles.
full_outer
El tipo de unión full_outer
, que quizás conoces de SQL como FULL OUTER JOIN
, incluye todas las filas de la vista Explorar y unidas, incluso si no hay datos correspondientes de la otra vista. Ten en cuenta que las uniones externas completas no son compatibles con MySQL.
inner
El tipo de unión inner
(que conoces de SQL como JOIN
o INNER JOIN
) solo incluye filas que tienen registros coincidentes en la vista Explorar y de unión.
cross
Rara vez se usa el tipo de unión cross
(que conoces de SQL como CROSS JOIN
). En ocasiones, es útil para el llenado en cero o la generación de matrices. Crea una fila para cada combinación de la vista Explorar y de unión. El concepto es difícil de mostrar en un diagrama de Venn y se puede comprender mejor si se observa el ejemplo de la tabla:
Ejemplos
Usa un LEFT JOIN
para agregar datos de dna
a tus datos de people
, si hay información de dna
disponible:
explore: person {
join: dna {
sql_on: ${person.dna_id} = ${dna.id} ;;
type: left_outer # Could be excluded since left_outer is the default
}
}
Usa un FULL OUTER JOIN
para agregar datos de user
a tus datos de order
, incluso si el usuario no realizó un pedido:
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
type: full_outer
}
}
Usa un INNER JOIN
para agregar datos user
a tus datos de event
y limita los resultados a los eventos que generó un usuario:
explore: event {
join: user {
sql_on: ${event.user_id} = ${user.id} ;;
type: inner
}
}
Usa CROSS JOIN
para generar todas las combinaciones posibles de owner
y property
:
explore: property {
join: owner {
sql_on: 1 = 1 ;; # this sql_on condition is required in some dialects,
type: cross # but causes problems in other dialects, try adding or
} # removing if you experience problems with cross joins
}
Qué debes saber
Por lo general, se prefieren left_outer
tipos de unión
Cuando aprendes y usas SQL, muchas personas se enfocan principalmente en JOIN
, que técnicamente se conoce como una “unión interna”. Por este motivo, se puede suponer que se debe usar type: inner_join
en la mayoría de los casos. Sin embargo, Looker suele funcionar mejor con type: left_outer
, que es como usar un LEFT JOIN
en SQL.
Esto se debe a que la vista asociada con Explorar (a diferencia de las vistas unidas a una exploración) suele ser la información "principal". Por ejemplo, puedes tener una exploración basada en información del evento. Es posible que el sistema genere algunos de los eventos y que otros los generen. Si te unes a user
en event
mediante un JOIN
regular, solo podrás ver los eventos que haya creado un usuario y perderás visibilidad de los eventos del sistema. En cambio, con un elemento LEFT JOIN
, podrás ver todos los eventos, independientemente de si hay un usuario asociado o no.
Te recomendamos que uses always_join
si es importante restringir las filas
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. Cuando usas type
para definir algo distinto de un LEFT JOIN
, siempre debes permitir que una unión determinada (o un conjunto de uniones) sea parte de la consulta, a fin de asegurarte de que las filas resultantes incluyan tus restricciones de combinación. Puedes lograr esto mediante el parámetro always_join
.