Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Power Query w Excelu, Power BI i Fabric
Expression.Error: Klucz pasował do co najmniej dwóch wierszy w tabeli - co to znaczy
Komunikat „Klucz pasował do co najmniej dwóch wierszy w tabeli” to druga strona błędu o kluczu, który nie pasuje do żadnego wiersza. Tym razem Power Query znalazł za dużo: krok miał wybrać jeden wiersz, a pasuje kilka. Trafia na niego każdy, kto wybiera obiekt skoroszytu po samej nazwie albo wyszukuje cenę w słowniku, w którym kod produktu się powtarza. Pokazujemy, skąd się bierze ten błąd i jak go naprawić bez gubienia danych.
Komunikat brzmi Expression.Error: Klucz pasował do co najmniej dwóch wierszy w tabeli., a w angielskiej wersji Expression.Error: The key matched more than one row in the table. Pole Szczegóły ma ten sam układ co przy kluczu bez dopasowania: Key, czyli szukany klucz, i Table, czyli przeszukiwana tabela.
Miejsce, w którym go zobaczysz, zależy od tego, gdzie stoi wybór po kluczu:
Zapytanie, w którym nikt nic nie zmieniał, zgłosi ten błąd, gdy ktoś dopisze do słownika drugi wiersz z istniejącym kodem albo nada tabeli nazwę arkusza, na którym ona leży.
Zapis tabela{[kolumna=wartość]} to w języku M wybór jednego wiersza po kluczu. Power Query oczekuje dokładnie jednego trafienia. Zero trafień daje błąd o kluczu bez dopasowania, dwa lub więcej daje ten komunikat. Silnik nie wybiera za Ciebie pierwszego z pasujących wierszy, bo nie wie, który jest właściwy.
Przy skoroszytach źródłem dwuznaczności jest lista obiektów, którą zwraca Excel.Workbook. Arkusze i tabele są na niej osobnymi wierszami, rozróżnionymi kolumną Kind: Sheet dla arkusza, Table dla tabeli. Jeśli tabela nazywa się tak samo jak arkusz, ta sama nazwa występuje w kolumnie Item dwa razy, a klucz z samą nazwą, na przykład Źródło{[Item="Sprzedaz"]}[Data], pasuje do obu wierszy. Kod zapisany przez Nawigator zawiera też Kind, więc ten przypadek dotyczy zwykle kroków pisanych albo poprawianych ręcznie.
Przy wyszukiwaniu w słowniku przyczyną są duplikaty klucza, czyli ten sam kod produktu w dwóch wierszach. Operator ?, który przy braku dopasowania zwraca null, tu nie pomaga: sprawdziliśmy w Excelu, że przy dwóch trafieniach błąd zostaje. Klucz rozróżnia przy tym wielkość liter, więc „bex-1021” i „BEX-1021” to dla niego dwa różne kody. Duplikaty mogą się ujawnić dopiero wtedy, gdy ujednolicisz zapis kodów wielkimi literami.

= Źródło{[Item="Sprzedaz", Kind="Table"]}[Data]. Wybieraj tabelę, a nie arkusz: dane arkusza mają wiersz nagłówka wśród danych, a arkusz potrafi wciągnąć puste wiersze i notatki obok tabeli.Kliknij ostatni krok zapytania: w kolumnie z wyszukiwaną wartością nie ma już napisów Error. W zapytaniu słownika zaznacz kolumnę klucza, włącz na karcie Widok pole Rozkład kolumn i przełącz profilowanie na cały zestaw danych. Gdy liczba wartości odrębnych i liczba wartości unikatowych są równe liczbie wierszy, żaden kod się nie powtarza.
Nawrotom zapobiegniesz, ustalając z właścicielem słownika, że kod jest unikatowy i każda zmiana ceny nadpisuje istniejący wiersz zamiast dopisywać nowy. Jeśli słownik ma być scalany ze sprzedażą, duplikaty szkodzą także tam, bo każdy powtórzony kod zwielokrotnia pasujące wiersze sprzedaży. Dlatego kontrolę unikatowości klucza rób po każdej większej zmianie słownika.
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...