Odwołanie czy duplikat zapytania - zmiana w jednym zapytaniu psuje drugie
Udostępnij na:
Spis treści
Power Query w Excelu, Power BI i Fabric
Odwołanie czy duplikat zapytania - zmiana w jednym zapytaniu psuje drugie
W skrócie
Odwołanie a duplikat w Power Query to częsta przyczyna kłopotów: zmiana w jednym zapytaniu psuje drugie albo poprawka nie trafia tam, gdzie powinna.
Odwołanie zaczyna się od wyniku zapytania bazowego, więc przejmuje każdą zmianę i każdy błąd. Duplikat to niezależna kopia wszystkich kroków z własnym krokiem Źródło, do której poprawki w oryginale nie docierają.
Gdy kilka zapytań korzysta z tych samych oczyszczonych danych, używaj odwołania i przed zmianą zapytania bazowego sprawdzaj Zależności zapytań. Duplikat wybieraj, gdy kopia ma się zmieniać niezależnie od oryginału.
Odwołanie a duplikat w Power Query to dwie sąsiednie pozycje w menu zapytania, które dają przeciwne efekty. Po jednej zmiana w zapytaniu bazowym psuje zapytanie zależne, po drugiej poprawka w oryginale nie dociera do kopii. Pokazujemy, jak rozpoznać, którą sytuację masz przed sobą, jak naprawić zepsute zapytanie i kiedy wybrać każdą z opcji.
Jak to wygląda w praktyce
Dwa przeciwne objawy mają to samo źródło.
Zmiana w jednym zapytaniu psuje drugie. W zapytaniu Sprzedaz_miesieczna zmieniasz nazwę kolumny Sklep na Nazwa sklepu. Zapytanie Sprzedaz_wg_sklepu_i_miesiaca, utworzone przez Odwołanie, kończy się błędem Expression.Error z komunikatem: Nie można znaleźć kolumny „Sklep” w tabeli. (ang. The column 'Sklep' of the table wasn't found.).
Błąd z zapytania bazowego pojawia się dalej. Wartość, której nie dało się zamienić na liczbę, daje w zapytaniu zależnym błąd DataFormat.Error: „Nie możemy przekonwertować na typ Number.” (ang. „We couldn't convert to Number.”) w sumie tego sklepu.
Poprawka nie dociera do kopii. Poprawiasz czyszczenie w zapytaniu bazowym, na przykład dodajesz usuwanie duplikatów, a zestawienie zbudowane przez Duplikuj nadal liczy stare wiersze.
Dlaczego tak się dzieje
Według dokumentacji Microsoft Odwołanie tworzy nowe zapytanie, które korzysta z kroków poprzedniego bez ich kopiowania, a każda zmiana w oryginale przechodzi do zapytania z odwołaniem. Nowe zapytanie ma jeden krok Źródło z formułą = Sprzedaz_miesieczna. Wszystko, co dzieje się w zapytaniu bazowym, także zmiana nazwy kolumny i błąd w kroku, dociera do zapytań zależnych.
Duplikuj tworzy kopię zapytania: osobny zestaw tych samych kroków, łącznie z krokiem Źródło. Od chwili skopiowania oba zapytania żyją niezależnie, więc poprawka w jednym nie trafia do drugiego, a każde czyta źródło samo.
Odwołanie nie działa jednak jak pamięć podręczna. W lekcji o wydajności zwracamy uwagę, że kilka zapytań odwołujących się do tego samego ciężkiego źródła może je wczytywać osobno. Odwołanie porządkuje logikę i poprawki, ale nie gwarantuje jednego odczytu źródła.
Menu kontekstowe zapytania. Duplikuj kopiuje wszystkie kroki, Odwołanie tworzy nowe zapytanie, którego źródłem jest wynik bieżącego.
Jak to rozwiązać krok po kroku
Sprawdź, jak powstało zapytanie. Kliknij zapytanie zależne i pierwszy krok na liście Zastosowane kroki. Formuła = Sprzedaz_miesieczna oznacza odwołanie. Pełna kopia kroków ze źródłem, na przykład z Folder.Files, oznacza duplikat.
Zobacz mapę zależności. Na karcie Widok kliknij Zależności zapytań. Kliknięcie zapytania bazowego podświetla zapytania, które z niego korzystają. Rób to przed każdą zmianą nazwy albo typu kolumny w zapytaniu bazowym.
Napraw zepsute odwołanie. Otwórz zapytanie zależne, kliknij krok z błędem i w pasku formuły zamień starą nazwę kolumny na nową, na przykład {"Sklep"} na {"Nazwa sklepu"}. Jeśli zmiana nazwy w zapytaniu bazowym nie była potrzebna, cofnij ją tam, a zapytania zależne zadziałają bez poprawek.
Nazwy widoczne w raporcie zmieniaj na końcu łańcucha. Zmianę nazwy kolumny na potrzeby raportu rób w zapytaniu końcowym, a nie w bazowym, z którego korzysta kilka innych. Wtedy zmiana dotyczy jednego zapytania.
Zamień duplikat na odwołanie, gdy kopia ma iść za oryginałem. Kliknij prawym przyciskiem zapytanie bazowe i wybierz Odwołanie. W nowym zapytaniu odtwórz tylko kroki, które odróżniały duplikat od oryginału, na przykład grupowanie, a stary duplikat usuń. Kroki skopiujesz z Edytora zaawansowanego duplikatu.
Zostaw duplikat, gdy kopia ma żyć osobno. Duplikat jest właściwy, gdy chcesz zmieniać kopię bez ryzyka dla oryginału, na przykład przetestować inne czyszczenie albo przygotować zapytanie dla innego źródła.
Jak sprawdzić, że zadziałało
Po zmianie odśwież zapytania i przejrzyj każde podświetlone w Zależnościach zapytań: żadne nie może kończyć się błędem. W naszym teście w Excelu zmiana nazwy kolumny Sklep w zapytaniu bazowym dała w zapytaniu grupującym błąd brakującej kolumny. Błąd konwersji w jednej komórce zapytania bazowego zepsuł tylko sumę jednego sklepu: Nordvella Gdańsk dostał 100, a Nordvella Łódź błąd DataFormat.Error.
Żeby problem nie wracał, po każdej większej zmianie porównaj liczbę wierszy i sumy kontrolne z poprzednim wynikiem. Zapytania grupuj w foldery poleceniem Przenieś do grupy, na przykład źródła, słowniki i wyniki, żeby od razu było widać, które zapytania są bazowe.
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.
Co lepiej wybrać w Power Query: odwołanie czy duplikat?
Zależy od celu. Odwołanie wybierz, gdy kilka zapytań korzysta z tych samych oczyszczonych danych i poprawka w zapytaniu bazowym ma trafić do wszystkich. Duplikat wybierz, gdy kopia ma się zmieniać niezależnie od oryginału.
Czy odwołanie sprawia, że źródło jest czytane tylko raz?
Nie ma takiej gwarancji. Kilka zapytań odwołujących się do tego samego ciężkiego źródła może je wczytywać osobno. Odwołanie porządkuje logikę i poprawki, a przy dużych źródłach pomagają filtry na początku zapytania i wyłączenie ładowania zapytań pośrednich.
Jak sprawdzić, które zapytania zależą od zmienianego zapytania?
Na karcie Widok kliknij Zależności zapytań. Okno rysuje mapę od źródeł przez zapytania pomocnicze do zapytań końcowych, a kliknięcie zapytania podświetla te, które z niego korzystają.
Czy błąd w zapytaniu bazowym zawsze psuje całe zapytanie zależne?
Nie zawsze. Błąd całego kroku, na przykład brakująca kolumna, zatrzymuje zapytania zależne. Błąd pojedynczej komórki pojawia się tylko tam, gdzie ta wartość jest użyta: w naszym teście zepsuł sumę jednego sklepu, a pozostałe sumy policzyły się poprawnie.
Komentarze (0)
Brak komentarzy...