W poprzednim wpisie dotyczącym PowerQuery omówiłem, jak połączyć dane z dwóch tabel. Ponieważ chcieliśmy wygenerować tabelę z danymi, które znajdują się w pierwszej (lewej) tabeli a nie znajdują się w drugiej (prawej) kazałem użyć sprzężenia Anty lewe. W tym wpisie omówię rodzaje sprzężeń dostępne w PowerQuery (jeśli miałeś do czynienia z bazami danych to zapewne nie obce Ci są słowa kluczowe takie jak np. JOIN, LEFT JOIN, RIGHT JOIN itp.)
Rozważmy taką sytuację: mamy dwie tabele tak jak na poniższym rysunku. W bazach danych jako lewą tabelę się określa tę tabelę, która jako pierwsza występuje w zapytaniu a jako prawą określa się tę, która jako druga występuje w zapytaniu. Za chwilę stworzę 6 scaleń (bo w Power Query tyle jest rodzajów sprzężeń). Zawsze jako pierwszą tabelę będę wybierał Wydawnictwo a jako prawą Gatunek.

Zanim jednak przystąpimy do działania musimy zaimportować te dwie tabele. W tym celu należy wykonać następujące czynności:
- Uruchom program MS Excel
- Z karty Dane wybierz Z pliku tekstowego/CSV

- Wskaż plik Wydawnictwa.csv
- Pojawi się nowe okno dialogowe. W polu Pochodzenie pliku wybierz 65001 Unicode (UTF-8) natomiast w polu Ogranicznik wybierz Średnik a następnie kliknij w przycisk Załaduj
- Dane zostaną zaimportowane do nowego Arkusza o nazwie Wydawnictwa (bo taką nazwę miał importowany przez nas plik CSV)
- W podobny sposób zaimportuj dane z pliku Gatunki.csv
Teraz przećwiczmy wszystkie 6 typów sprzężeń. To ćwiczenie wykonamy 6 razy wykonując te same czynności, w punkcie 3 za każdym razem będziemy wybierali kolejne sprzężenie. W tym celu należy wykonać następujące czynności:
- Na karcie Dane wybierz polecenie Pobierz dane -> Połącz zapytania -> Scal

- Pojawi się okno dialogowe Scalanie. Jako pierwszą tabelę wybierz Wydawnictwa natomiast jako drugą tabelę wybierz Gatunki. W obu tabelach kliknij w kolumnę id_książki (jest ona kluczem wyszukiwania pomiędzy oboma tabelami)
- Jako rodzaj sprzężenia będziemy wybierali po kolei inny typ sprzężenia. Na początku wybierzmy złączenie Lewe zewnętrzne.

- Kliknij w przycisk OK
- Włączy się edytor Power Query. W kolumnie Gatunki kliknij w przycisk z dwiema strzałeczkami, aby wskazać jakie kolumny mają być wyświetlane z tabeli Gatunki i odznacz kolumnę id_ksiazki (ma być zaznaczona tylko kolumna Gatunek)

- Po prawej stronie w panelu Ustawienia zapytania zmień nazwę zapytania ze Scalanie1 na Lewe zewnętrzne

- Kliknij w przycisk Zamknij i załaduj znajdujący się w lewym górnym rogu okna dialogowego Edytor PowerQuery
- Dane zostaną załadowane do nowego arkusza.
Omówmy teraz wszystkie 6 sprzężeń
Lewe zewnętrzne (wszystkie z pierwszej, pasujące z drugiej)

Zostały tutaj załadowane wszystkie rekordy (wiersze) występujące w Lewej (pierwszej) tabeli (Wydawnictwo). Zwróć uwagę na fakt, że w tabeli Gatunki nie występuje wydawnictwo o id_ksiazki=4 dlatego w kolumnie Gatunek pojawiła się wartość null. Zauważ, że w tabeli Gatunki są id_książki, które nie istnieją w pierwsze tabeli (Wydawnictwo) tj. Poezja i Reportaż. Te rekordy nie zostały załadowane.
Prawe zewnętrzne (Wszystkie z drugiej, pasujące z pierwszej)

Tutaj mamy sytuację odwrotną tj. zostały załadowane wszystkie rekordy (Gatunki) znajdujące się w drugiej (prawej) tabeli.
Pełne zewnętrzne (wszystkie wiersze z obydwu)

Tutaj zostały załadowane wszystkie rekordy z obydwu tabel. Jeśli dane ID występuje tylko w jednej tabeli to część kolumn ma wartość null.
Wewnętrzne (tylko pasujące wiersze)

W tym przypadku zostały załadowane tylko te rekordy, gdzie dane id_ksiazki występuje w obu tabelach.
Lewe anty (wiersze tylko z pierwszej)

W tym przypadku zostały załadowane tylko te rekordy, dla których id_ksiazki istnieje w pierwszej (lewej) tabeli, ale nie istnieje w drugiej (prawej) tabeli.
Prawe anty (wiersze tylko z drugiej)

Tutaj zostały załadowane tylko te rekordy, dla których id_ksiazki istnieje w drugiej tabeli (prawej), a nie istnieje w pierwszej (lewej) tabeli.