Blog JSystems - uwalniamy wiedzę!

Szukaj

Power Query w Excelu, Power BI i Fabric

Scalanie po kilku kolumnach w Power Query - jak wskazać dwa klucze

W skrócie

  • Raport realizacji budżetu wymaga połączenia sprzedaży z planem po sklepie i miesiącu naraz, a scalenie po jednej kolumnie powiela wiersze albo nie znajduje żadnej pary.
  • Power Query łączy kolumny klucza w pary według kolejności zaznaczenia. Odwrócona kolejność w drugiej tabeli albo data z godziną po jednej stronie dają zero dopasowań.
  • Przy scalaniu po dwóch kolumnach zaznacz je z klawiszem Ctrl w tej samej kolejności w obu tabelach, pilnuj cyfr 1 i 2 przy nagłówkach i zgodnych typów, a przed OK sprawdź licznik dopasowań.

Scalanie po dwóch kolumnach w Power Query przydaje się wszędzie tam, gdzie jedna kolumna nie identyfikuje wiersza: sprzedaż i budżet łączysz po sklepie i miesiącu, kursy walut po walucie i dacie, stany magazynowe po magazynie i indeksie. W lekcji o grupowaniu i przestawianiu łączymy w ten sposób sprzedaż Nordvelli z budżetem. Pokazujemy, jak wskazać klucz złożony w oknie Scalanie, jakie błędy dają puste wyniki i jak sprawdzić, że scalenie zadziałało. Każdy wariant sprawdziliśmy w polskim Excelu.

Jak to wygląda w praktyce

Problem ma dwie odmiany. W pierwszej scalasz tylko po sklepie i wierszy przybywa. W naszym teście cztery wiersze sprzedaży (dwa sklepy po dwa miesiące) po scaleniu z budżetem wyłącznie po kolumnie Sklep zamieniły się w osiem, bo każdy miesiąc sprzedaży dostał budżety obu miesięcy. W drugiej odmianie wskazujesz obie kolumny, a okno Scalanie pokazuje zero dopasowań, na przykład „Zaznaczenie jest zgodne z 0 z 4 wierszy z pierwszej tabeli.” (ang. The selection matches 0 of 4 rows from the first table.), i po rozwinięciu kolumna Budżet ma same wartości null.

Gdy liczba zaznaczonych kolumn po obu stronach jest różna, okno wyświetla wskazówkę „Aby kontynuować, wybierz taką samą liczbę kolumn w obu widocznych tabelach.” (ang. Select the same number of columns from both visible tables to continue.). Ten sam błąd w ręcznie pisanym kodzie M kończy się komunikatem Expression.Error: W operacji tworzenia sprzężenia jest wymagana taka sama liczba kolumn, których typy muszą być takie same, dla każdego klucza. (ang. A join operation requires the same number and type of columns for each key.).

Dlaczego tak się dzieje

Przy kluczu złożonym Power Query łączy kolumny w pary według kolejności zaznaczenia: pierwszą zaznaczoną w górnej tabeli z pierwszą zaznaczoną w dolnej, drugą z drugą. Cyfry 1 i 2 przy nagłówkach pokazują tę kolejność, a w pasku formuły widać ją jako dwie listy kolumn:

Table.NestedJoin(Sprzedaz_wg_sklepu_i_miesiaca, {"Sklep", "Początek miesiąca"},
    tBudzet, {"Sklep", "Początek miesiąca"}, "tBudzet", JoinKind.LeftOuter)

Wiersz znajduje parę tylko wtedy, gdy obie wartości są równe jednocześnie. W teście to samo scalenie dało:

  • 4 z 4 dopasowań i poprawne kwoty budżetu przy kolejności Sklep, Początek miesiąca po obu stronach,
  • 0 z 4 przy odwróconej kolejności w tabeli budżetu, bo nazwa sklepu była porównywana z datą,
  • 0 z 4, gdy kolumna budżetu miała typ Data/godzina: wartość 01.01.2026 00:00:00 nie jest równa dacie 01.01.2026,
  • 0 z 4, gdy miesiąc w budżecie był tekstem 2026-01-01.

Data z godziną pojawia się bez Twojej wiedzy. Funkcja Date.StartOfMonth wywołana w teście na wartości 15.01.2026 10:30 zwróciła 01.01.2026 00:00:00, czyli Data/godzina, a nie Data. Jeśli kolumna daty w sprzedaży ma typ Data/godzina, wyliczony z niej początek miesiąca też będzie miał godzinę.

Jak to rozwiązać krok po kroku

  1. Ujednolić typy przed scaleniem. W obu zapytaniach kliknij ikonę typu w nagłówku kolumn klucza i ustaw ten sam typ: dla sklepu Tekst, dla miesiąca Data. W teście zmiana typu kolumny budżetu z Data/godzina na Data przywróciła 4 z 4 dopasowań. Nazwy miesięcy zamień wcześniej na datę, tak jak w lekcji o anulowaniu przestawienia budżetu.
  2. Otwórz okno scalania. Zaznacz zapytanie sprzedaży (u nas Sprzedaz_wg_sklepu_i_miesiaca), na karcie Strona główna kliknij Scal zapytania i z listy w środkowej części okna wybierz tabelę budżetu tBudzet.
  3. Zaznacz klucz w górnej tabeli. Kliknij nagłówek Sklep, a potem z wciśniętym klawiszem Ctrl kliknij nagłówek Początek miesiąca. Przy nagłówkach pojawią się małe cyfry 1 i 2.
  4. Zaznacz te same kolumny w tej samej kolejności w dolnej tabeli. Najpierw Sklep, potem z Ctrl kolumnę Początek miesiąca. Liczy się kolejność klikania, a nie położenie kolumn: w naszym budżecie Początek miesiąca stoi na końcu tabeli i dostaje cyfrę 2. Kolumna z cyfrą 1 na górze musi odpowiadać kolumnie z cyfrą 1 na dole.
  5. Sprawdź licznik i rodzaj sprzężenia. Komunikat pod tabelami powinien pokazać pełną zgodność, w kursie „Zaznaczenie jest zgodne z 60 z 60 wierszy z pierwszej tabeli.”. Zostaw Lewe zewnętrzne (wszystkie z pierwszej, pasujące z drugiej) i kliknij OK. Zero albo niewiele dopasowań oznacza odwróconą kolejność albo różne typy, więc wróć do pierwszego kroku.
  6. Rozwiń tylko potrzebną kolumnę. Kliknij ikonę rozwijania w nagłówku tBudzet, zostaw zaznaczoną kolumnę Budżet i odznacz Użyj oryginalnej nazwy kolumny jako prefiksu. Kolumn klucza nie rozwijaj, bo masz je już w tabeli sprzedaży.
Okno Scalanie w Power Query z kluczem z dwóch kolumn Sklep i Początek miesiąca oznaczonych cyframi 1 i 2, komunikat zgodności 60 z 60 wierszy
Scalanie po kluczu złożonym. Cyfry 1 i 2 przy nagłówkach łączą Sklep ze Sklep i Początek miesiąca z Początek miesiąca, choć w tBudzet ta kolumna stoi na końcu. Komunikat: Zaznaczenie jest zgodne z 60 z 60 wierszy z pierwszej tabeli.

Jak sprawdzić, że zadziałało

Po rozwinięciu kolumna Budżet nie powinna mieć wartości null, a liczba wierszy powinna być taka sama jak przed scaleniem. W kursie po scaleniu zestawienia z budżetem zostało 60 wierszy, czyli 15 sklepów razy 4 miesiące. Więcej wierszy oznacza dubel w budżecie (ten sam sklep i miesiąc dwa razy), a niepełna zgodność w liczniku oznacza różnicę w kluczu. Kolejność kluczy sprawdzisz też w pasku formuły: obie listy kolumn w Table.NestedJoin muszą wymieniać odpowiadające sobie kolumny na tych samych pozycjach. Nawrotom zapobiegnie krok zmiany typu kolumn klucza tuż przed scaleniem, w obu zapytaniach, bo nowy plik budżetu może przyjść z datą zapisaną inaczej.

Wróć do listy: 88 najczęstszych pytań i problemów związanych z Power Query

Baner szkolenia Microsoft Excel - Power Query w JSystems z edytorem Power Query na ekranie laptopa

Szkolenie Microsoft Excel - Power Query --> Dwa dni warsztatów z Excela: pobieranie danych z plików, folderów, SharePointa i baz SQL, ich czyszczenie i łączenie w Power Query, praca w języku M, a na koniec model danych i oparta na nim tabela przestawna. Prowadzi Sebastian Stasiak.

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Czy kolumny klucza muszą mieć takie same nazwy w obu tabelach?
Nie. Power Query łączy kolumny w pary według kolejności zaznaczenia, a nie według nazw, więc kolumna Sklep może tworzyć parę z kolumną o innej nazwie. Muszą się zgadzać typy danych i kolejność zaznaczenia po obu stronach.
Ile kolumn może mieć klucz scalania?
Więcej niż dwie, a zasada się nie zmienia: zaznaczasz je z klawiszem Ctrl w tej samej kolejności w obu tabelach, a cyfry przy nagłówkach pokazują pary. Liczba kolumn po obu stronach musi być równa, inaczej okno Scalanie prosi o wybranie takiej samej liczby kolumn.
Dlaczego scalenie po dacie nie działa, choć daty wyglądają tak samo?
Sprawdź typy kolumn. Po jednej stronie może być Data, a po drugiej Data/godzina z godziną 00:00:00, którą w podglądzie łatwo przeoczyć. W naszym teście taka para dała zero dopasowań, a ustawienie typu Data po obu stronach przywróciło wszystkie.
Czy zamiast dwóch kolumn mogę scalić po jednej kolumnie łączącej obie wartości?
Tak, jeśli w obu zapytaniach dodasz taką samą kolumnę pomocniczą, na przykład sklep i datę połączone separatorem, z identycznym formatem daty. Scalanie po dwóch kolumnach daje ten sam wynik bez kolumn pomocniczych i bez ryzyka, że daty zamienione na tekst będą zapisane różnie.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...