Power BI – dynamiczne ładowanie plików z określonej lokalizacji

Dziś pokażemy w jaki sposób pobrać w Power BI dane z plików płaskich o takiej samej strukturze znajdujących się w określonym folderze. Funkcjonalność ta jest bardzo częstym wymogiem – zdarza się, iż z systemów źródłowych generowane są pliki płaskie i narzędzie analityczne musi je załadować. W takiej sytuacji samo ładowanie nie może być ustalone na sztywno ze względu na fakt, iż pliki mogą mieć zmienną nazwę i ich liczba z góry nie jest znana. Możemy być jedynie pewni, że trzeba ładować wszystkie pliki znajdujące się w określonej lokalizacji. Narzędzia ETL takie jak np. Integration Services posiadają gotowe komponenty odpowiednie w tego typu sytuacjach, nie inaczej jest z Power BI (Power Query) i postaram się to przedstawić w prosty i przejrzysty sposób . Zapraszam do lektury!

Przechodząc do meritum w folderze o nazwie Files stworzone zostały trzy pliki o tej samej strukturze: File1.txt,File2.txt oraz File3.txt. Aby je załadować musimy z poziomu Power BI Desktop wybrać Get Data -> More aby zobaczyć wszystkie dostępne konektory. Jedną z dostępnych opcji jest Folder – właśnie ten wybór jest dla nas najbardziej istotny w niniejszej demonstracji.

Sama konfiguracja połączenia jest bardzo prosta i sprowadza się do zdefiniowania ścieżki do folderu w którym znajdują się pliki:

Po zatwierdzeniu klawiszem OK Power BI przeszuka wskazaną lokalizację i wyświetli nam okno z listą znalezionych plików. Warto pamiętać, że Power BI przeszuka podany folder oraz wszystkie podfoldery w nim zawarte. Tak więc naszym oczom powinny wyświetlić się następujące dane:

  • Typ zawartości ( w przypadku plików płaskich będzie wyświetlany będzie typ Binary)
  • Nazwa
  • Rozszerzenie
  • Data modyfikacji
  • Data utworzenia
  • Atrybuty plików ( w ramach tej kolumny mamy tak naprawdę zagnieżdżone kilka innych kolumn z atrybutami pliku – nazywanych tutaj jako Record)
  • Ścieżka pliku

PowerBI-Folder-connection3

Informacje te mogą być przydatne jednakże na ten moment interesują nas nie tyle metadane plików co ich zawartość dlatego też zamiast Load klikamy Edit. W pierwszym kroku zaznaczmy komórkę wybranego pliku w kolumnie Attributes – w dolnej części ekranu powinien ukazać się podgląd z całą gamą atrybutów związanych z konkretnym plikiem:

Jeżeli jakiś atrybut nas interesuje i chcemy go umieścić w naszym zestawie danych możemy kliknąć przycisk z dwoma strzałkami znajdującymi się przy kolumnie. W tym momencie wyświetlone zostaną kolumny jakie mogą być dołączone do zestawu danych.

W dolnej części okna wyświetlone zostało ostrzeżenie w formie komunikatu o treści List may be incomplete. Oznacza to nic innego jak to, że Power BI nie wyświetla domyślnie  wszystkich dostępnych opcji – jednakże możemy ominąć to zachowanie klikając Load more. Tak jak już wspomniałem interesuje nas głównie zawartość plików – dodatkowo  jednak dodajmy sobie nazwę pliku aby rozróżnić skąd pochodzi konkretny wiersz. Tak więc zaznaczmy kolumnę Content w której zagnieżdżona jest nasza zawartość oraz kolumnę Name i klikając na nie prawym przyciskiem myszy z menu kontekstowego wybierzmy opcję Remove Other Columns. Następnie aby pobrać zawartość plików należy w analogiczny do poprzedniego przypadku sposób rozszerzyć kolumnę klikając przycisk z dwoma strzałkami dostępny w nagłówku kolumny Content:

Naszym oczom powinno pojawić się okno podobne do poniższego:

PowerBI- Folder connection5

Pozwala ono na wybranie strony kodowej pliku (File Origin), separator poszczególnych kolumn (Delimiter) oraz sposób detekcji typów danych. Typy danych możemy ustalić na podstawie:

  • 200 pierwszych wierszy,
  • całego zestawu danych

bądź też nie musimy dokonywać detekcji w ogóle. Na ten moment zostawmy domyślne ustawienia i potwierdźmy przyciskiem OK. Power BI stworzy szereg obiektów i wyświetli nam gotowe dane ze wszystkich plików dostępnych w folderze, który wybraliśmy.

Jednakże wyświetlony zbiór danych niekoniecznie spełnia nasze oczekiwania – chcieliśmy mieć nazwę pliku jako kolumnę w celu identyfikacji każdego wiersza. Jeżeli dokładnie się przyjrzymy to dostrzeżemy, że Power BI dodał kilka transformacji w tym Removed Other Columns:

Usuńmy ten krok – dzięki temu dostaniemy pożądany podgląd danych. Następnie możemy usunąć kolumnę Content i zapisać cały proces.

Jak widać ładowanie danych z folderów w Power BI przebiega bez problemowo. Oczywiście w analogiczny sposób można załadować inne pliki jak np. Excel i dodać trochę dynamizmu do tego ładowania jednak wszystko jeszcze przed nami. Jedyne na co warto zwrócić uwagę w tym miejscu to fakt, iż ścieżką do folderu powinna być ścieżka sieciowa w ramach sieci firmowej – dzięki temu podejściu dostęp do folderu nie będziemy mieli tylko my, ale również inni użytkownicy w naszym przedsiębiorstwie. W kolejnych artykułach przedstawione zostaną inne funkcjonalności związane z Power BI, które poszerzą naszą wiedzę na temat tego narzędzia – zapraszam!

5 Comments

  1. Witam
    Widzę, że się nie oszczędzasz (a to dobrze…dla mnie:)). Mam uwagi na razie czysto organizacyjne:
    1. Przykładowe pliki File 1,File 2,File 3 są przetworzone z tabel przykładowej bazy danych (np. AdventureWorksDW2014)? Jeżeli tak to z których? Chciałbym poćwiczyć sobie na identycznych przykładach…. Jeżeli nie – czy istnieje możliwość podłączenia pliczków (tym bardziej, że są lekkie) do artykułu?
    2. Czy jest szansa, że po kliknięciu na zrzut ekranu/okna będzie się ono powiększało?
    Generalnie o samym Power BI: już na początku tej przygody widać, że jest to potężne narzędzie… Dzisiaj przed wyjściem do pracy postanowiłem sobie na chwilkę włączyć aplikację i… bawiłem się tak dobrze (mozolnie odkrywając i testując kilka funkcji), że zadzwonił do mnie szef z zapytaniem czy przychodzę do pracy… Chociaż skręcam bardziej w kierunku typowo bazodanowym, początki zabawy z PBI pozwalają rozwijać horyzonty, zdobywać nową wiedzę (a nuż kiedyś się przyda?)no i zabawy.
    Mam nadzieję, że będziesz nadal kontynuował cykl z Power BI.

  2. Z serią chciałem już wystartować dużo wcześniej i napisałem kilka artykułów i teraz cyklicznie są publikowane 🙂 Obecnie jedynie odpisuje na maile i komentarze więc można powiedzieć, że się oszczędzam 🙂

    Jeśli chodzi o pliki to sam je stworzyłem 🙂 Wystarczy stworzyć sobie proste pliki tekstowe i wkleić zawartość:

    File1.txt
    id,ProductName,Color
    1,Glasses,Black
    2,Shoes,Yellow
    3,Shirt,White

    File2.txt
    id,ProductName,Color
    10,Shirt,Red

    File3.txt
    id,ProductName,Color
    1000,Trousers,Blue

    W przypadku jakiś niestandardowych plików postaram się dołączać do posta lub też napisać jak je przygotować.

    2. Jeśli chodzi o powiększanie – zmniejszanie screenów – postaram się coś takiego zaimplementować w wolnej chwili 🙂

    Zgadzam się, że to potężne narzędzie w którym można zrobić niemal wszystko i chyba jest to najbardziej rozwijane oprogramowanie w stajni Microsoftu (patrząc na to, że co miesiąc dostajemy szereg nowych funkcjonalności). Samą serię będę kontynuował – w najbliższym czasie z całą pewnością pojawi się jeszcze sporo artykułów na ten temat.

    • Dziękuję pięknie za dane do plików 🙂 i odpowiedzi…
      Jeszcze jedna sprawa, o której nie wspomniałem w poprzednim komentarzu:
      bardzo fajny layout – trafił mi w gust (potrafię się w nim szybciej znaleźć niż w poprzednim)

  3. Cześć,
    mam następujący problem.
    W pewnym folderze z którego chcę pobierać dane za pomocą PQ codziennie są sapisywane dane dot. ilości palet na magazynie w formacie CSV. Każdy plik ma w swojej nazwie ciąg cyfr “_20210531..”.
    Czy jest możliwość aby przy zaciąganiu danych przy pomocy PQ dodac do każdego wiersza z zaciąganego pliku datę tego pliku?

    Z góry dziękuję za pomoc 🙂

    • Cześć, tak jak możesz zauważyć przy ładowaniu danych z folderu dostajemy pewne atrybuty związane z każdym plikiem – nazwa pliku zawiera się w atrybucie “name” dlatego możesz bez większego problemu wyciąć interesującą Cię informację i przyporządkować do każdego wiersza 🙂

Leave a Reply