
Ostatnia data i czas odświeżenia w raporcie
„Z kiedy są dane na raporcie?”
Być może spotkałeś się z pytaniem od użytkowników końcowych: „Hej, a tak właściwie kiedy dokładnie te dane zostały odświeżone?”
W tym artykule pokażę Ci jak przygotować i podzielić się taką informacją w czytelny sposób.
Idea prezentacji daty odświeżenia danych jest bardzo przydatna. Nie tylko dla Ciebie – Twórcy rozwiązania, ale też dla użytkowników Twoich raportów. Dzięki temu można ustalić, kiedy dany model semantyczny (czyli źródło z danymi dla raportu) zostały odświeżone.

Implementacja
Pokażę Ci jak to zrobić w kilku krokach.
Zacznijmy od przejścia do Edytora Zapytań Power Query. Możemy to zrobić klikając Prawym Przyciskiem Myszy na jedną z tabel dostępnych w naszym modelu. Z menu, które nam się ukaże wybieramy opcję [Edytuj Zapytanie].

Po chwili ukaże nam się Edytor Power Query. Z jego poziomu wybieramy: [Nowe Źródło] -> [Puste Zapytanie].

Na pasku, w pierwszym kroku używamy poniższej funkcji:= DateTime.LocalNow()
Co ważne, pamiętaj, żeby zakończyć ją nawiasami, tak jak w kodzie powyżej.

Dokonaj też przekształcenia do tabeli. W lewym, górnym rogu pokaże Ci się opcja „Do Tabeli”. Wybierz ją, tak jak na poniższym obrazku.

Wynik działania naszej funkcji znajduje się teraz w tabeli, a w edytorze Power Query pojawił się kolejny krok. „Przekonwertowane na tabelę”.

W kolejnym kroku możemy zamienić nazwę kolumny oraz tabelki poprzez dwukrotne kliknięcie na nich.

Miara Ostatnie Odświeżenie Danych
Przejdźmy teraz do stworzenia miary, która pozwoli nam uzyskać informację, którą chcemy pokazać Użytkownikowi. Co ciekawe, w samej mierze oczywiście możesz też dodać tekst. Stwórz w swoim modelu miarę DAX’ową, jak poniżej:
Ostatnie odświeżenie danych = „Ten model został odświeżony : ” & MAX(’Odswieżenie danych'[Ostatnie odświeżenie])
Oczywiście możesz dowolnie modyfikować tekst w ramach implementacji swojej miary. Zastanawiasz się pewnie, dlaczego używamy funkcji MAX()
, skoro w tabeli znajduje się tylko 1 wpis?
Miara DAXowa jest wielkością skalarną, czyli zwraca jedną wartość. W przypadku braku funkcji MAX()
otrzymamy błąd, ponieważ silnik obliczeniowy nie będzie w stanie określić pojedynczej wartości kolumny. W naszym przypadku wiemy, że jest tam tylko 1 wiersz, ale musimy użyć funkcji agregującej MAX()
, tak, żeby silnik prawidłowo dokonał kalkulacji.
Następnie, w ramach wizualizacji typu karta, możemy użyć naszej miary i zaprezentować użytkownikowi informację odnośnie tego, kiedy został ostatni raz odświeżony model.

Po kliknięciu przycisku [Odśwież], dane zostaną załadowane do modelu na nowo, a nasza data zostanie oczywiście nadpisana nową wartością.

Implementacja w usłudze Power BI Online
Jeśli chcesz nasze rozwiązanie opublikować w usłudze Power BI Online, pamiętaj wówczas, że jest tutaj jeden mały „haczyk”. Funkcja DateTime.LocalNow() pokaże datę i godzinę zgodną z konfiguracją Twojego komputera. W moim przypadku polski czas letni (na moment pisania artykułu).
Z kolei funkcja ta wywołana po stronie usługi Power BI Online wyznaczana jest w strefie czasowej UTC. Taka jest konfiguracja PBI Online. Oznacza to, że czas będzie pokazany w strefie UTC. (Czyli 2 godzin „w tył” względem polskiego czasu letniego). Np. zamiast godziny 21:00, pokaże się godzina odświeżenia 19:00.
Jak prawidłowo pokazać datę?
Możesz dodać adnotację na raporcie, że czas odświeżenia pokazywany na raporcie opublikowanym w usłudze PBI Service jest w formacie UTC.
Ewentualnie warto zbudować w naszej tabeli drugą kolumnę. Wówczas w Edytorze Power Query, wybierz kolejno [Dodaj kolumnę] -> [Kolumna niestandardowa], a tam skorzystaj z funkcji:
DateTimeZone.UtcNow() + #duration(0,2,0,0))
Pamiętaj jednak, że po zmianie czasu na zimowy, różnica względem czasu UTC będzie wynosiła już tylko 1 godzinę. Być może warto zbudować dynamiczne rozwiązanie? Daj znać, czy jesteś zainteresowany dalszą eksploracją tematu i przedstawieniem takiego (dynamicznego) podejścia w którymś z kolejnych artykułów.
Podsumowanie
Prezentacja informacji dotyczącej czasu ostatniego odświeżenia danych może w znaczący sposób ułatwić pracę, a także być wartością dodaną dla Użytkowników raportów, dzięki czemu będą oni wiedzieć, jak dawno temu dane zostały odświeżone i pobrane ze źródeł. Jeśli zdecydujesz się jednak na korzystanie z rozwiązania w usłudze Power BI Online, pamiętaj, że tam domyślną strefą jest strefa UTC i musisz dostosować kod albo dodać adnotację/ uświadomić Użytkowników, że wynik prezentowany w usłudze Power BI Online jest prezentowany w czasie UTC.
Komentarze (2)
Ostatnio przerabiałam ten temat:D ale trochę inna sytuacja, ponieważ w jednym raporcie mam dane, które muszą być odświeżane na początku miesiąca ale drugie, które mam wczytane -pod koniec miesiąca. Z poprawnym pokazaniem tego podczas odświeżania na kartach na stronach wizualizacji trochę bylo zabawy tak to już jest…😅
Hej,
Dzięki za komentarz 🙂
Czy chcesz podzielić się, jak ostatecznie pobierałaś dane dla różnych tabel?
Ja korzystałem z zapytań do obiektów DMV i stamtąd pobierałem dane dotyczące odświeżenia.
Jest to temat nieco bardziej zaawansowany, ale może też kiedyś przedstawię go w ramach wpisu.
Pozdrawiam 🙂