Przykłady składania zapytań
Ten artykuł zawiera przykładowe scenariusze dla każdego z trzech możliwych wyników składania zapytań. Zawiera również kilka sugestii dotyczących sposobu, w jaki najlepiej wykorzystać mechanizm składania zapytań, oraz wpływ, jaki może mieć w zapytaniach.
Scenariusz
Wyobraź sobie scenariusz, w którym korzystając z bazy danych Wide World Importers dla bazy danych SQL usługi Azure Synapse Analytics, należy utworzyć zapytanie w dodatku Power Query, które łączy się z fact_Sale
tabelą i pobiera ostatnią 10 sprzedaży tylko z następującymi polami:
- Klucz sprzedaży
- Klucz klienta
- Klucz daty faktury
- opis
- Ilość
Uwaga
W celach demonstracyjnych w tym artykule użyto bazy danych opisanej w samouczku dotyczącym ładowania bazy danych Wide World Importers do usługi Azure Synapse Analytics. Główną różnicą w tym artykule jest fact_Sale
tabela zawierająca tylko dane dla roku 2000, w sumie 3644 356 wierszy.
Chociaż wyniki mogą nie być dokładnie zgodne z wynikami uzyskanymi w ramach samouczka z dokumentacji usługi Azure Synapse Analytics, celem tego artykułu jest przedstawienie podstawowych pojęć i wpływu składania zapytań na zapytania.
W tym artykule przedstawiono trzy sposoby osiągnięcia tych samych danych wyjściowych z różnymi poziomami składania zapytań:
- Brak składania zapytań
- Częściowe składanie zapytań
- Składanie pełnych zapytań
Brak przykładu składania zapytań
Ważne
Zapytania, które opierają się wyłącznie na źródłach danych bez struktury lub które nie mają aparatu obliczeniowego, takiego jak pliki CSV lub Excel, nie mają możliwości składania zapytań. Oznacza to, że dodatek Power Query ocenia wszystkie wymagane przekształcenia danych przy użyciu aparatu Power Query.
Po nawiązaniu połączenia z bazą danych i przejściu fact_Sale
do tabeli wybierz przekształcenie Zachowaj dolne wiersze znajdujące się w grupie Zmniejsz wiersze na karcie Narzędzia główne.
Po wybraniu tej transformacji zostanie wyświetlone nowe okno dialogowe. W tym nowym oknie dialogowym możesz wprowadzić liczbę wierszy, które chcesz zachować. W tym przypadku wprowadź wartość 10, a następnie wybierz przycisk OK.
Napiwek
W tym przypadku wykonanie tej operacji daje wynik ostatniej dziesięciu sprzedaży. W większości scenariuszy zalecamy podanie bardziej jawnej logiki definiującej, które wiersze są uznawane za ostatnie, stosując operację sortowania w tabeli.
Następnie wybierz przekształcenie Wybierz kolumny znalezione w grupie Zarządzaj kolumnami na karcie Narzędzia główne . Następnie możesz wybrać kolumny, które chcesz zachować z tabeli, i usunąć resztę.
Na koniec w oknie dialogowym Wybieranie kolumn wybierz Sale Key
kolumny , Customer Key
, Invoice Date Key
, Description
i Quantity
, a następnie wybierz przycisk OK.
Poniższy przykładowy kod to pełny skrypt języka M dla utworzonego zapytania:
let
Source = Sql.Database(ServerName, DatabaseName),
Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
#"Kept bottom rows" = Table.LastN(Navigation, 10),
#"Choose columns" = Table.SelectColumns(#"Kept bottom rows", {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"})
in
#"Choose columns""
Brak składania zapytań: omówienie oceny zapytania
W obszarze Zastosowane kroki w edytorze Power Query zauważysz, że wskaźniki składania zapytań dla zachowanych dolnych wierszy i Wybierz kolumny są oznaczone jako kroki, które zostaną ocenione poza źródłem danych lub, innymi słowy, przez aparat Power Query.
Możesz kliknąć prawym przyciskiem myszy ostatni krok zapytania, jedną o nazwie Wybierz kolumny i wybrać opcję, która odczytuje widok planu zapytania. Celem planu zapytania jest udostępnienie szczegółowego widoku sposobu uruchamiania zapytania. Aby dowiedzieć się więcej na temat tej funkcji, przejdź do tematu Plan zapytań.
Każde pole na poprzedniej ilustracji jest nazywane węzłem. Węzeł reprezentuje podział operacji w celu spełnienia tego zapytania. Węzły reprezentujące źródła danych, takie jak program SQL Server w powyższym przykładzie Value.NativeQuery
i węzeł, reprezentują część zapytania odciążonego do źródła danych. Pozostałe węzły, w tym przypadku Table.LastN
i Table.SelectColumns
wyróżnione w prostokątze na poprzednim obrazie, są oceniane przez aparat Power Query. Te dwa węzły reprezentują dodane dwa przekształcenia: Przechowywane dolne wiersze i Wybierz kolumny. Pozostałe węzły reprezentują operacje wykonywane na poziomie źródła danych.
Aby wyświetlić dokładne żądanie wysłane do źródła danych, wybierz pozycję Wyświetl szczegóły w węźle Value.NativeQuery
.
To żądanie źródła danych jest w języku natywnym źródła danych. W tym przypadku język ten to SQL, a ta instrukcja reprezentuje żądanie dla wszystkich wierszy i pól z fact_Sale
tabeli.
Skonsultowanie się z tym żądaniem źródła danych może pomóc lepiej zrozumieć historię, którą plan zapytania próbuje przekazać:
Sql.Database
: ten węzeł reprezentuje dostęp do źródła danych. Połączenie do bazy danych i wysyła żądania metadanych, aby zrozumieć jego możliwości.Value.NativeQuery
: reprezentuje żądanie wygenerowane przez dodatek Power Query w celu spełnienia zapytania. Dodatek Power Query przesyła żądania danych w natywnej instrukcji SQL do źródła danych. W tym przypadku reprezentuje wszystkie rekordy i pola (kolumny) zfact_Sale
tabeli. W tym scenariuszu ten przypadek jest niepożądany, ponieważ tabela zawiera miliony wierszy, a zainteresowanie jest tylko w ciągu ostatnich 10.Table.LastN
: Gdy dodatek Power Query odbiera wszystkie rekordy zfact_Sale
tabeli, używa aparatu Power Query do filtrowania tabeli i przechowywania tylko ostatnich 10 wierszy.Table.SelectColumns
: Dodatek Power Query użyje danych wyjściowych węzłaTable.LastN
i zastosuje nową transformację o nazwieTable.SelectColumns
, która wybiera określone kolumny, które chcesz zachować z tabeli.
Aby przeprowadzić ocenę, to zapytanie musiało pobrać wszystkie wiersze i pola z fact_Sale
tabeli. To zapytanie trwało średnio 6 minut i 1 sekundę do przetworzenia w standardowym wystąpieniu przepływów danych usługi Power BI (co odpowiada ocenie i ładowaniu danych do przepływów danych).
Przykład składania zapytań częściowych
Po nawiązaniu połączenia z bazą danych i przejściu fact_Sale
do tabeli zacznij od wybrania kolumn, które chcesz zachować z tabeli. Wybierz pozycję Wybierz przekształcenie kolumn znalezione w grupie Zarządzaj kolumnami na karcie Narzędzia główne. Ta transformacja pomaga jawnie wybrać kolumny, które chcesz zachować z tabeli i usunąć resztę.
W oknie dialogowym Wybieranie kolumn wybierz Sale Key
kolumny , , Invoice Date Key
Customer Key
, Description
i Quantity
, a następnie wybierz przycisk OK.
Teraz utworzysz logikę, która posortuje tabelę tak, aby miała ostatnią sprzedaż w dolnej części tabeli. Wybierz kolumnę Sale Key
, która jest kluczem podstawowym i sekwencją przyrostowej lub indeksem tabeli. Posortuj tabelę przy użyciu tylko tego pola w kolejności rosnącej z menu kontekstowego dla kolumny.
Następnie wybierz menu kontekstowe tabeli i wybierz przekształcenie Zachowaj dolne wiersze .
W obszarze Zachowaj dolne wiersze wprowadź wartość 10, a następnie wybierz przycisk OK.
Poniższy przykładowy kod to pełny skrypt języka M dla utworzonego zapytania:
let
Source = Sql.Database(ServerName, DatabaseName),
Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
#"Choose columns" = Table.SelectColumns(Navigation, {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"}),
#"Sorted rows" = Table.Sort(#"Choose columns", {{"Sale Key", Order.Ascending}}),
#"Kept bottom rows" = Table.LastN(#"Sorted rows", 10)
in
#"Kept bottom rows"
Przykład składania zapytań częściowych: opis oceny zapytania
Podczas sprawdzania zastosowanych kroków widać, że wskaźniki składania zapytań pokazują, że ostatnia dodana transformacja , jest oznaczona jako krok, Kept bottom rows
który zostanie oceniony poza źródłem danych lub, innymi słowy, przez aparat Power Query.
Możesz kliknąć prawym przyciskiem myszy ostatni krok zapytania, jeden o nazwie Kept bottom rows
i wybrać opcję Plan zapytania, aby lepiej zrozumieć, jak można ocenić zapytanie.
Każde pole na poprzedniej ilustracji jest nazywane węzłem. Węzeł reprezentuje każdy proces, który musi nastąpić (od lewej do prawej) w celu oceny zapytania. Niektóre z tych węzłów można ocenić w źródle danych, podczas gdy inne, takie jak węzeł dla Table.LastN
, reprezentowane przez krok Przechowywane dolne wiersze , są oceniane przy użyciu aparatu Power Query.
Aby wyświetlić dokładne żądanie wysłane do źródła danych, wybierz pozycję Wyświetl szczegóły w węźle Value.NativeQuery
.
To żądanie jest w języku natywnym źródła danych. W tym przypadku język ten to SQL, a ta instrukcja reprezentuje żądanie dla wszystkich wierszy, z tylko żądanymi polami z fact_Sale
tabeli uporządkowanej Sale Key
według pola.
Skonsultowanie się z tym żądaniem źródła danych może pomóc lepiej zrozumieć historię, którą próbuje przekazać pełny plan zapytania. Kolejność węzłów to sekwencyjny proces, który rozpoczyna się od żądania danych ze źródła danych:
Sql.Database
: Połączenie do bazy danych i wysyła żądania metadanych, aby zrozumieć jego możliwości.Value.NativeQuery
: reprezentuje żądanie wygenerowane przez dodatek Power Query w celu spełnienia zapytania. Dodatek Power Query przesyła żądania danych w natywnej instrukcji SQL do źródła danych. W tym przypadku reprezentuje wszystkie rekordy, z tylko żądanymi polami zfact_Sale
tabeli w bazie danych posortowane w kolejności rosnącejSales Key
według pola.Table.LastN
: Gdy dodatek Power Query odbiera wszystkie rekordy zfact_Sale
tabeli, używa aparatu Power Query do filtrowania tabeli i przechowywania tylko ostatnich 10 wierszy.
W celu oceny to zapytanie musiało pobrać wszystkie wiersze i tylko wymagane pola z fact_Sale
tabeli. Przetwarzanie danych w standardowym wystąpieniu przepływów danych usługi Power BI trwa średnio 3 minuty i 4 sekundy (co odpowiada ocenie i ładowaniu danych do przepływów danych).
Przykład składania pełnych zapytań
Po nawiązaniu połączenia z bazą danych i przejściu fact_Sale
do tabeli zacznij od wybrania kolumn, które chcesz zachować z tabeli. Wybierz pozycję Wybierz przekształcenie kolumn znalezione w grupie Zarządzaj kolumnami na karcie Narzędzia główne. Ta transformacja pomaga jawnie wybrać kolumny, które chcesz zachować z tabeli i usunąć resztę.
W obszarze Wybierz kolumny wybierz Sale Key
kolumny , , Customer Key
Invoice Date Key
, Description
i Quantity
, a następnie wybierz przycisk OK.
Teraz utworzysz logikę, która posortuje tabelę tak, aby miała ostatnią sprzedaż w górnej części tabeli. Wybierz kolumnę Sale Key
, która jest kluczem podstawowym i sekwencją przyrostowej lub indeksem tabeli. Posortuj tabelę tylko przy użyciu tego pola w kolejności malejącej z menu kontekstowego dla kolumny.
Następnie wybierz menu kontekstowe tabeli i wybierz przekształcenie Zachowaj pierwsze wiersze .
W obszarze Zachowaj pierwsze wiersze wprowadź wartość 10, a następnie wybierz przycisk OK.
Poniższy przykładowy kod to pełny skrypt języka M dla utworzonego zapytania:
let
Source = Sql.Database(ServerName, DatabaseName),
Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
#"Choose columns" = Table.SelectColumns(Navigation, {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"}),
#"Sorted rows" = Table.Sort(#"Choose columns", {{"Sale Key", Order.Descending}}),
#"Kept top rows" = Table.FirstN(#"Sorted rows", 10)
in
#"Kept top rows"
Przykład składania pełnych zapytań: opis oceny zapytania
Podczas sprawdzania zastosowanych kroków zobaczysz, że wskaźniki składania zapytań pokazują, że dodane przekształcenia, Wybieranie kolumn, Posortowane wiersze i Przechowywane pierwsze wiersze są oznaczone jako kroki, które zostaną ocenione w źródle danych.
Możesz kliknąć prawym przyciskiem myszy ostatni krok zapytania, jeden o nazwie Przechowywane pierwsze wiersze i wybrać opcję odczytującą plan zapytania.
To żądanie jest w języku natywnym źródła danych. W tym przypadku język ten to SQL, a ta instrukcja reprezentuje żądanie dla wszystkich wierszy i pól z fact_Sale
tabeli.
Skonsultowanie się z tym zapytaniem źródła danych może pomóc lepiej zrozumieć historię, którą próbuje przekazać pełny plan zapytania:
Sql.Database
: Połączenie do bazy danych i wysyła żądania metadanych, aby zrozumieć jego możliwości.Value.NativeQuery
: reprezentuje żądanie wygenerowane przez dodatek Power Query w celu spełnienia zapytania. Dodatek Power Query przesyła żądania danych w natywnej instrukcji SQL do źródła danych. W tym przypadku reprezentuje żądanie tylko 10 pierwszych rekordówfact_Sale
tabeli, z tylko wymaganymi polami po posortowaniu w kolejności malejącej przy użyciuSale Key
pola.
Uwaga
Chociaż nie ma klauzuli , która może służyć do wybierania dolnych wierszy tabeli w języku T-SQL, istnieje klauzula TOP, która pobiera pierwsze wiersze tabeli.
Na potrzeby oceny to zapytanie pobiera tylko 10 wierszy z tylko polami żądanymi z fact_Sale
tabeli. To zapytanie trwało średnio 31 sekund, aby było przetwarzane w standardowym wystąpieniu przepływów danych usługi Power BI (co odpowiada ocenie i ładowaniu danych do przepływów danych).
Porównanie wydajności
Aby lepiej zrozumieć wpływ składania zapytań w tych zapytaniach, możesz odświeżyć zapytania, zarejestrować czas potrzebny do pełnego odświeżenia poszczególnych zapytań i porównać je. Dla uproszczenia w tym artykule przedstawiono średni czas odświeżania przechwycony przy użyciu mechanika odświeżania przepływów danych usługi Power BI podczas nawiązywania połączenia z dedykowanym środowiskiem usługi Azure Synapse Analytics za pomocą dw2000c jako poziomu usługi.
Czas odświeżania dla każdego zapytania był następujący:
Przykład | Etykieta | Czas w sekundach |
---|---|---|
Brak składania zapytań | Brak | 361 |
Częściowe składanie zapytań | Częściowe | 184 |
Składanie pełnych zapytań | Pełny | 31 |
Często zdarza się, że zapytanie, które w pełni składa się z powrotem do źródła danych, przewyższa podobne zapytania, które nie całkowicie składają się z powrotem do źródła danych. Może być wiele powodów, dla których tak jest. Przyczyny te wahają się od złożoności przekształceń, które wykonuje zapytanie, po optymalizacje zapytań zaimplementowane w źródle danych, takie jak indeksy i dedykowane obliczenia oraz zasoby sieciowe. Mimo to istnieją dwa kluczowe procesy, których składanie zapytań próbuje użyć, co minimalizuje wpływ na oba te procesy w dodatku Power Query:
- Dane przesyłane
- Przekształcenia wykonywane przez aparat Power Query
W poniższych sekcjach opisano wpływ tych dwóch procesów we wcześniej wymienionych zapytaniach.
Dane przesyłane
Po wykonaniu zapytania próbuje pobrać dane ze źródła danych jako jeden z pierwszych kroków. Jakie dane są pobierane ze źródła danych, są definiowane przez mechanizm składania zapytań. Ten mechanizm identyfikuje kroki zapytania, które można odciążyć do źródła danych.
W poniższej tabeli wymieniono liczbę wierszy żądanych z fact_Sale
tabeli bazy danych. Tabela zawiera również krótki opis instrukcji SQL wysyłanej do żądania takich danych ze źródła danych.
Przykład | Etykieta | Żądane wiersze | opis |
---|---|---|---|
Brak składania zapytań | Brak | 3644356 | Żądanie wszystkich pól i wszystkich rekordów z fact_Sale tabeli |
Częściowe składanie zapytań | Częściowe | 3644356 | Żądanie wszystkich rekordów, ale tylko wymagane pola z fact_Sale tabeli po posortowane według Sale Key pola |
Składanie pełnych zapytań | Pełny | 10 | Żądanie tylko wymaganych pól i 10 pierwszych rekordów fact_Sale tabeli po posortowaniu w kolejności malejącej według Sale Key pola |
Podczas żądania danych ze źródła danych źródło danych musi obliczyć wyniki żądania, a następnie wysłać dane do osoby żądającej. Chociaż już wspomniano o zasobach obliczeniowych, zasoby sieciowe przenoszenia danych ze źródła danych do dodatku Power Query, a następnie mają możliwość efektywnego odbierania danych przez dodatek Power Query i przygotowania ich do przekształceń, które będą wykonywane lokalnie, mogą zająć trochę czasu w zależności od rozmiaru danych.
W przypadku prezentowanych przykładów dodatek Power Query musiał zażądać ponad 3,6 miliona wierszy ze źródła danych, aby nie składać zapytań i częściowych przykładów składania zapytań. W przypadku pełnego przykładu składania zapytań zażądano tylko 10 wierszy. W żądanych polach przykład składania zapytań nie zażądał wszystkich dostępnych pól z tabeli. Zarówno częściowe składanie zapytań, jak i pełne składanie zapytań przykłady przesłały tylko żądanie dotyczące dokładnie wymaganych pól.
Uwaga
Zalecamy zaimplementowanie rozwiązań odświeżania przyrostowego, które wykorzystują składanie zapytań dla zapytań lub tabel z dużą ilością danych. Różne integracje produktów dodatku Power Query implementują limity czasu w celu zakończenia długotrwałych zapytań. Niektóre źródła danych implementują również limity czasu w długotrwałych sesjach, próbując wykonywać kosztowne zapytania na swoich serwerach. Więcej informacji: Używanie odświeżania przyrostowego z przepływami danych i odświeżaniem przyrostowym dla modeli semantycznych
Przekształcenia wykonywane przez aparat Power Query
W tym artykule pokazano, jak można użyć planu zapytania, aby lepiej zrozumieć, jak można ocenić zapytanie. Wewnątrz planu zapytania można zobaczyć dokładne węzły operacji przekształcania, które będą wykonywane przez aparat Power Query.
W poniższej tabeli przedstawiono węzły z planów zapytań poprzednich zapytań, które zostałyby ocenione przez aparat Power Query.
Przykład | Etykieta | Węzły przekształcania aparatu Power Query |
---|---|---|
Brak składania zapytań | Brak | Table.LastN , Table.SelectColumns |
Częściowe składanie zapytań | Częściowe | Table.LastN |
Składanie pełnych zapytań | Pełny | — |
W przykładach przedstawionych w tym artykule pełny przykład składania zapytań nie wymaga żadnych przekształceń w a aparatu Power Query, ponieważ wymagana tabela wyjściowa pochodzi bezpośrednio ze źródła danych. Z kolei pozostałe dwa zapytania wymagały wykonania pewnych obliczeń w aucie Power Query. Ze względu na ilość danych, które muszą być przetwarzane przez te dwa zapytania, proces dla tych przykładów zajmuje więcej czasu niż pełny przykład składania zapytań.
Przekształcenia można pogrupować w następujące kategorie:
Typ operatora | opis |
---|---|
Zdalnie | Operatory, które są węzłami źródła danych. Ocena tych operatorów odbywa się poza programem Power Query. |
Przesyłanie strumieniowe | Operatory są operatorami przekazywania. Na przykład Table.SelectRows przy użyciu prostego filtru zwykle można filtrować wyniki w miarę ich przekazywania przez operator i nie trzeba zbierać wszystkich wierszy przed przeniesieniem danych. Table.SelectColumns i Table.ReorderColumns są innymi przykładami tego rodzaju operatorów. |
Pełne skanowanie | Operatory, które muszą zebrać wszystkie wiersze, zanim dane będą mogły przejść do następnego operatora w łańcuchu. Na przykład aby posortować dane, dodatek Power Query musi zebrać wszystkie dane. Inne przykłady operatorów pełnego skanowania to Table.Group , Table.NestedJoin i Table.Pivot . |
Napiwek
Chociaż nie każda transformacja jest taka sama z punktu widzenia wydajności, w większości przypadków mniejsza liczba przekształceń jest zwykle lepsza.
Zagadnienia i sugestie
- Postępuj zgodnie z najlepszymi rozwiązaniami podczas tworzenia nowego zapytania, jak opisano w artykule Najlepsze rozwiązania w dodatku Power Query.
- Użyj wskaźników składania zapytań, aby sprawdzić, które kroki uniemożliwiają składanie zapytania. Zmień kolejność, jeśli jest to konieczne, aby zwiększyć składanie.
- Użyj planu zapytania, aby określić, które przekształcenia są wykonywane w aucie Power Query dla określonego kroku. Rozważ zmodyfikowanie istniejącego zapytania przez ponowne rozmieszczenie kroków. Następnie ponownie sprawdź plan zapytania ostatniego kroku zapytania i sprawdź, czy plan zapytania wygląda lepiej niż poprzedni. Na przykład nowy plan zapytania ma mniej węzłów niż poprzedni, a większość węzłów to węzły "Przesyłanie strumieniowe", a nie "pełne skanowanie". W przypadku źródeł danych, które obsługują składanie, wszystkie węzły w planie zapytania inne niż
Value.NativeQuery
i węzły dostępu do źródła danych reprezentują przekształcenia, które nie składały się. - Jeśli jest dostępna, możesz użyć opcji Wyświetl zapytanie natywne (lub Wyświetl zapytanie źródła danych), aby upewnić się, że zapytanie można składać z powrotem do źródła danych. Jeśli ta opcja jest wyłączona dla danego kroku i używasz źródła, które zwykle ją włącza, utworzono krok, który zatrzymuje składanie zapytań. Jeśli używasz źródła, które nie obsługuje tej opcji, możesz polegać na wskaźnikach składania zapytań i planie zapytania.
- Użyj narzędzi diagnostycznych zapytań, aby lepiej zrozumieć żądania wysyłane do źródła danych, gdy funkcje składania zapytań są dostępne dla łącznika.
- Podczas łączenia danych pochodzących z użycia wielu łączników dodatek Power Query próbuje wypchnąć jak najwięcej pracy do obu źródeł danych, jednocześnie przestrzegając poziomów prywatności zdefiniowanych dla każdego źródła danych.
- Przeczytaj artykuł na temat poziomów prywatności, aby chronić zapytania przed uruchamianiem przed błędem zapory prywatności danych.
- Użyj innych narzędzi, aby sprawdzić składanie zapytań z perspektywy żądania odbieranego przez źródło danych. Na podstawie przykładu w tym artykule możesz użyć profilera programu Microsoft SQL Server, aby sprawdzić żądania wysyłane przez dodatek Power Query i odebrane przez program Microsoft SQL Server.
- Jeśli dodasz nowy krok do w pełni złożonego zapytania, a nowy krok również składa się, dodatek Power Query może wysłać nowe żądanie do źródła danych zamiast używać buforowanej wersji poprzedniego wyniku. W praktyce ten proces może spowodować pozornie proste operacje na niewielkiej ilości danych, które trwają dłużej, niż oczekiwano. To dłuższe odświeżanie jest spowodowane ponownym zapytaniem dodatku Power Query w źródle danych, a nie pracą nad lokalną kopią danych.