Odświeżanie przyrostowe nie działa - parametry RangeStart i RangeEnd
Udostępnij na:
Spis treści
Power Query w Power BI
Odświeżanie przyrostowe nie działa - parametry RangeStart i RangeEnd
W skrócie
Odświeżanie przyrostowe w Power BI nie daje się włączyć, filtr kończy się błędem, ładowanie trwa bardzo długo albo w modelu pojawiają się zdublowane wiersze z dat granicznych.
Power BI wymaga parametrów o nazwach dokładnie RangeStart i RangeEnd, typu Data/godzina, filtra na kolumnie tego samego typu z równością tylko po jednej stronie oraz źródła, które wykona filtr samo.
Utwórz parametry z właściwą nazwą i typem, ustaw filtr jest po lub jest równe RangeStart i jest przed RangeEnd, a klucz daty zapisany jako liczba porównuj z parametrem przeliczonym funkcją na liczbę.
Odświeżanie przyrostowe w Power BI opiera się na parametrach RangeStart i RangeEnd, a te mają kilka twardych wymagań. Każde naruszenie objawia się inaczej: raz nieaktywnym przełącznikiem, raz błędem filtra, raz zdublowanymi wierszami w modelu. Zebraliśmy objawy, po których rozpoznasz konkretny błąd, oraz poprawki, których zachowanie sprawdziliśmy w Excelu na przykładowych danych.
Jak to wygląda w praktyce
Przełącznik jest nieaktywny. W oknie Odświeżanie przyrostowe nie da się włączyć Odśwież przyrostowo tę tabelę, a okno pokazuje ostrzeżenie „Przed skonfigurowaniem odświeżania przyrostowego dla tej tabeli należy skonfigurować parametry.”. Według Microsoftu wyłączony przełącznik oznacza, że zapytanie tabeli nie zawiera filtra opartego na RangeStart i RangeEnd.
Filtr kończy się błędem. Krok filtra zwraca Expression.Error: „Nie możemy zastosować operatora < dla typów DateTime i Date.” (ang. „We cannot apply operator < to types DateTime and Date.”). Kolumna ma typ Data, a parametry Data/godzina.
Ostrzeżenie o składaniu. Okno odświeżania przyrostowego pokazuje „Nie można potwierdzić, czy zapytanie M można złożyć”, a ładowanie nawet krótkiego zakresu trwa długo.
Zawyżone sumy po odświeżeniu w usłudze. Wiersze z datą równą granicy partycji trafiły do modelu dwa razy.
Dlaczego tak się dzieje
Power BI rozpoznaje parametry po nazwie, a dokumentacja zaznacza, że w nazwie RangeStart liczy się wielkość liter. Oba parametry muszą mieć typ Data/godzina niezależnie od typu kolumny daty. W Power BI Desktop ich wartości bieżące ograniczają tylko dane ładowane do pliku. Po publikacji zasady odświeżania nadpisują je granicami kolejnych partycji i dla każdej partycji powstaje osobne zapytanie.
Typ kolumny ma znaczenie z dwóch powodów. Język M nie porównuje wartości typu Data z wartościami Data/godzina, stąd błąd operatora. Dokumentacja dodaje, że typ parametrów i filtrowanej kolumny musi być ten sam, inaczej zapytanie się nie złoży. Składanie zapytań (ang. query folding) to wykonanie filtra przez źródło danych, a odświeżanie przyrostowe jest zaprojektowane właśnie dla źródeł, które to potrafią.
Duplikaty biorą się z równości po obu stronach. Gdy filtr ma >= RangeStart i <= RangeEnd, wiersz z datą równą granicy spełnia warunki dwóch sąsiednich partycji. Microsoft wymaga znaku równości przy RangeStart albo przy RangeEnd, ale nie przy obu.
Jak to rozwiązać krok po kroku
Utwórz parametry z dokładnymi nazwami. W edytorze Power Query kliknij Zarządzaj parametrami, a potem Nowy. Nazwij parametry RangeStart i RangeEnd, z tą wielkością liter, ustaw typ Data/godzina i wartości bieżące obejmujące niewielki, najnowszy zakres, na przykład 01.01.2026 i 01.07.2026.
Zmień typ kolumny daty na Data/godzina. Kliknij ikonę typu w nagłówku kolumny, na przykład Początek miesiąca, i wybierz Data/godzina. W naszym teście filtr na kolumnie typu Data zakończył się błędem operatora, a po zmianie typu przepuścił 2 z 3 dat: 01.01.2026 i 01.06.2026, bez 01.07.2026.
Ustaw filtr z równością tylko po jednej stronie. Otwórz menu filtra kolumny, wybierz Filtry dat/godzin i pozycję Po. W oknie Filtrowanie wierszy ustaw warunki jest po lub jest równe RangeStart oraz jest przed RangeEnd, połączone spójnikiem Oraz. Żeby wskazać parametr zamiast daty, przełącz przycisk między listą warunku a listą wartości. Powstanie krok = Table.SelectRows(#"Zmieniono typ", each [Początek miesiąca] >= RangeStart and [Początek miesiąca] < RangeEnd).
Klucz daty zapisany liczbą: przelicz parametry, nie kolumnę. W bazie Nordvella tabela FaktSprzedaz ma kolumnę DataID w postaci 20260115. Dokumentacja zaleca wtedy funkcję zamieniającą parametr na liczbę, bo zamiana całej kolumny na datę zwykle przerywa składanie. Utwórz puste zapytanie DateKey z formułą = (x as datetime) => Date.Year(x)*10000 + Date.Month(x)*100 + Date.Day(x) i filtruj krokiem each [DataID] >= DateKey(RangeStart) and [DataID] < DateKey(RangeEnd). W Excelu funkcja zwróciła dla 15.01.2026 liczbę 20260115, a filtr ze stycznia zostawił 20260101 i 20260131.
Sprawdź składanie przed włączeniem zasad. Kliknij prawym przyciskiem krok filtra i sprawdź, czy pozycja Wyświetl zapytanie natywne jest aktywna. Przy plikach CSV filtr się nie złoży, a okno odświeżania przyrostowego pokaże ostrzeżenie o składaniu. Przełącznik da się wtedy włączyć, ale oszczędności nie będzie, bo każda partycja i tak przeczyta wszystkie pliki.
Włącz zasady w widoku raportu i opublikuj. Zamknij edytor, w panelu Dane kliknij prawym przyciskiem tabelę i wybierz Odświeżanie przyrostowe. Włącz Odśwież przyrostowo tę tabelę, ustaw zakres archiwum i zakres odświeżania, zapisz plik i opublikuj go. Zasady zaczynają działać dopiero przy odświeżeniu w usłudze Power BI.
Warunek z RangeStart ma równość, warunek z RangeEnd jej nie ma. Dzięki temu wiersz z datą graniczną trafi do dokładnie jednej partycji, a nie do dwóch.
Jak sprawdzić, że zadziałało
Ustaw w parametrach krótki zakres. Dokumentacja Microsoft radzi, żeby obejmował najwyżej kilka tysięcy wierszy: jeśli ich załadowanie trwa długo i mocno obciąża komputer, zapytanie najpewniej się nie składa. Sprawdź też granice, bo wiersz z datą równą RangeEnd ma trafić tylko do następnego okresu. W naszym teście trzy daty (15.01, 01.02 i 10.02.2026) w dwóch sąsiednich zakresach z równością po obu stronach dały 2 i 2 wiersze, czyli 4 zamiast 3. Z równością tylko przy RangeStart wyszło 1 i 2.
Po pierwszym odświeżeniu w usłudze porównaj liczbę wierszy w modelu z liczbą w źródle. Pamiętaj też, że po opublikowaniu modelu z odświeżaniem przyrostowym nie pobierzesz go już z usługi jako pliku .pbix, więc oryginał trzymaj u siebie i w nim wprowadzaj zmiany.
Szkolenie Power BI - Desktop, DAX i Online --> Pięć dni od pierwszego raportu do publikacji w usłudze Power BI: Power Query, model danych z wielu tabel, DAX, wizualizacje i Copilot. To szkolenie ma terminy gwarantowane.
Czy parametry RangeStart i RangeEnd mogą mieć typ Data zamiast Data/godzina?
Nie. Dokumentacja Microsoft wymaga typu Data/godzina dla obu parametrów, niezależnie od typu kolumny daty. Kolumnę typu Data zmień na Data/godzina, a klucz daty zapisany jako liczba porównuj z parametrem przeliczonym funkcją na liczbę.
Dlaczego po odświeżaniu przyrostowym w modelu pojawiają się zdublowane wiersze?
Najczęściej filtr ma równość po obu stronach, więc wiersz z datą równą granicy spełnia warunki dwóch partycji. Zostaw równość przy jednym parametrze, na przykład jest po lub jest równe RangeStart i jest przed RangeEnd. Kłopoty sprawia też zmiana daty transakcji w źródle po jej załadowaniu.
Czy odświeżanie przyrostowe działa na plikach CSV z folderu?
Da się je włączyć mimo ostrzeżenia o składaniu, ale pliki nie wykonają filtra same, więc przy każdej partycji Power BI i tak czyta wszystkie pliki. Pełną korzyść daje źródło, które składa zapytania, na przykład tabela faktów w SQL Server.
Dlaczego w Power BI Desktop widzę tylko część danych?
W Power BI Desktop parametry działają jak zwykły filtr i do pliku trafiają tylko wiersze z zakresu ich wartości bieżących. Po publikacji zasady odświeżania nadpisują te wartości, a usługa ładuje całe archiwum i zakres odświeżania.
Komentarze (0)
Brak komentarzy...