Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power Query w Excelu, Power BI i Fabric
Scalanie po kilku kolumnach w Power Query - jak wskazać dwa klucze
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.
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.).
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:
01.01.2026 00:00:00 nie jest równa dacie 01.01.2026,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ę.

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
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
Komentarze (0)
Brak komentarzy...