объединение словари kdb с символами в качестве ключей работает, но не длинные ключи? - PullRequest
0 голосов
/ 08 ноября 2019

объединение объединений словарей KDB, имеющих символы в качестве ключей, работает, но когда ключи изменяются на тип long;словарь не работает?

Q-код

k1:`1`2`3

v1: 1 2 3

k2:`2`3`4 

v2:2 3 4

//works
(enlist k1!v1) uj (enlist k2!v2)

k1:1 2 3

v1:1 2 3

k2:2 3 4 

v2:2 3 4

//not working
(enlist k1!v1) uj (enlist k2!v2)

why key list type change is not acceptable?

Ответы [ 2 ]

2 голосов
/ 08 ноября 2019

Проблема в том, что объединение можно применять только к таблицам. В вашем первом примере с заголовками столбцов в качестве символов вы объединяете две таблицы, как показано типом 98h:

k1:`1`2`3
v1: 1 2 3

type (enlist k1!v1)
98h

Однако во втором примере заголовки столбцов являются длинными, а не символами, этина самом деле это общие списки, как указано типом 0h:

k1: 1 2 3

type (enlist k1!v1)
0h

Поэтому, поскольку аргументы не являются таблицами, uj не может быть применен.

Подробнее о объединениях объединения можно прочитать здесь: https://code.kx.com/q4m3/9_Queries_q-sql/#997-union-join

2 голосов
/ 08 ноября 2019

Чтобы создать таблицу из словаря, необходимо создать словари столбцов , где ключи являются символами. Если вы проверите типы второй попытки, у вас есть словари, которые не присоединяются под uj

q)k1:1 2 3
q)v1:1 2 3
q).Q.qt (enlist k1!v1)
0b
...