Q Language - Uniones

En qlenguaje, tenemos diferentes tipos de combinaciones basadas en las tablas de entrada suministradas y el tipo de tablas unidas que deseamos. Una combinación combina datos de dos tablas. Además de la persecución de claves externas, hay otras cuatro formas de unir tablas:

  • Unión simple
  • A partir de unirse
  • Unión izquierda
  • Unión unión

Aquí, en este capítulo, discutiremos cada una de estas uniones en detalle.

Unión simple

La combinación simple es el tipo más básico de combinación, que se realiza con una coma ','. En este caso, las dos tablas deben sertype conformant, es decir, ambas tablas tienen el mismo número de columnas en el mismo orden y la misma clave.

table1,:table2 / table1 is assigned the value of table2

Podemos usar comma-each join para tablas con la misma longitud para unir lateralmente. Una de las tablas se puede codificar aquí,

Table1, `Table2

A partir de unirse (aj)

Es la combinación más poderosa que se utiliza para obtener el valor de un campo en una tabla a partir del momento en otra tabla. Generalmente se utiliza para obtener la oferta y la demanda vigentes en el momento de cada operación.

Formato general

aj[joinColumns;tbl1;tbl2]

Por ejemplo,

aj[`sym`time;trade;quote]

Ejemplo

q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9))

q)tab2:([]a:(2 3 4);b:(3 4 5); c:( 4 5 6))

q)show aj[`a`b;tab1;tab2]

 a  b  d  c
-------------
 1  2  6
 2  3  7  4
 3  4  8  5
 4  5  9  6

Unión izquierda (lj)

Es un caso especial de aj donde el segundo argumento es una tabla con clave y el primer argumento contiene las columnas de la clave del argumento correcto.

Formato general

table1 lj Keyed-table

Ejemplo

q)/Left join- syntax table1 lj table2 or lj[table1;table2]

q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9))

q)tab2:([a:(2 3 4);b:(3 4 5)]; c:( 4 5 6))

q)show lj[tab1;tab2]

 a  b  d  c
-------------
 1  2  6
 2  3  7  4
 3  4  8  5
 4  5  9  6

Unión Unión (uj)

Permite crear una unión de dos tablas con esquemas distintos. Básicamente es una extensión de la combinación simple (,)

q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9))

q)tab2:([]a:(2 3 4);b:(3 4 5); c:( 4 5 6))

q)show uj[tab1;tab2]

 a  b  d  c
------------
 1  2  6
 2  3  7
 3  4  8
 4  5  9
 2  3     4
 3  4     5
 4  5     6

Si utiliza uj en tablas con claves, las claves primarias deben coincidir.