chcę uruchomić SQL konwencjonalnego stylu lewo przyłączyć KDB +/Q.Jak wykonać wydajne lewe sprzężenie w kdb?
- Otrzymujemy co najmniej jeden wiersz w wyniku dla każdego wiersza w lewej tabeli.
- Jeśli istnieje więcej niż jeden mecz w prawej tabeli, pojawia się wiersz dla każdy z nich, a nie tylko dla pierwszego meczu
danych testowych
x:([];a:1 1 2 3; b:3 4 5 6)
y:([]; a:1 2 2 4; c:7 8 9 10)
Najlepszym Wersja, którą mogę wymyślić, wygląda tak:
To dołącza lewe połączenie, które zapewnia tylko pierwsze dopasowanie z łączeniem wewnętrznym, które zapewnia wszystkie dopasowania, a następnie usuwa duplikaty:
distinct ej[`a; x; y] , x lj `a xkey y
Czy ktoś może dać mi taki, który jest szybszy i/lub lepiej w jakimś inny sposób? Naprawdę chciałbym na przykład uniknąć użycia wyraźnych.
Wow, dzięki! Connor, nie czytam jeszcze k. ** Czy możesz wyjaśnić, co zrobiłeś? ** Jeszcze raz dziękuję! – JSLover
To jest q implementacja. 'q) nungroup: {$ [liczba x: 0!x;,/[przerzuć każdy x], najpierw każdy,/[x]; x]} ' –
@Connor Gervin: twoje rozwiązanie daje błędne wyniki dla np. 'x: ([] a: 1 1 2 3 4; b: 3 4 5 6 100)' –