Idioma Q - Associa-se
Dentro qlinguagem, temos diferentes tipos de junções com base nas tabelas de entrada fornecidas e o tipo de tabelas associadas que desejamos. Uma junção combina dados de duas tabelas. Além da busca de chave estrangeira, existem quatro outras maneiras de unir tabelas -
- Junção simples
- Assim que entrar
- Associação à esquerda
- União
Aqui, neste capítulo, discutiremos cada uma dessas junções em detalhes.
Junção Simples
A junção simples é o tipo mais básico de junção, executada com uma vírgula ','. Neste caso, as duas tabelas devem sertype conformant, ou seja, ambas as tabelas têm o mesmo número de colunas na mesma ordem e mesma chave.
table1,:table2 / table1 is assigned the value of table2
Podemos usar junção de cada vírgula para tabelas com o mesmo comprimento para junção lateral. Uma das tabelas pode ser codificada aqui,
Table1, `Table2
Asof Join (aj)
É a junção mais poderosa que é usada para obter o valor de um campo em uma tabela a partir do momento em outra tabela. Geralmente é usado para obter a oferta e solicitação prevalecentes no momento de cada negociação.
Formato geral
aj[joinColumns;tbl1;tbl2]
Por exemplo,
aj[`sym`time;trade;quote]
Exemplo
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
Junção à esquerda (lj)
É um caso especial de aj onde o segundo argumento é uma tabela com chave e o primeiro argumento contém as colunas da chave do argumento correto.
Formato geral
table1 lj Keyed-table
Exemplo
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ão Sindical (uj)
Permite criar uma união de duas tabelas com esquemas distintos. É basicamente uma extensão da junção simples (,)
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
Se você estiver usando uj em tabelas chaveadas, as chaves primárias devem corresponder.