Blog JSystems - uwalniamy wiedzę!

Szukaj

Power BI - Odświeżanie w usłudze i brama danych

Odświeżanie przyrostowe nie pobiera zmian w starych danych - wykrywanie zmian

W skrócie

  • Odświeżanie przyrostowe nie pobiera zmian w starych danych, gdy korekta dotyczy okresu z archiwum albo znacznik modyfikacji nie wzrósł. Raport dalej pokazuje sumę sprzed korekty.
  • Usługa przebudowuje tylko partycje z okna odświeżania, a wykrywanie zmian porównuje maksimum kolumny znacznika tylko w tym oknie. Partycje archiwum po pierwszym odświeżeniu nie są już czytane ze źródła.
  • Sprawdzasz zapytaniem o partycje, czy partycja z korektą dostała nowy czas, poprawiasz znacznik w źródle, a archiwum przebudowujesz przez punkt końcowy XMLA, rozszerzone API albo ponowną publikację.

Dział finansów poprawia sprzedaż sprzed kilku miesięcy, a raport w usłudze po zaplanowanym odświeżeniu dalej pokazuje dawną kwotę. Odświeżanie przyrostowe takich zmian w starych danych nie pobiera, a samo odświeżenie ma stan Zakończono i trwa kilka sekund, co tylko utwierdza w przekonaniu, że wszystko działa. Na modelu Nordvelli z kursu sprawdzamy zapytaniem DAX, które partycje usługa przebudowuje, i wczytujemy korektę z archiwum.

Jak to wygląda w praktyce

Ktoś poprawia w bazie starą transakcję, a po zaplanowanym odświeżeniu raport pokazuje tę samą sumę za ten okres co przed poprawką. Historia odświeżania ma wpis ze stanem Zakończono, bez błędu i bez ostrzeżenia. W lekcji 19 drugie odświeżenie modelu nordvella_19_incremental trwało około 5 sekund, od 21:17:52 do 21:17:57, bo przebudowało jedną partycję, podczas gdy pierwsze, budujące całą historię, trwało 23 sekundy.

Różnicę widać dopiero na liście partycji. Model z polityką 5 lat archiwum i 6 miesięcy okna miał 13 partycji tabeli FaktSprzedaz: lata 2021-2025, kwartał 2026Q1, kwiecień 2026Q204 oraz miesiące okna od 2026Q205 do 2026Q410. Po zmianie jednej transakcji z 20 maja nowy czas odświeżenia dostała tylko partycja 2026Q205, a wszystkie partycje archiwum zachowały czas z pierwszego odświeżenia.

Dlaczego tak się dzieje

Według dokumentacji Microsoft przy każdym kolejnym odświeżeniu zapytanie zwraca tylko wiersze z okresu odświeżania, a wiersze, które z niego wypadły, przechodzą do okresu historycznego, który nie jest odświeżany. W kursie okno obejmowało daty od 5/1/2026 do 10/31/2026, a archiwum od 1/1/2021 do 4/30/2026. Korekta transakcji z kwietnia 2026 nie trafi więc do modelu, nawet gdy jej znacznik wzrośnie.

Opcja Wykryj zmiany danych niczego tu nie rozszerza. Według dokumentacji maksimum kolumny znacznika jest liczone dla każdego okresu z zakresu przyrostowego, a partycja ze znacznikiem bez zmiany jest pomijana. W kursie znacznikiem jest OstatniaModyfikacja, a pustym partycjom zapytanie sprawdzające podstawia stałą datę z 1901 roku. Druga przyczyna leży w źródle: gdy korekta wiersza nie podnosi znacznika, usługa uzna partycję z okna za niezmienioną. Dlatego kolumna znacznika ma być inna niż kolumna podziału na partycje. Data sprzedaży starej transakcji się nie zmienia, więc korekta po niej nie zostałaby wykryta. Jak usługa w ogóle tworzy partycje z parametrów, opisujemy w poradniku o parametrach RangeStart i RangeEnd.

Lista partycji FaktSprzedaz przed i po zmianie transakcji z maja: nowy czas odświeżenia ma tylko partycja 2026Q205
Zmienił się jeden wiersz: partycja 2026Q205, czyli maj, ma nowy czas 7:17:55 PM. Archiwum (lata, 2026Q1, kwiecień) zostało nietknięte.

Co zrobić krok po kroku

  1. Sprawdź, co usługa przebudowała. Przy modelu kliknij Więcej opcji, Otwórz w widoku zapytania DAX, wklej zapytanie z kursu i kliknij Uruchom. Wynik to lista partycji z czasem ostatniego odświeżenia. Funkcje INFO potrzebują uprawnień do edycji modelu. Na modelu Nordvelli w Desktopie, bez polityki, zapytanie zwraca jedną partycję FaktSprzedaz, a w usłudze po wdrożeniu polityki zwróciło 13.
    EVALUATE
    VAR Fakt =
        SELECTCOLUMNS (
            FILTER ( INFO.TABLES (), [Name] = "FaktSprzedaz" ),
            "ID", [ID]
        )
    RETURN
        SELECTCOLUMNS (
            FILTER ( INFO.PARTITIONS (), [TableID] IN Fakt ),
            "Partycja", [Name],
            "Odświeżona", [RefreshedTime]
        )
    ORDER BY [Partycja]
  2. Porównaj datę poprawionego wiersza z polityką. W Power BI Desktop kliknij prawym przyciskiem tabelę w panelu Dane i wybierz Odświeżanie przyrostowe. Szare linijki pod polami Rozpoczynanie archiwizowania danych i Uruchamianie odświeżania przyrostowego danych podają daty archiwum i okna. Okno liczy się od bieżącej daty w strefie czasowej z ustawień odświeżania modelu, o czym piszemy w lekcji o harmonogramie odświeżania i strefie czasowej.
  3. Gdy wiersz leży w oknie, a partycja nie dostała nowego czasu, sprawdź znacznik w źródle. W kursie kolumnę OstatniaModyfikacja ustawia wyzwalacz w SQL Server przy każdej zmianie wiersza. Polecenie UPDATE dbo.FaktSprzedaz SET KanalSprzedazy = KanalSprzedazy WHERE SprzedazID = 107749 nie zmieniło wartości, ale podniosło znacznik z 2026-05-20 00:00:00 na 2026-10-16 19:17:21, a po odświeżeniu nowy czas miała partycja 2026Q205.
  4. Gdy wiersz leży w archiwum, przebuduj wybraną partycję. Według dokumentacji Microsoft w obszarze na pojemności Premium z punktem końcowym XMLA w trybie odczytu i zapisu zrobisz to w SQL Server Management Studio, bez odświeżania całej historii. W modelu na Premium, Premium Per User albo Power BI Embedded możesz też wysłać rozszerzone odświeżanie przez REST API, metodą POST na kolekcję refreshes modelu. Wzorzec treści żądania dla partycji roku 2025 (tego żądania nie wysyłaliśmy, nazwę partycji weź z listy z kroku 1):
    {
      "type": "Full",
      "commitMode": "transactional",
      "applyRefreshPolicy": false,
      "objects": [
        { "table": "FaktSprzedaz", "partition": "2025" }
      ]
    }
  5. Bez punktu końcowego XMLA zostaje ponowna publikacja. Według dokumentacji Microsoft ponowna publikacja z Desktopu usuwa istniejące partycje i dane modelu, a dla modelu Pro na pojemności współdzielonej dokumentacja opisuje drogę: usuń model w usłudze, opublikuj plik ponownie i uruchom pierwsze odświeżenie. Tak jak po pierwszej publikacji w kursie, to odświeżenie buduje wszystkie partycje od nowa z bieżącej zawartości źródła, u nas w 23 sekundy na 108 675 wierszach. Po publikacji powiąż model z bramą od nowa. Zachowaj plik .pbix, bo modelu z polityką nie pobierzesz z usługi z powrotem do Desktopu. Przy dużej tabeli pierwsze odświeżenie może przekroczyć limit czasu, opisujemy to w poście o odświeżaniu, które przekroczyło limit czasu.
  6. Dobierz okno do tego, jak długo stare wiersze się zmieniają. W danych Nordvelli zapytaniem DAX policzyliśmy 2 714 zwrotów: 1 262 z nich przyszło w innym miesiącu kalendarzowym niż zakup, a 222 w innym roku, na przykład zwroty zakupów z 31.12.2025 przychodziły od 1 do 28 stycznia 2026. Najpóźniejszy zwrot przyszedł 28 dni po zakupie. Okno obejmujące tylko bieżący miesiąc albo bieżący rok zgubiłoby takie zwroty na przełomie okresów, a okno 6 miesięcy je obejmuje.

Jak sprawdzić, że problem zniknął

Naprawione, gdy po odświeżeniu partycja z korektą ma nowy czas w zapytaniu z kroku 1, pozostałe partycje archiwum mają czas bez zmian, a suma za poprawiony okres w raporcie zgadza się z zapytaniem do bazy. Dla całej tabeli w Nordvelli kontrolą jest 108 675 wierszy i [Łączna sprzedaż] 467 775 009,17 zł, a po korekcie porównujesz sumę jednego okresu.

Ustal z właścicielami danych, jak daleko wstecz zdarzają się korekty, i ustaw okno odświeżania z zapasem ponad ten okres. Znacznik modyfikacji ustawiaj w bazie wyzwalaczem przy zmianie wiersza, a nie w aplikacji, która może o nim zapomnieć. Sama wartość domyślna kolumny tu nie wystarczy, bo działa tylko przy wstawianiu nowego wiersza, a nie przy korekcie. Korekty starsze niż okno wczytuj świadomie, przebudową wybranej partycji, i zapisz w dokumentacji modelu, kto i kiedy to robi.

Źródła i sposób sprawdzenia

  • Microsoft Learn: Incremental refresh and real-time data for semantic models (okres historyczny, Detect data changes) (źródło)
  • Microsoft Learn: Advanced incremental refresh and real-time data with the XMLA endpoint (odświeżanie partycji historycznych) (źródło)
  • Microsoft Learn: Enhanced refresh with the Power BI REST API (objects, applyRefreshPolicy) (źródło)
  • Microsoft Learn: Troubleshoot incremental refresh and real-time data (model Pro: usunięcie, ponowna publikacja, pierwsze odświeżenie) (źródło)
  • Kurs Power BI, lekcja 19: polityka 5 lat i 6 miesięcy, wykrywanie zmian z kolumną OstatniaModyfikacja, lista partycji przed i po zmianie transakcji 107749
  • Sprawdzone zapytaniem DAX na modelu Nordvelli: zapytanie INFO.PARTITIONS i rozkład zwrotów względem miesiąca i roku zakupu

Zachowanie programu sprawdziliśmy w Power BI Desktop 2.157 (wydanie z sierpnia 2026 r.) z polskim interfejsem, a przykłady na modelu sieci Nordvella z bezpłatnego kursu Power BI. Microsoft wydaje nową wersję Power BI Desktop co miesiąc, więc nazwy przycisków i limity usługi mogą się zmieniać. Aktualne wartości podaje dokumentacja Microsoft Learn.

Wróć do listy: 131 najczęstszych pytań i problemów związanych z Power BI

Najczęściej zadawane pytania

Dlaczego odświeżanie przyrostowe w Power BI nie widzi zmian w starych danych?
Usługa przebudowuje tylko partycje z okna odświeżania, a partycje archiwum po pierwszym odświeżeniu nie są już czytane ze źródła. Wykrywanie zmian działa też tylko w oknie. Druga przyczyna to znacznik modyfikacji, który nie rośnie przy korekcie wiersza, przez co usługa uznaje partycję za niezmienioną.
Jak odświeżyć jedną partycję archiwum w Power BI?
Według dokumentacji Microsoft w obszarze na pojemności Premium z punktem końcowym XMLA w trybie odczytu i zapisu wybraną partycję przebudujesz w SQL Server Management Studio. W modelu na Premium, Premium Per User albo Power BI Embedded możesz też użyć rozszerzonego odświeżania przez REST API, podając tabelę i partycję oraz applyRefreshPolicy ustawione na false.
Jaką kolumnę wybrać do wykrywania zmian danych w odświeżaniu przyrostowym?
Kolumnę daty i godziny, która rośnie przy każdej zmianie wiersza, na przykład znacznik ostatniej modyfikacji ustawiany wyzwalaczem w bazie. Według dokumentacji nie powinna to być ta sama kolumna, po której model dzieli dane parametrami RangeStart i RangeEnd, bo data sprzedaży starej transakcji się nie zmienia.
Czy ponowna publikacja z Power BI Desktop odświeży całe archiwum?
Tak, ale kosztem całej historii w usłudze. Według dokumentacji Microsoft ponowna publikacja usuwa istniejące partycje i dane modelu. Pierwsze odświeżenie po publikacji buduje wszystkie partycje od nowa z bieżących danych źródła, w kursie Power BI trwało to 23 sekundy na 108 675 wierszach. Przy dużej tabeli takie odświeżenie może przekroczyć limit czasu.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...