Obliczanie poziomu w hierarchii pracowników przy pomocy Power Query
Czasami zachodzi potrzeba obliczenia poziomu w hierarchii. Może to dotyczyć zarówno struktury organizacyjnej (np. liczby przełożonych), jak i struktury projektu, gdzie należy określić, w ilu zadaniach nadrzędnych zawiera się analizowane zadanie.
W tym artykule rozważymy strukturę organizacji (Rysunek 1), która zawiera osoby z różnych działów i na różnych stanowiskach. Wyznaczymy poziom w hierarchii pracownika z pomocą Power Query i stworzonej przez nas funkcji rekurencyjnej (funkcji, która będzie uruchamiać samą siebie).
Ręczne podejście
Jeśli musielibyśmy obliczyć ręcznie poziomy w hierarchii, nasze podejście dla przykładowej Joanny Maj (Manager IT, Id=6) wyglądałoby mniej więcej tak:
- Odnalezienie wiersza z analizowanym pracownikiem.
- Sprawdzenie ID przełożonego dla Joanny => 3.
- Zwiększenie poziomu hierarchii o 1.
- Odnalezienie wiersza z przełożonym (Rafał Pawłowski).
- Sprawdzenie ID przełożonego dla Rafała => 1.
- Zwiększenie poziomu hierarchii o 1.
- Odnalezienie wiersza z przełożonym (Adam Nowicki).
- Sprawdzenie ID przełożonego dla Adama => pusta komórka (nie ma przełożonego).
- Zakończenie procesu => zakładając, że Prezes jest na 1 poziomie hierarchii, to w trakcie ręcznej analizy zwiększyliśmy poziom hierarchii dwukrotnie. Oznacza to, że Joanna Maj jest na trzecim poziomie hierarchii w firmie.
Możemy zaobserwować, że przy podejściu ręcznym mamy powtarzające się czynności:
- Szukanie wiersza pracownika/przełożonego.
- Sprawdzanie ID przełożonego.
- Zwiększanie poziomu hierarchii.
Jest to pętla czynności, które musimy systematycznie powtarzać. Z doświadczeń programistów wiemy, że każda pętla musi mieć warunek wyjścia, żeby nie wykonywać się w nieskończoność. W naszym przykładzie jest nim odnalezienie pracownika, dla którego kolumna ID przełożonego jest pusta (w Power Query znajduje się w niej wartość null).
Załadowanie danych do Power Query
Po przeprowadzeniu analizy czynności możemy przejść do pobrania danych do Power Query i napisania funkcji z kodem M, który przekształca opis, na konkretne funkcje/przekształcenia.
Żeby załadować dane z tabeli Excela do Edytora Power Query, zaznaczamy w niej pojedynczą komórkę, a następnie na karcie Dane klikamy w polecenie „Z tabeli/zakresu” (Rysunek 2).
Jego kliknięcie spowoduje załadowanie tabeli do Power Query. W większości sytuacji do zapytania zostanie dodany automatycznie krok wykrywający typy danych, ale nie jest istotny dla uzyskania poprawnego wyniku, więc nawet jeśli krok się nie doda, możemy przejść do dalszych przekształceń.
W pierwszej kolejności warto pamiętać zmienić domyślną nazwę zapytania (StrukturaFirmy – nazwa tabeli, z której zostały pobrane dane) na bardziej odpowiadającą oczekiwanemu wynikowi, np.: Hierarchia.
W kolejnym kroku rozpoczynamy tworzenie funkcji niestandardowej w języku M. Ten proces zaczynamy od dodania pustego zapytania, czyli na karcie Narzędzia główne edytora Power Query rozwijamy polecenie „Nowe źródło”, przechodzimy do elementu „Inne źródła” i wybieramy opcję „Puste zapytanie” (Rysunek 3).
Wykorzystałeś swój limit bezpłatnych treści
Pozostałe 62% artykułu dostępne jest dla zalogowanych użytkowników portalu. Zaloguj się, wybierz plan abonamentowy albo kup dostęp do artykułu/dokumentu.







