Это слишком долго для комментария. Как указывало @ Yoni L , проблема заключается в двойном трубе оператора.
Для тех, у кого есть SQL, join
может быть немного нелогичным (на самом деле это kind=innerunique
):
Оператор JOIN :
вид не указан, вид = innerunique
Для каждого значения включения соответствует только один ряд с левой стороны.
ключ. Вывод содержит строку для каждого совпадения этой строки со строками
справа.
Kind = внутренний
В выводе есть строка для каждой комбинации совпадающих строк
слева и справа.
let t1 = datatable(key:long, value:string)
[
1, "a",
1, "b"
];
let t2 = datatable(key:long, value:string)
[
1, "c",
1, "d"
];
t1| join t2 on key;
Выход:
┌─────┬───────┬──────┬────────┐
│ key │ value │ key1 │ value1 │
├─────┼───────┼──────┼────────┤
│ 1 │ a │ 1 │ c │
│ 1 │ a │ 1 │ d │
└─────┴───────┴──────┴────────┘
Демо
Стиль SQL JOIN
версия:
let t1 = datatable(key:long, value:string)
[
1, "a",
1, "b"
];
let t2 = datatable(key:long, value:string)
[
1, "c",
1, "d"
];
t1| join kind=inner t2 on key;
Выход:
┌─────┬───────┬──────┬────────┐
│ key │ value │ key1 │ value1 │
├─────┼───────┼──────┼────────┤
│ 1 │ b │ 1 │ c │
│ 1 │ a │ 1 │ c │
│ 1 │ b │ 1 │ d │
│ 1 │ a │ 1 │ d │
└─────┴───────┴──────┴────────┘
Демо