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
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:
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!
- Avoiding Issues: Monitoring Query Pushdowns in Databricks Federated Queries - October 27, 2024
- Microsoft Fabric: Using Workspace Identity for Authentication - September 25, 2024
- Executing SQL queries from Azure DevOps using Service Connection credentials - August 28, 2024
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.
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)
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 🙂