El prefijo join une la tabla cargada con una tabla existente o con la última tabla de datos creada.
El efecto de un join o unión de datos es ampliar la tabla de destino con un conjunto adicional de campos o atributos, es decir, aquellos elementos que aún no estén presentes en la tabla de destino y que deseamos agregar (unir) a nuestra tabla. Cualquier nombre de campo común entre el conjunto de datos de origen y la tabla de destino se utilizará para determinar cómo asociar los nuevos registros entrantes. Esto se conoce comúnmente como una "unión natural" o "join natural". Una operación de unión o join de Qlik puede dar lugar a que la tabla de destino resultante tenga más o menos registros de los que tenía al principio, según la singularidad de la asociación y el tipo de join empleado.
Tipos de uniones
Hay cuatro tipos de uniones:
Left join
Inner join
Outer join
Right join
Conjuntos de resultados, a modo de ejemplo, de diferentes tipos de operaciones de unión
Left join
Los Left joins son el tipo de unión más común. Por ejemplo, si tiene un conjunto de datos de transacciones y le gustaría combinarlo con un conjunto de datos de referencia, normalmente usaría un Left Join. Primero cargaría la tabla de transacciones, luego cargaría el conjunto de datos de referencia a la vez que lo une mediante un prefijo Left Join en la tabla de transacciones ya cargada. Un Left Join mantendría todas las transacciones tal como están y agregaría los campos de datos de referencia complementarios donde se encuentre un resultado coincidente.
Left join
Inner join
Cuando tiene dos conjuntos de datos y solo le interesa ver aquellos resultados en los que exista una asociación coincidente, considere la posibilidad de utilizar un Inner Join. Esto eliminará todos los registros tanto de los datos de origen cargados como de la tabla de destino si no se encuentra ninguna coincidencia. Como resultado, es posible que esto deje la tabla de destino con menos registros de los que tenía antes de realizar la operación join.
Inner join
Outer join (opción predeterminada)
Cuando necesite conservar tanto los registros de destino como todos los registros entrantes, utilice un Outer Join. Cuando no se encuentra ninguna coincidencia, se conservan todos los conjuntos de registros, mientras que los campos del lado opuesto de la combinación permanecerán vacíos (nulos).
Si se omite la palabra clave "type", el tipo de unión predeterminado será un outer join.
Outer join
Right join
Este tipo de unión conserva todos los registros que se van a cargar, al tiempo que reduce los registros de la tabla a la que va dirigida la unión únicamente a aquellos con los que exista una coincidencia de asociación en los registros entrantes. Se trata de un tipo de unión específica que a veces se utiliza como medio para reducir una tabla de registros ya cargada a un subconjunto concreto.
Right join
Cross join
Nota informativaSi no hay nombres de campo en común entre el origen y destino de una operación de unión, la unión dará como resultado un producto cartesiano de todas las filas; esto se denomina "unión cruzada" o "cross join".
Conjunto de resultados a modo de ejemplo de una operación "cross join"
Sintaxis y argumentos
Sintaxis:
[inner | outer | left | right ]Join[ (tablename )
]( loadstatement | selectstatement )
Argumentos
Argumento
Descripción
tablename
Tabla designada que debe compararse con la tabla cargada.
loadstatement o selectstatement
La sentencia LOAD o SELECT para la tabla cargada.
Temas relacionados
Estos temas le ayudarán a trabajar con esta función:
El prefijo de carga Keep es similar al prefijo Join, pero no combina los conjuntos de datos de origen y de destino. En su lugar, recorta cada conjunto de datos según el tipo de operación adoptada (inner, outer, left o right).
Ejemplos de script de carga - Left join
Un left join conserva todos los registros de la tabla principal (tabla objetivo o de destino) y añade los datos coincidentes de una segunda tabla (tabla de origen). Si no hay ninguna coincidencia en el origen, el registro de la tabla principal sigue apareciendo, pero con campos vacíos de la tabla de origen.
Agregue el script de ejemplo a su aplicación y ejecútelo. Para ver el resultado, agregue los campos enumerados en la columna de resultados a una hoja en su aplicación.
Script de carga
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];
Table2:
Left Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ];
Este ejemplo muestra el resultado de realizar un Left Join cuando solo se unen los valores presentes en la primera tabla (izquierda).
Vista general
Supongamos que tiene una lista de pedidos, pero no todos los pedidos tienen un registro con su correspondiente cliente.
Script de carga
Orders:
Load * inline [
OrderID, CustomerID, Amount
1, 101, 200
2, 102, 150
3, 104, 400
];
Customers:
Left Join (Orders)
Load * inline [
CustomerID, Name
101, Alice
102, Bob
103, Carol
];
Resultados
Si expande la ventana de vista previa en el visor del modelo de datos, verá una parte del conjunto de resultados completo organizado en una tabla:
Vista previa de la tabla en el visor del modelo de datos
OrderID
CustomerID
Amount
Nombre
1
101
200
Alice
2
102
150
Bob
3
104
400
-
OrderID 1 y 2 tienen clientes coincidentes. OrderID 3 no tiene un cliente coincidente, por lo que Name está en blanco.
Vista general
Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.
El script de carga contiene:
Un conjunto de datos que representa registros de cambios, el cual se carga en una tabla denominada Changes. Incluye un campo clave de ID de estado.
Un segundo conjunto de datos que representa los estados de cambio, el cual se carga y combina con los registros de cambio originales uniéndolos con un prefijo left join Join.
Este left join garantiza que los registros de cambios permanezcan intactos mientras se agregan atributos de estado donde se encuentre un resultado coincidente en los registros de estado entrantes en función de un ID de estado común.
Script de carga
Changes:
Load * inline [
Change ID Status ID Scheduled Start Date Scheduled End Date Business Impact
10030 4 19/01/2022 23/02/2022 None
10015 3 04/01/2022 15/02/2022 Low
10103 1 02/04/2022 29/05/2022 Medium
10185 2 23/06/2022 08/09/2022 None
10323 1 08/11/2022 26/11/2022 High
10326 2 11/11/2022 05/12/2022 None
10138 2 07/05/2022 03/08/2022 None
10031 3 20/01/2022 25/03/2022 Low
10040 1 29/01/2022 22/04/2022 None
10134 1 03/05/2022 08/07/2022 Low
10334 2 19/11/2022 06/02/2023 Low
10220 2 28/07/2022 06/09/2022 None
10264 1 10/09/2022 17/10/2022 Medium
10116 1 15/04/2022 24/04/2022 None
10187 2 25/06/2022 24/08/2022 Low
] (delimiter is '\t');
Status:
Left Join (Changes)
Load * inline [
Status ID Status Sub Status
1 Open Not Started
2 Open Started
3 Closed Completed
4 Closed Cancelled
5 Closed Obsolete
] (delimiter is '\t');
Resultados
Abra el visor del modelo de datos y observe la forma del modelo de datos. Solo hay una tabla desnormalizada presente. Es una combinación de todos los registros de cambios originales, con los atributos de estado coincidentes unidos en cada registro de cambios.
Modelo de datos internos resultante
Cambios
ID de cambio
ID de estado
Fecha de inicio programada
Fecha de finalización programada
Impacto de negocio
Estado
Subestado
Si expande la ventana de vista previa en el visor del modelo de datos, verá una parte de este conjunto de resultados completo organizado en una tabla:
Vista previa de la tabla de cambios en el visor del modelo de datos
ID de cambio
ID de estado
Fecha de inicio programada
Fecha de finalización programada
Impacto de negocio
Estado
Subestado
10030
4
19/01/2022
23/02/2022
Ninguno
Cerrado
Cancelado
10031
3
20/01/2022
25/03/2022
Baja
Cerrado
Finalizado
10015
3
04/01/2022
15/02/2022
Baja
Cerrado
Finalizado
10103
1
02/04/2022
29/05/2022
Medium
Abrir
No iniciado
10116
1
15/04/2022
24/04/2022
Ninguno
Abrir
No iniciado
10134
1
03/05/2022
08/07/2022
Baja
Abrir
No iniciado
10264
1
10/09/2022
17/10/2022
Medium
Abrir
No iniciado
10040
1
29/01/2022
22/04/2022
Ninguno
Abrir
No iniciado
10323
1
08/11/2022
26/11/2022
Alta
Abrir
No iniciado
10187
2
25/06/2022
24/08/2022
Baja
Abrir
Iniciado
10185
2
23/06/2022
08/09/2022
Ninguno
Abrir
Iniciado
10220
2
28/07/2022
06/09/2022
Ninguno
Abrir
Iniciado
10326
2
11/11/2022
05/12/2022
Ninguno
Abrir
Iniciado
10138
2
07/05/2022
03/08/2022
Ninguno
Abrir
Iniciado
10334
2
19/11/2022
06/02/2023
Baja
Abrir
Iniciado
Dado que la quinta fila de la tabla Estado (ID. de estado: "5", Estado: "Cerrado", Subestado: "Obsoleto") no corresponde a ninguno de los registros de la tabla Cambios, la información de esta fila no aparece en el conjunto de resultados anterior.
Vuelva al Editor de carga de datos. Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión: Status.
Añada esta medida:
=Count([Change ID])
Ahora puede inspeccionar la cantidad de cambios por estado.
Tabla de resultados
Estado
=Count([Change ID])
Abrir
12
Cerrado
3
Ejemplos de script de carga - Inner join
Una unión interna inner join mantiene solo los registros que existan en ambas tablas (basándose en los valores de campo coincidentes).
Script de carga
Agregue el script de ejemplo a su aplicación y ejecútelo. Para ver el resultado, agregue los campos enumerados en la columna de resultados a una hoja en su aplicación.
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];
Table2:
Inner Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ];
Este ejemplo muestra el resultado de aplicar Inner Join cuando solo se unen los valores presentes tanto en la primera tabla (izquierda) como en la segunda (derecha).
Vista general
Tiene una serie de pedidos y una lista de los pedidos enviados. Solo quiere información sobre los pedidos que se han enviado.
Si expande la ventana de vista previa en el visor del modelo de datos, verá una parte del conjunto de resultados completo organizado en una tabla:
Vista previa de la tabla en el visor del modelo de datos
OrderID
Amount
ShipDate
2
150
2022-05-01
3
400
2022-05-02
Solo aparecen OrderID 2 y 3, porque ambos existen en ambas tablas.
Vista general
Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.
El script de carga contiene:
Un conjunto de datos que representa registros de cambios, el cual se carga en una tabla denominada Changes.
Un segundo conjunto de datos que representa los registros de cambios que se originan en el sistema de origen JIRA. Esto se carga y se combina con los registros originales uniéndolos con un prefijo de carga Inner Join.
Este Inner Join garantiza que solo se mantengan los cinco registros de cambios que se encuentran en ambos conjuntos de datos.
Script de carga
Changes:
Load * inline [
Change ID Status ID Scheduled Start Date Scheduled End Date Business Impact
10030 4 19/01/2022 23/02/2022 None
10015 3 04/01/2022 15/02/2022 Low
10103 1 02/04/2022 29/05/2022 Medium
10185 2 23/06/2022 08/09/2022 None
10323 1 08/11/2022 26/11/2022 High
10326 2 11/11/2022 05/12/2022 None
10138 2 07/05/2022 03/08/2022 None
10031 3 20/01/2022 25/03/2022 Low
10040 1 29/01/2022 22/04/2022 None
10134 1 03/05/2022 08/07/2022 Low
10334 2 19/11/2022 06/02/2023 Low
10220 2 28/07/2022 06/09/2022 None
10264 1 10/09/2022 17/10/2022 Medium
10116 1 15/04/2022 24/04/2022 None
10187 2 25/06/2022 24/08/2022 Low
] (delimiter is '\t');
JIRA_changes:
Inner Join (Changes)
Load
[Ticket ID] AS [Change ID],
[Source System]
inline
[
Ticket ID Source System
10000 JIRA
10030 JIRA
10323 JIRA
10134 JIRA
10334 JIRA
10220 JIRA
20000 TFS
] (delimiter is '\t');
Resultados
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
Source System
Change ID
Business Impact
Ahora puede revisar los cinco registros resultantes. La tabla resultante de un Inner Join solo incluirá registros con información coincidente en ambos conjuntos de datos.
Tabla de resultados
Sistema de origen
ID de cambio
Impacto de negocio
JIRA
10030
Ninguno
JIRA
10134
Baja
JIRA
10220
Ninguno
JIRA
10323
Alta
JIRA
10334
Baja
Ejemplos de script de carga - Outer join
Un outer join mantiene todos los registros de ambas tablas. Cuando no hay coincidencia, los campos se dejan en blanco.
Script de carga
Agregue el script de ejemplo a su aplicación y ejecútelo. Para ver el resultado, agregue los campos enumerados en la columna de resultados a una hoja en su aplicación.
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];
Table2:
Outer Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ];
En este ejemplo, las dos tablas, Table1 y Table2, se fusionan en una sola tabla denominada Table1. En casos como este, el prefijo outer a menudo se usa para unir varias tablas en una sola tabla a fin de realizar agregaciones sobre los valores de una sola tabla.
Vista general
Desea una lista completa de todos los clientes y pedidos, incluso si algunos clientes no tienen pedidos y algunos pedidos no tienen un registro de cliente.
Script de carga
Orders:
Load * inline [
OrderID, CustomerID
1, 101
2, 102
3, 104
];
Customers:
Outer Join (Orders)
Load * inline [
CustomerID, Name
101, Alice
102, Bob
103, Carol
];
Resultados
Si expande la ventana de vista previa en el visor del modelo de datos, verá una parte de este conjunto de resultados completo organizado en una tabla:
Vista previa de la tabla en el visor del modelo de datos
OrderID
CustomerID
Name
1
101
Alice
2
102
Bob
3
104
-
-
103
Carol
OrderID 3 no tiene un cliente coincidente (Name en blanco).
CustomerID 103 (Carol) no tiene ningún pedido coincidente (OrderID en blanco).
Vista general
Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.
El script de carga contiene:
Un conjunto de datos que representa registros de cambios, el cual se carga en una tabla denominada Changes.
Un segundo conjunto de datos que representa los registros de cambios que se originan en el sistema de origen JIRA, el cual se carga y se combina con los registros originales uniéndolos con un prefijo de carga Outer Join.
Esto garantiza que se conserven todos los registros de cambios superpuestos de ambos conjuntos de datos.
Script de carga
// 8 Change records
Changes:
Load * inline [
Change ID Status ID Scheduled Start Date Scheduled End Date Business Impact
10030 4 19/01/2022 23/02/2022 None
10015 3 04/01/2022 15/02/2022 Low
10138 2 07/05/2022 03/08/2022 None
10031 3 20/01/2022 25/03/2022 Low
10040 1 29/01/2022 22/04/2022 None
10134 1 03/05/2022 08/07/2022 Low
10334 2 19/11/2022 06/02/2023 Low
10220 2 28/07/2022 06/09/2022 None
] (delimiter is '\t');
// 6 Change records
JIRA_changes:
Outer Join (Changes)
Load
[Ticket ID] AS [Change ID],
[Source System]
inline
[
Ticket ID Source System
10030 JIRA
10323 JIRA
10134 JIRA
10334 JIRA
10220 JIRA
10597 JIRA
] (delimiter is '\t');
Resultados
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
Source System
Change ID
Business Impact
Ahora puede revisar los 10 registros resultantes.
Tabla de resultados
Sistema de origen
ID de cambio
Impacto de negocio
JIRA
10030
Ninguno
JIRA
10134
Baja
JIRA
10220
Ninguno
JIRA
10323
-
JIRA
10334
Baja
JIRA
10597
-
-
10015
Baja
-
10031
Baja
-
10040
Ninguno
-
10138
Ninguno
Ejemplos de script de carga - Right join
Una unión right join mantiene todos los registros de la tabla de origen y añade información coincidente de la tabla de destino. Si la tabla de destino no tiene ninguna coincidencia, sus campos se ven en blanco.
Script de carga
Agregue el script de ejemplo a su aplicación y ejecútelo. Para ver el resultado, agregue los campos enumerados en la columna de resultados a una hoja en su aplicación.
Table1:
Load * inline [
Column1, Column2
A, B
1, aa
2, cc
3, ee ];
Table2:
Right Join Load * inline [
Column1, Column3
A, C
1, xx
4, yy ];
Este ejemplo muestra el resultado de realizar un Right Join cuando solo se unen los valores de la segunda tabla (derecha).
Vista general
La tabla de origen es un listado de clientes y deseamos ver todos los clientes con sus pedidos coincidentes.
Script de carga
Orders:
Load * inline [
OrderID, CustomerID
1, 101
2, 102
3, 104
];
Customers:
Right Join (Orders)
Load * inline [
CustomerID, Name
101, Alice
102, Bob
103, Carol
];
Resultados
Si expande la ventana de vista previa en el visor del modelo de datos, verá una parte de este conjunto de resultados completo organizado en una tabla:
Vista previa de la tabla en el visor del modelo de datos
CustomerID
Name
OrderID
101
Alice
1
102
Bob
2
103
Carol
-
Aparecen todos los clientes. Carol no tiene pedidos (OrderID en blanco).
Vista general
Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.
El script de carga contiene:
Un conjunto de datos que representa registros de cambios, el cual se carga en una tabla denominada Changes.
Un segundo conjunto de datos que representa los registros de cambios que se originan en el sistema de origen Teamwork. Esto se carga y se combina con los registros originales al unirlo con un prefijo de carga Right Join.
Esto garantiza que solo se mantengan los registros de cambios Teamwork, sin perder ningún registro Teamwork si la tabla de destino no tiene ningún Change ID.
Script de carga
Changes:
Load * inline [
Change ID Status ID Scheduled Start Date Scheduled End Date Business Impact
10030 4 19/01/2022 23/02/2022 None
10015 3 04/01/2022 15/02/2022 Low
10103 1 02/04/2022 29/05/2022 Medium
10185 2 23/06/2022 08/09/2022 None
10323 1 08/11/2022 26/11/2022 High
10326 2 11/11/2022 05/12/2022 None
10138 2 07/05/2022 03/08/2022 None
10031 3 20/01/2022 25/03/2022 Low
10040 1 29/01/2022 22/04/2022 None
10134 1 03/05/2022 08/07/2022 Low
10334 2 19/11/2022 06/02/2023 Low
10220 2 28/07/2022 06/09/2022 None
10264 1 10/09/2022 17/10/2022 Medium
10116 1 15/04/2022 24/04/2022 None
10187 2 25/06/2022 24/08/2022 Low
] (delimiter is '\t');
Teamwork_changes:
Right Join (Changes)
Load
[Ticket ID] AS [Change ID],
[Source System]
inline
[
Ticket ID Source System
10040 Teamwork
10015 Teamwork
10103 Teamwork
10031 Teamwork
50231 Teamwork
] (delimiter is '\t');
Resultados
Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:
Source System
Change ID
Business Impact
Ahora puede revisar los cinco registros resultantes.
Tabla de resultados
Sistema de origen
ID de cambio
Impacto de negocio
Trabajo en equipo
10015
Baja
Trabajo en equipo
10031
Baja
Trabajo en equipo
10040
Ninguno
Trabajo en equipo
10103
Medium
Trabajo en equipo
50231
-
Resolución de problemas - Cross join
Vista general
Si une dos tablas que no tienen nombres de campo coincidentes entre sí, cada fila de la primera tabla se combinará con cada fila de la segunda, lo que podría producir una gran cantidad de registros (un producto cartesiano) y dar lugar a asociaciones de datos inesperadas.
Si encuentra algún problema con esta página o su contenido (errores tipográficos, pasos que faltan o errores técnicos), no dude en ponerse en contacto con nosotros.