Scalanie w Power Query działa według warunku „równa się”, uwzględniając duże i małe litery. Czasami szukamy jednak ciągu tekstowego w drugim zapytaniu, który może być ukryty w tekście. Przydałaby się zatem reguła „zawiera”. Nie ma jej domyślnie w Power Query, ale możemy ją stworzyć samodzielnie.
Wyzwanie Power Query
Sprawdź, które numery faktur (ID) pojawiają się w drugim źródle danych, gdzie numer jest połączony tekstowo z innymi numerami faktur.
Krok 1: Przygotuj 2 zapytania w Power Query
Krok 2: Wykonaj scalanie Wewnętrzne
W ten sposób wychwycisz rekordy, które wyszukują się idealnie.
Krok 3: Wykonaj scalanie Lewe anty
Lewe anty znajdzie wszystkie niescalone ID z Kroku 2.
Krok 4: Dodaj kolumnę =1 do Tabeli 2 i Lewe Anty
Kolumna ta stanie się kluczem w operacji Scalanie.
Krok 5: Scal Lewe Anty z Tabelą 2 i rozwiń
Uwaga: takie scalanie może dać bardzo wiele wierszy, np. 1000 w Lewe Anty x 1000 w Tabela 2 = 1 mln rekordów.
Krok 6: Wstaw kolumnę warunkową i pozostaw TRUE
Kolumna warunkowa ma funkcję „zawiera”, interpretowaną przez język M jako Text.Contains.
Mając taką kolumnę ustawiamy filtr = TAK.
Krok 7: Usuń zbędne kolumny i dołącz Wewnętrzne z Lewe Anty
W ten sposób znajdziemy wszystkie kombinacje ID z Tabeli 1 z ID Tabeli 2 wg warunku „zawiera” (np. dla ID = 1).
Pobierz plik Excel z zapytaniem Power Query
Tu możesz pobrać plik Excel Scalanie z regułą „zawiera” w Power Query i prześledzić całe zapytanie.
Znasz inne rozwiązanie dla tego wyzwania?
Podziel się w komentarzu.
Dziękuje za ciekawy materiał 1,5 godziny się nad nim męczyłem 😉 wydaj mi się że można by to zrobić trochę prościej ( no ale mniej się przy tym nauczyć dołączania ) : jakby na starcie obie te tabele miały koklumnę z 1 to moglibyśmy scalić te table po tej jedynce a potem to już ten patent od Pana z kolumną warunkową po której wybieramy „tak” i mamy wynik.
Zgadza się, ale w zadaniu sprawdzamy nie tylko ID 1, ale też 2, 3 i wszystkie inne. Może ktoś wymyśli tu coś ciekawego, bo mi przy dużych tabelach ten mechanizm nie zmieścił się w Excelu 🙂