Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
W skróciePrzepływ danych (dataflow) to zapytanie Power Query zapisane w usłudze Power BI, z którego wiele raportów bierze tę samą, już przygotowaną tabelę. Na danych Nordvelli budujemy przepływ w Power Query online, ustawiamy harmonogram, podpinamy tabelę w Desktopie, poręczamy model i korzystamy z widoku pochodzenia oraz analizy wpływu.
Lekcja 25 z 28 bezpłatnego kursu Power BI, od pierwszego raportu do Fabric i Copilota, na jednym zestawie danych sieci Nordvella.
<-- Spis wszystkich lekcjiWyobraź sobie, że w Nordvelli raporty Power BI robi już kilka osób: ktoś w dziale sprzedaży, ktoś w kontrolingu, ktoś w marketingu. Każda z nich pobiera tę samą tabelę FaktSprzedaz i każda po swojemu usuwa zwroty. Wystarczy, że jedna osoba zapomni o filtrze, i na spotkaniu padają dwie liczby sprzedaży Warszawy: 222 818 294,93 zł ze zwrotami albo 217 277 556,99 zł bez nich. Obie są poprawne, tylko liczone inaczej.
W tym rozdziale przenosimy czyszczenie sprzedaży do usługi Power BI. Przepływ danych (ang. dataflow) to Power Query uruchamiany w usłudze dla wszystkich: budujesz go w przeglądarce, usługa odświeża go według harmonogramu, a modele i raporty pobierają gotową tabelę. Potem pobieramy tę tabelę do Power BI Desktop, oznaczamy oficjalny model poręczeniem i sprawdzamy w widoku pochodzenia, co od czego zależy. Każdy krok nagraliśmy w obszarze roboczym Nordvella Zarzad.
Z tej lekcji dowiesz się:
Pliki do tej lekcji
Plik startowy: plik z końca lekcji 22 (lekcje 23 i 24 nie zmieniają pliku). Do samego przepływu nie jest potrzebny: przydaje się do poręczenia, widoku pochodzenia i analizy wpływu, gdy model jest opublikowany w obszarze roboczym. Przepływ danych budujesz w usłudze Power BI. Raport w Desktopie, który czyta z przepływu, zależy od Twojego obszaru roboczego, więc nie ma do niego pliku do pobrania.
Dane źródłowe:
Nordvella_
Nordvella.bak.gz - te same dane jako baza MS SQL Server (odtwarzasz poleceniem RESTORE DATABASE), do ćwiczeń z połączeniem z bazą SQL.
Co chcemy osiągnąć. Kroki czyszczenia sprzedaży Nordvelli mają działać w jednym miejscu w usłudze, a nie w każdym pliku osobno.
Power Query znasz z rozdziałów o przekształcaniu danych: zapisujesz w nim kroki, na przykład usuń kolumnę, zmień typ, odfiltruj zwroty. Do tej pory te kroki żyły w jednym pliku .pbix. Przepływ danych to ten sam Power Query, przeniesiony do obszaru roboczego w usłudze Power BI i oderwany od konkretnego raportu. W obszarze Nordvella Zarzad taki przepływ już działa: Nordvella Sprzedaz, odświeżany codziennie o 5:00.
Nowy przepływ zakładasz przyciskiem Nowy element. W panelu wpisz w polu filtra przepływ: usługa pokazuje trzy kafelki. Przepływ danych (Gen2) działa w obszarach na pojemności Microsoft Fabric. Przepływ danych 1. generacji ma etykietę Starsza wersja, ale działa także przy samej licencji Power BI Pro. Trzeci kafelek, strumieniowy przepływ danych, dotyczy danych przesyłanych na bieżąco i w tym kursie go nie używamy.
Po kliknięciu pierwszej generacji usługa pyta: Chcesz zamiast tego utworzyć przepływ danych 2. generacji? Wylicza, co daje druga generacja: miejsca docelowe danych wyjściowych, Copilota, szybką kopię, nowy aparat przekształcania i ulepszoną historię odświeżania. Pole Nie pokazuj tego ponownie wyłącza to pytanie na stałe. Wybraliśmy Nie, utwórz przepływ danych 1. generacji (u nas napis na przycisku jest przycięty przez krawędź okna).
| Cecha | Przepływ danych | Model semantyczny |
|---|---|---|
| Co robi | przygotowuje i czyści tabele | trzyma relacje, miary DAX, hierarchie, role |
| Język | M (Power Query) | DAX |
| Gdzie powstaje | w usłudze Power BI, w Power Query online | zwykle w Power BI Desktop, potem publikacja |
| Kto z niego korzysta | modele semantyczne | raporty i pulpity |
| U nas | Nordvella Sprzedaz, tabela Sprzedaz_oczyszczona | nordvella_22_ols |
Co chcemy osiągnąć. Ocenić, czy przepływ coś upraszcza, zanim dołożysz do architektury Nordvelli kolejny element do utrzymania.
Przepływ danych ma sens wtedy, gdy tę samą logikę przygotowania danych powtarza kilka osób albo kilka modeli. Wartość wychodzi przy zmianie: gdy kontroling ustali, że zwroty odejmujemy inaczej, przy wspólnym przepływie poprawiasz definicję w jednym miejscu, a nie w trzech plikach. Dla jednego raportu, który robisz sam, zwykły Power Query w pliku jest prostszy.
Granica jest jedna i warto ją zapamiętać: przepływ nie liczy miar i nie buduje relacji. Dostarcza czystą tabelę wejściową. Model gwiazdy, relacje, miary DAX i role bezpieczeństwa nadal powstają w modelu semantycznym, tak jak w poprzednich rozdziałach kursu.
Co chcemy osiągnąć. Zbudować w przeglądarce przepływ, który wczyta arkusz FaktSprzedaz Nordvelli i odfiltruje zwroty.
Po wyborze pierwszej generacji zobaczysz ekran Rozpoczynanie tworzenia przepływu danych z czterema kafelkami. Pierwszy, Definiowanie nowych tabel, buduje tabele od źródła. Drugi, Połączenie tabel z innych przepływów danych, pozwala korzystać z tabel innego przepływu (opis na kafelku mówi, że ogranicza to duplikaty). Trzeci importuje model przepływu z pliku, czwarty dołącza folder Common Data Model. Nad ekranem usługa wyświetla pasek Dostępne uaktualnienie z przyciskiem Zapisz jako przepływ danych 2. generacji. Kliknij Dodaj nowe tabele.
Otwiera się Power Query online z oknem Wybierz źródło danych. Na liście są między innymi Skoroszyt programu Excel, Baza danych programu SQL Server, Plik tekstowy lub CSV, Przepływy danych i Interfejs API sieci Web. Wybierz Skoroszyt programu Excel.
W oknie Nawiąż połączenie ze źródłem danych zostaw Link do pliku i wpisz w polu Adres URL adres arkusza kursu:
https://jsystems.pl/new_page_resources/images/POWER_BI_KURS/pliki/Nordvella_dane.xlsx
Plik leży na serwerze pod adresem HTTPS, więc brama nie jest potrzebna: Brama danych zostaje (brak), Rodzaj uwierzytelniania to Anonimowe. Poziom prywatności ma domyślnie wartość Brak. Gdy w obszarze istnieje już połączenie z tym adresem, formularz podstawia je sam i pokazuje tylko rodzaj uwierzytelniania z linkiem Edytuj połączenie. Kliknij Następne.
Zobacz też: Szkolenie Power BI - Desktop, DAX i Online + Copilot
Okno Wybierz dane pokazuje dziewięć arkuszy pliku, od DimKalendarz do FaktZwroty. Zaznacz FaktSprzedaz: po prawej pojawi się podgląd z czternastoma kolumnami, od SprzedazID do CzyZwrot. Kliknij Przekształć dane.
Edytor wygląda prawie jak w Desktopie: wstążka z kartami Narzędzia główne, Transformacja, Dodaj kolumnę i Widok, lista zapytań po lewej, pasek formuły i Zastosowane kroki po prawej. Usługa dodała już cztery kroki: Źródło, Nawigacja, nagłówki z pierwszego wiersza i Zmieniono typ kolumny. Na dole widać Kolumny: 14.
Teraz filtr zwrotów. Przewiń podgląd w prawo, rozwiń strzałkę w nagłówku kolumny CzyZwrot, odznacz 1, zostaw 0 i kliknij OK. W pasku formuły pojawia się Table.SelectRows z warunkiem each ([CzyZwrot] = 0), a w Zastosowanych krokach nowy krok filtrowania.
Pozostałe kroki przepływu Nordvella Sprzedaz to typy liczbowe dla kwot, usunięcie kolumny CzyZwrot i nazwa zapytania Sprzedaz_oczyszczona. Kompletną listę kroków i kod M pokazujemy w następnej sekcji. Na koniec kliknij Zapisz i zamknij. Okno Zapisz swój przepływ danych prosi o nazwę i opis.
U nas w obszarze działa już przepływ Nordvella Sprzedaz, więc ten nowy zamknęliśmy bez zapisu: Anuluj, potem Zamknij i Nie zapisuj w oknie Czy chcesz zapisać swoje zmiany?. U siebie kliknij Zapisz. Przepływ pojawi się na liście obszaru, ale bez danych, dopóki go nie odświeżysz: ikoną Odśwież teraz przy jego nazwie, tak samo jak model w lekcji 24.
Co chcemy osiągnąć. Zobaczyć, co dokładnie robi przepływ, z którego korzysta zespół: jaką tabelę oddaje i jakie kroki ją przygotowują.
Kliknij nazwę przepływu na liście obszaru. Widok przepływu pokazuje jego tabele: u nas jedną, Sprzedaz_oczyszczona. Strzałka przy nazwie rozwija listę kolumn z typami danych. Identyfikatory (SprzedazID, DataID, ProduktID, SklepID, PracownikID) mają typ String, Ilosc to Int64, kwoty to Double. Kolumny CzyZwrot już nie ma.
Przycisk Edytuj tabele otwiera Power Query online z tym przepływem. Zastosowane kroki to osiem pozycji: Zrodlo, FaktSprzedaz, Naglowki, TylkoSprzedaz, Typy, BezKolumny, Przekształć kolumny i Zamień błędy. Na dole: Kolumny: 13.
Cały kod M zobaczysz w oknie Edytor zaawansowany (przycisk na karcie Narzędzia główne). To ta sama składnia co w Desktopie:
let
Zrodlo = Excel.Workbook(Web.Contents("https://jsystems.pl/new_page_resources/images/POWER_BI_KURS/pliki/Nordvella_dane.xlsx"), null, true),
FaktSprzedaz = Zrodlo{[Item = "FaktSprzedaz", Kind = "Sheet"]}[Data],
Naglowki = Table.PromoteHeaders(FaktSprzedaz, [PromoteAllScalars = true]),
TylkoSprzedaz = Table.SelectRows(Naglowki, each [CzyZwrot] = 0),
Typy = Table.TransformColumnTypes(TylkoSprzedaz, {{"Ilosc", Int64.Type}, {"CenaNetto", type number}, {"WartoscNetto", type number}, {"WartoscBrutto", type number}, {"KosztWlasny", type number}, {"MarzaNetto", type number}}),
BezKolumny = Table.RemoveColumns(Typy, {"CzyZwrot"}),
#"Przekształć kolumny" = Table.TransformColumnTypes(BezKolumny, {{"SprzedazID", type text}, {"DataID", type text}, {"ProduktID", type text}, {"SklepID", type text}, {"PracownikID", type text}, {"KanalSprzedazy", type text}, {"FormaPlatnosci", type text}}),
#"Zamień błędy" = Table.ReplaceErrorValues(#"Przekształć kolumny", {{"SprzedazID", null}, {"DataID", null}, {"ProduktID", null}, {"SklepID", null}, {"PracownikID", null}, {"KanalSprzedazy", null}, {"FormaPlatnosci", null}})
in
#"Zamień błędy"
Krok TylkoSprzedaz odcina zwroty, więc każdy model podpięty do przepływu liczy sprzedaż bez nich. Krok Typy ustawia typy liczbowe kwot, BezKolumny usuwa kolumnę CzyZwrot, która po filtrze nic już nie wnosi. Dwa ostatnie kroki nadają identyfikatorom typ tekst i zamieniają ewentualne błędy w tych kolumnach na puste wartości. Skutek widać w Desktopie: SklepID przychodzi jako tekst. Jeśli budujesz przepływ od zera, zostaw identyfikatorom typ liczbowy, wtedy krok zmiany typu w Desktopie odpada.
Okno zamknij przyciskiem Anuluj, a edytor też przyciskiem Anuluj: bez zmian w krokach przepływ zostaje taki, jaki był.
Co chcemy osiągnąć. Przepływ ma się odświeżać sam, przed modelami, które z niego korzystają.
Ustawienia przepływu otworzysz z menu Więcej opcji przy jego nazwie (pozycja Ustawienia). Na górze strony są daty ostatniej próby i następnego odświeżenia, zapisane po angielsku, na przykład Sat Oct 17 2026 05:00:00 GMT+0200. Sekcja Odśwież wygląda tak samo jak przy modelu w lekcji 24: strefa (UTC+01:00) Sarajewo, Skopje, Warszawa, Zagrzeb, przełącznik Włączony, częstotliwość Codziennie i godzina 5:00 AM. Powiadomienia o błędach dostaje Właściciel przepływu danych.
Link Historia odświeżania otwiera listę przebiegów z kolumnami Time, Type, Duration i Status (nagłówki są tu po angielsku). U nas przepływ odświeża się codziennie o 5:00, typ Zaplanowane, w 9 do 22 sekund, za każdym razem ze stanem Zakończono.
Kolejność odświeżania ma znaczenie. Model, który czyta z przepływu, dostaje dane z ostatniego udanego odświeżenia przepływu. Dlatego przepływ odświeżamy wcześniej (u nas o 5:00), a modele na nim oparte później. Zmiana w przepływie dociera do modelu dopiero przy jego najbliższym odświeżeniu.
Co chcemy osiągnąć. Pobrać tabelę Sprzedaz_oczyszczona z przepływu do nowego raportu w Desktopie i policzyć sprzedaż bez zwrotów według miast.
W Power BI Desktop zacznij od pustego raportu i kliknij Pobierz dane. W oknie wyszukaj przep: lista pokazuje dwa łączniki Przepływy danych (w kategoriach Microsoft Fabric i Power Platform) oraz Przepływy danych usługi Power BI (starsza wersja). Zaznacz pierwszy i kliknij Połącz.
Desktop korzysta z konta, którym jest zalogowany, więc od razu otwiera się Nawigator. Rozwiń Przepływy danych, Obszary robocze, Nordvella Zarzad i Nordvella Sprzedaz, zaznacz Sprzedaz_oczyszczona. Zamiast Załaduj kliknij Przekształć dane: trzeba poprawić jeden typ.
W edytorze Power Query zobaczysz pasek z informacją, że podgląd może pochodzić sprzed kilkunastu dni (u nas 19), i przycisk Odśwież. Odśwież podgląd, potem zaznacz kolumnę SklepID. Na wstążce jest Typ danych: Tekst. Rozwiń listę i wybierz Liczba całkowita. W Zastosowanych krokach pojawia się krok Zmieniono typ z formułą Table.TransformColumnTypes(Sprzedaz_oczyszczona_, {{"SklepID", Int64.Type}}).
Do miast potrzebna jest tabela sklepów. W tym samym edytorze kliknij Nowe źródło, Skoroszyt programu Excel, wskaż plik C:\Kurs_PBI\Nordvella_dane.xlsx i zaznacz arkusz DimSklepy: 15 sklepów, SklepID jako liczba całkowita. Kliknij Zamknij i zastosuj. Po załadowaniu widok modelu pokazuje relację, którą Power BI wykrył sam: Sprzedaz_oczyszczona[SklepID] do DimSklepy[SklepID], kardynalność Wiele do jednego (*:1), filtrowanie w jedną stronę. Relacja powstała, bo oba klucze mają teraz ten sam typ.
Na stronie raportu wstaw Macierz, do Wierszy przeciągnij DimSklepy[Miasto], do Wartości Sprzedaz_oczyszczona[WartoscNetto] (Power BI nazwie ją Suma elementów WartoscNetto). Warszawa: 217 277 556,99 zł, suma: 456 203 988,98 zł.
Te liczby sprawdziliśmy na modelu nordvella_22_ols z lekcji 22, który zwroty ma w tabeli i odcina je dopiero filtrem:
| Miara | Model z lekcji 22 (ze zwrotami) | Model 22 z filtrem CzyZwrot = 0 | Tabela z przepływu |
|---|---|---|---|
| Sprzedaż Warszawy | 222 818 294,93 zł | 217 277 556,99 zł | 217 277 556,99 zł |
| Sprzedaż razem | 467 775 009,17 zł | 456 203 988,98 zł | 456 203 988,98 zł |
Różnica to zwroty: 11 571 020,19 zł w całej sieci. Przepływ daje ten sam wynik co filtr w modelu, tylko nikt nie musi o filtrze pamiętać. Raport w Desktopie zapisaliśmy jako plik roboczy. Nie ma go do pobrania, bo łączy się z przepływem w naszym obszarze roboczym i u Ciebie by nie zadziałał: zbudujesz go w kilka minut na własnym przepływie.
Co chcemy osiągnąć. Oznaczyć oficjalny model sprzedaży tak, żeby zespół od razu wiedział, którego modelu używać.
W ustawieniach modelu nordvella_22_ols rozwiń sekcję Zatwierdzanie i odnajdywanie. Są tam cztery opcje: Brak (domyślnie), Podwyższono poziom, Certyfikowane i Dane główne. Dwie ostatnie są wyszarzone: certyfikować mogą tylko osoby, które administrator wskaże w ustawieniach dzierżawy. Zaznacz Podwyższono poziom. Usługa sama zaznacza wtedy Zapewnianie możliwości odnajdywania i ostrzega: Ten model semantyczny stanie się wykrywalny. Inne osoby w organizacji będą mogły go znaleźć, na przykład według nazwy, tabel i kolumn. Kliknij Zastosuj.
| Poręczenie | Kto może nadać | Co mówi odbiorcy |
|---|---|---|
| Brak | domyślnie | model jest widoczny w wyszukiwaniu, ale nikt go nie poleca |
| Podwyższono poziom | osoba z prawem edycji modelu | model jest gotowy do użycia przez zespół |
| Certyfikowane | osoby wskazane przez administratora | model przejrzany według kryteriów organizacji |
| Dane główne | osoby wskazane przez administratora | podstawowe źródło danych organizacji |
Efekt widać od razu na liście obszaru: w kolumnie Poręczenie przy modelu nordvella_22_ols jest Podwyższono poziom, a w widoku pochodzenia przy nazwie modelu pojawia się odznaka. Przepływ danych też ma sekcję Poręczenie w swoich ustawieniach.
Co chcemy osiągnąć. Zobaczyć, co od czego zależy w obszarze Nordvella Zarzad, i sprawdzić, kogo dotknie zmiana w modelu.
Na liście obszaru, obok przycisku Widok listy, jest Widok pochodzenia. Pokazuje łańcuchy od lewej do prawej: źródło, model, raport, pulpit. Model nordvella_22_ols ma dwa źródła z bramą z lekcji 24 (Python i Nordvella_
Przepływ Nordvella Sprzedaz ma w widoku pochodzenia własny łańcuch: Skoroszyt programu Excel z adresem HTTPS, a za nim karta przepływu z typem Przepływ danych 1. generacji i datą odświeżenia. Za przepływem nie ma żadnego modelu, bo raport z Desktopu nie został opublikowany.
Na karcie modelu jest przycisk Pokaż wpływ w obszarach roboczych. Panel analizy wpływu wylicza elementy podrzędne: u nas 2 elementy w 1 obszarze roboczym, pulpit Przegląd zarządu Nordvelli i raport. Na dole jest przycisk Powiadom kontakty, który wysyła wiadomość do list kontaktów obszarów z tymi elementami. Nie klikaliśmy go.
| Krok | Gdzie | Jak sprawdzić |
|---|---|---|
| 1. Przepływ ma dane | lista obszaru, kolumna Odświeżone | data ostatniego odświeżenia, w historii Zakończono |
| 2. Kroki i kod | Edytuj tabele, Edytor zaawansowany | filtr zwrotów, typy kwot, brak zbędnych kolumn |
| 3. Typy kluczy | widok tabeli przepływu | identyfikatory w typie zgodnym z tabelami wymiarów |
| 4. Harmonogram | ustawienia przepływu, sekcja Odśwież | strefa Warszawa, godzina przed odświeżaniem modeli |
| 5. Model w Desktopie | Pobierz dane, Przepływy danych | relacja z wymiarami i liczby zgodne z modelem źródłowym |
| 6. Poręczenie | ustawienia modelu, Zatwierdzanie i odnajdywanie | Podwyższono poziom w kolumnie Poręczenie |
| 7. Zależności | Widok pochodzenia, Pokaż wpływ w obszarach roboczych | lista elementów, które zmiana dotknie |
W kolejnym rozdziale przenosimy raport między środowiskami: potoki wdrażania prowadzą zmiany z obszaru deweloperskiego przez testowy do produkcyjnego.
Komentarze (0)
Brak komentarzy...