<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>edytor zaawansowany &#8211; SkuteczneRaporty.pl</title>
	<atom:link href="https://skuteczneraporty.pl/tag/edytor-zaawansowany/feed/" rel="self" type="application/rss+xml" />
	<link>https://skuteczneraporty.pl</link>
	<description>Zautomatyzuj raportowanie w swojej firmie. Praktyczna wiedza dla analityków, kontrolerów i menedżerów.</description>
	<lastBuildDate>Wed, 18 Sep 2019 17:05:37 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://skuteczneraporty.pl/wp-content/uploads/2025/09/cropped-skuteczneraporty-FAVICONA-1-32x32.png</url>
	<title>edytor zaawansowany &#8211; SkuteczneRaporty.pl</title>
	<link>https://skuteczneraporty.pl</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query</title>
		<link>https://skuteczneraporty.pl/dni-robocze-miedzy-dwiema-datami-z-uwzglednieniem-polskich-swiat-w-power-query/</link>
					<comments>https://skuteczneraporty.pl/dni-robocze-miedzy-dwiema-datami-z-uwzglednieniem-polskich-swiat-w-power-query/#respond</comments>
		
		<dc:creator><![CDATA[Bartosz Czapiewski]]></dc:creator>
		<pubDate>Wed, 18 Sep 2019 17:05:37 +0000</pubDate>
				<category><![CDATA[Power Query]]></category>
		<category><![CDATA[edytor zaawansowany]]></category>
		<category><![CDATA[funkcje Power Query]]></category>
		<category><![CDATA[język M]]></category>
		<category><![CDATA[kurs Power Query]]></category>
		<category><![CDATA[NetWorkingDays]]></category>
		<guid isPermaLink="false">https://excelbi.pl/?p=10082</guid>

					<description><![CDATA[Sezon urlopowy powoli dobiega końca, a do kolejnej dłuższej przerwy pozostało kilka tygodni. Ile dni roboczych konkretnie? Zwykle nie pracujemy 7 dni w tygodniu, zatem odpowiedzią wcale nie jest liczba tygodni razy 7. Na drodze stoją nam bowiem takie przeszkody jak weekendy i święta. Jak obliczyć liczbę dni roboczych między 2 datami w Power Query? [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Sezon urlopowy powoli dobiega końca, a do kolejnej dłuższej przerwy pozostało kilka tygodni. Ile dni roboczych konkretnie? Zwykle nie pracujemy 7 dni w tygodniu, zatem odpowiedzią wcale nie jest liczba tygodni razy 7. Na drodze stoją nam bowiem takie przeszkody jak weekendy i święta. Jak obliczyć liczbę dni roboczych między 2 datami w Power Query?<span id="more-10082"></span></p>



<h1 class="wp-block-heading">Gdy Excel bywa lepszy niż Power Query</h1>



<p>Policzenie liczby dni roboczych w Excelu nie stanowi żadnego problemu – wystarczy funkcja DNI.ROBOCZE (ang. <em>NETWORKDAYS</em>), by zrobić to za jednym przeciągnięciem formuły. Jak z tym jest w Power Query? Niestety odpowiednik funkcji DNI.ROBOCZE trzeba stworzyć samodzielnie w języku M w Power Query. Skoro i tak musimy stworzyć własne rozwiązanie, warto uwzględnić w takiej funkcji świąteczne dni wolne od pracy dla Polski. Do dzieła!</p>



<p>Inspiracją do tego artykułu jest <a href="https://www.powerquery.training/networkdays/" target="_blank" rel="noopener">wpis</a> Dominika Petri.</p>



<h1 class="wp-block-heading">Algorytm funkcji DNI.ROBOCZE</h1>



<p>Algorytm to wszystkie kroki, które powinien wykonać program (lub w tym przypadku funkcja), które są niezbędne, aby otrzymać pożądany efekt. W naszej funkcji zastosujemy ten sam algorytm, o którym pisze Dominik, ale dodatkowo uwzględnimy tabelę z wypisanymi datami świąt w latach 2019–2020. Zatem:<br />• Stworzymy listę wszystkich dat między datą początkową i końcową,<br />• Dodamy kolumnę z informacją o dniu tygodnia,<br />• Dodamy kolumnę z informacją, czy dany dzień był dniem świątecznym wolnym od pracy (nowość),<br />• Zaktualizujemy dni tygodnia, by dni świąteczne wyświetlały się jako szczególny dzień (nowość),<br />• Wyfiltrujemy soboty i niedziele oraz dni świąteczne,<br />• Liczba dni roboczych jest równa liczbie pozostałych dni na liście, czyli liczbie wierszy.</p>



<h1 class="wp-block-heading">Liczba dni roboczych w Power Query krok po kroku</h1>



<p>Zacznijmy od listy dat między datą początkową i końcową. W zakładce Strona główna &gt; Dane zewnętrzne kliknij na strzałkę poniżej Pobierz dane i wybierz Puste zapytanie.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10136" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-1.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query"></figure>



<p>Otworzy się edytor Power Query wraz z możliwością wpisania formuły pierwszej funkcji. Na początek skorzystamy z funkcji List.Dates wpisując komendę <code>=List.Dates</code> i klikając Enter.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10138" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-2.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 1"></figure>



<p>Funkcja ta przyjmuje 3 argumenty: datę początkową, liczbę wierszy z datami, które mają się pokazać oraz jaki jest odstęp między kolejnymi datami. Wpiszemy przykładowe parametry i klikniemy Wywołaj. Załóżmy, że chcemy policzyć liczbę dni roboczych od 31 października 2019 w ciągu następnych 15 dni.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10139" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-3-1024x456.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 2"></figure>



<p>Efektem tego zapytania jest lista, którą należy przekonwertować do formatu tabeli. W zakładce Przekształć w Narzędziach do obsługi list kliknij Konwertuj &gt; Do tabeli i skorzystaj z automatycznych stawień konwertera.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10140" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-4.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 3"></figure>



<p>Dostaniesz tabelę, która jest gotowa do dalszej obróbki. Zwróć uwagę na kilka elementów. Po pierwsze (1) w pasku do wpisywania funkcji pokazał się kod, który tę tabelę wygenerował. Po drugie (2) po prawej stronie w pasku Ustawienia zapytania w zakładce Zastosowane kroki możesz śledzić, co po kolei było wykonywane w obróbce tabeli. Zauważ, że w funkcji (tekst w pasku na górze) odwołujemy się do efektu poprzedniego przekształcenia – wykorzystana funkcja Table.FromList korzysta ze zmiennej Źródła (3).</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10141" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-5-1024x385.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 4"></figure>



<p>Następnie dodajmy kolumnę z dniami tygodnia. Kliknij Dodaj kolumnę &gt; Z daty i godziny, a następnie strzałkę pod ikonką Data &gt; Dzień &gt; Dzień tygodnia.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10142" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-6.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 5"></figure>



<p>Power Query numeruje dni od 0 do 6; 0 to pierwszy dzień tygodnia. Jak zidentyfikować, od którego z nich zaczyna się tydzień? Można kalendarzem, ale także ustawiając to jasno w kodzie. Do wyświetlonej w górnym pasku formuły dopisz po przecinku <code>Day.Monday</code> zaraz za [Column1].</p>



<p>Twoim pierwszym dniem tygodnia wcale nie musi być poniedziałek. Gdy wpisywałeś formułę zapewne zauważyłeś, że jako początkowy można ustawić każdy dzień tygodnia. Zobacz też, w jaki sposób Power Query odwołuje się do wcześniej zastosowanych kroków; z użyciem krzyżyka # i wpisując nazwę w cudzysłów.</p>



<p>Dodajmy dni świąteczne w Polsce w latach 2019–2020. Z <a href="https://www.kalendarzswiat.pl/swieta/wolne_od_pracy/2019" target="_blank" rel="noopener">tej</a> i <a href="https://www.kalendarzswiat.pl/swieta/wolne_od_pracy/2020" target="_blank" rel="noopener">tej</a> strony skopiowałem i wkleiłem do Excela wszystkie świąteczne dni w Polsce.</p>



<p>Przez Power Query na Stronie głównej w Nowe zapytanie &gt; Nowe Źródło &gt; Excel wgrałem plik do Power BI.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10143" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-7-1024x626.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 6"></figure>



<p>Po kliknięciu OK nowa tabela znajdzie się po lewej stronie w bazie Zapytań. Wróć do tabeli z funkcją, automatycznie nazwaną <em>Wywołano funkcję</em>. Połączmy ją z tabelą z datami ze świętami scalaniem lewym zewnętrznym po dacie (więcej o rodzajach scalania tabel znajdziecie <a href="https://skuteczneraporty.pl/powerquery-cz-2-scalanie-oraz-dolaczanie/">tu</a>).</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10144" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-8.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 7"></figure>



<p>Rozpakuj dołączoną kolumnę klikając w znaczek w prawym górnym rogu dodanej kolumny. Odznacz datę – wystarczy sama nazwa święta dla lepszej orientacji – a następnie kliknij OK.</p>



<p>Stwórzmy nową kolumnę, w której dni świąteczne przyjmą wspólną wartość poza dniami tygodnia, np. 7. Posłużymy się dodawaniem kolumny warunkowej, którą można znaleźć w zakładce Dodaj kolumnę &gt; Ogólne &gt; Kolumna warunkowa. Jeśli przy dacie nie ma żadnego święta (jest NULL w kolumnie), ma przyjąć, że dzień jest standardowy. Jeśli jest to święto, zamienia dzień na 7.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10145" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-9-1024x482.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 8"></figure>



<p>Efektem zapytania jest kolumna Dni robocze.</p>



<p>Kliknij na strzałkę w prawym górnym rogu dodanej kolumny i odfiltruj sobotę, niedzielę oraz święta (wartości 5, 6 i 7) i wciśnij OK.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10146" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-10.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 9"></figure>



<p>To tabela końcowa! Liczba wierszy, które pozostały to liczba dni roboczych między 31 października 2019 a 14.11.2019. Policzymy je funkcją <code>Table.RowCount</code> Naciśnij ikonkę fx i przed #&#8221;Przefiltrowano wiersze&#8221; wpisz Table.RowCount tak jak na obrazku. Pamiętaj o nawiasach okrągłych!</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10147" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-11.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 10"></figure>



<p>Wciśnij Enter. Pojawi Ci się już nie tabela, ale sama liczba – liczba wierszy w tabeli, która pozostała.</p>



<p>Uwzględnimy jeszcze jeden parametr – jeśli data początkowa, od której chcemy policzyć liczbę dni jest późniejsza niż data końcowa, to różnica między datami jest liczbą ujemną. Zamień zatem kod zliczający wiersze na</p>



<p><code>= if Początek &lt;= Koniec then Table.RowCount(#"Przefiltrowano wiersze") else Table.RowCount(#"Przefiltrowano wiersze") * (-1)</code></p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10148" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-13-1024x334.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 11"></figure>



<p>Ups, mamy błąd! Wynika on z użycia nazw, które nie są zdefiniowane – Początek i Koniec będą naszymi datami początkowymi i końcowymi w funkcji docelowej. Zatem napiszmy funkcję!</p>



<h1 class="wp-block-heading">Zamiana przykładowej procedury na funkcję</h1>



<p>Power Query i jego Zastosowane kroki w Ustawieniach zapytania działają trochę analogicznie jak nagrywanie makr w Excelu. Zapisują się Twoje kroki w obróbce danych, by potem nie dość, że móc do nich wrócić, to jeszcze bez znajomości języka M korzystać z gotowych wygenerowanych kodów przy przekształceniach na funkcje.</p>



<p>Pod ścieżką Strona główna &gt; Zapytanie &gt; Edytor zaawansowany ukryte jest pole do pisania poleceń w języku M. Zobaczysz wszystkie kroki, które wykonaliśmy, by dojść od wygenerowania ciągu dat do liczby dni roboczych i błędu w związku z nazwami.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10149" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-14-1024x285.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 12"></figure>



<p>Zacznijmy od definicji zmiennych, które będziemy wprowadzać do funkcji. W 11 linijce wykorzystujemy Początek i Koniec, które są datami początkowymi i końcowymi. Efektem działania funkcji jest zmienna o typie liczby – liczba dni roboczych. W pierwszej linijce wpisz zatem:</p>



<p><code>(Początek as date, Koniec as date) as number =&gt;</code></p>



<p>i wciśnij Enter. Wprowadzimy jeszcze kilka zmian; rozbijemy Źródło na funkcję i wywołanie dat. Teraz</p>



<p> Źródło odwołuje się do wcześniej stworzonego zapytania. Wstawmy tam samą funkcję List.Dates, a linijkę niżej dopiszmy jej wywołanie według wzoru:</p>



<p><code>Źródło = List.Dates,#"Wywołanie dat" = Źródło(#date(2019, 10, 31), 15, #duration(1, 0, 0, 0)), <br />#"Przekonwertowane na tabelę" = Table.FromList(#"Wywołanie dat", Splitter.SplitByNothing(), null, null, ExtraValues.Error), </code></p>



<p>Kod powinien wyglądać tak:</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10150" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-15-1024x372.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 13"></figure>



<p>Dlaczego zmieniamy aż 3 linijki? W każdej kolejnej odwołujemy się do wyników poprzedniego zapytania; dodając środkowe, trzeba zadbać o odpowiednie nazwy argumentów w następnej linijce. Na koniec pracy w kodzie zamieńmy stałe parametry wywołania funkcji List.Dates na te zależne od Początku i Końca. Zamień linijkę dotyczącą #”Wywołania dat” na:</p>



<p><code>#"Wywołanie dat" = <br /> if Początek &lt;= Koniec then <br /> Źródło(Początek, Duration.Days(Koniec-Początek)+1, Duration.From(1)) <br /> else <br /> Źródło(Koniec, Duration.Days(Początek-Koniec)+1,Duration.From(1)), </code></p>



<p>Gdy wciśniesz Gotowe, Twoim oczom ukaże się interfejs do wprowadzenia dat początkowych i końcowych – właśnie stworzyłeś autorską funkcję niestandardową! Zanim jednak przykładowo ją wywołamy, zmień jej nazwę. Po lewej stronie, w Zapytaniach, widnieje nazwa <em>Wywołano funkcję</em>. Możesz dowolnie zmieniać nazwę; ja nadam jej nazwę DniRoboczeBezSwiat.</p>



<p>Spróbujmy ją wywołać.</p>



<figure class="wp-block-image"><img decoding="async" class="wp-image-10151" src="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-mi%C4%99dzy-dwiema-datami-z-uwzgl%C4%99dnieniem-polskich-%C5%9Bwi%C4%85t-w-Power-Query-16.png" alt="Dni robocze między dwiema datami z uwzględnieniem polskich świąt w Power Query 14"></figure>



<p>Działa! Spróbujmy teraz w prawdziwej tabeli z danymi. W Edytorze Power Query wybierz Narzędzia główne &gt; Zapytaj &gt; Zamknij i zastosuj, a następnie wgraj bazę szkoleniową ze sprzedażą w latach 2011–2014. Otwórzmy ją w Power Query, a następnie w Dodaj kolumnę &gt; Ogólne &gt; Wywołaj funkcję niestandardową jako Początek wprowadź Datę zamówienia, a jako Koniec Datę wysyłki. Kliknij OK.</p>



<p>Funkcja bez problemu policzy liczbę dni roboczych między datami w kolumnach.</p>



<h1 class="wp-block-heading">Szablon funkcji do pobrania w Power Query w Excelu</h1>



<p>Tu możesz pobrać <a href="https://skuteczneraporty.pl/wp-content/uploads/2019/09/Dni-robocze-w-Power-Query.zip">plik Excel z funkcją Power Query do liczenia dni roboczych</a> oraz plik z dniami świątecznymi (podmień jego ścieżkę w kroku Źródło).</p>
]]></content:encoded>
					
					<wfw:commentRss>https://skuteczneraporty.pl/dni-robocze-miedzy-dwiema-datami-z-uwzglednieniem-polskich-swiat-w-power-query/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Jak wykonać mnożenie macierzy w Power Query?</title>
		<link>https://skuteczneraporty.pl/jak-wykonac-mnozenie-macierzy-w-power-query/</link>
					<comments>https://skuteczneraporty.pl/jak-wykonac-mnozenie-macierzy-w-power-query/#respond</comments>
		
		<dc:creator><![CDATA[Bartosz Czapiewski]]></dc:creator>
		<pubDate>Tue, 14 May 2019 15:05:29 +0000</pubDate>
				<category><![CDATA[Power Query]]></category>
		<category><![CDATA[edytor zaawansowany]]></category>
		<category><![CDATA[edytor zapytań]]></category>
		<category><![CDATA[funkcje Power Query]]></category>
		<category><![CDATA[grupowanie]]></category>
		<category><![CDATA[język M]]></category>
		<category><![CDATA[kolumna indeksu]]></category>
		<category><![CDATA[kolumna niestandardowa]]></category>
		<category><![CDATA[kolumna przestawna]]></category>
		<category><![CDATA[parametr Power Query]]></category>
		<category><![CDATA[zapytanie Power Query]]></category>
		<guid isPermaLink="false">https://excelbi.pl/?p=9354</guid>

					<description><![CDATA[Macierz… Brzmi jak powrót do czasów liceum i przywołuje w pamięci naukę do matury. W artykule jednak (pomimo że to maj 2019) będzie dużo praktyczniej o macierzach oraz ich zastosowaniach, a także dlaczego warto przenieść się z mnożeniem macierzy do Power Query zamiast pozostać w Excelu. Oraz najważniejsze: jak wymnożyć macierze w Power Query. Jednak [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Macierz… Brzmi jak powrót do czasów liceum i przywołuje w pamięci naukę do matury. W artykule jednak (pomimo że to maj 2019) będzie dużo praktyczniej o macierzach oraz ich zastosowaniach, a także dlaczego warto przenieść się z mnożeniem macierzy do Power Query zamiast pozostać w Excelu. Oraz najważniejsze: jak wymnożyć macierze w Power Query.<span id="more-9354"></span></p>
<h1>Jednak najpierw odrobina teorii … o macierzach</h1>
<p>Macierz to prostokątna tablica zawierająca liczby, symbole i wyrażenia, które ułożone są w wiersze oraz kolumny. Służą do zapisywania dużych zbiorów danych, które są we wzajemnej relacji. Szczególnie ważną rolę pełnią macierze w informatyce oraz statystyce, gdzie często występują ogromne zbiory danych.</p>
<h1>Gdzie można wykorzystać macierze?</h1>
<p>Są wykorzystywane do rozwiązywania skomplikowanych układów równań liniowych. Bardzo ciekawym jest wykorzystanie do modelowania ekranu komputera, który składa się z pikseli ułożonych w wiersze oraz kolumny.</p>
<p>Macierze wykorzystuje oprogramowanie graficzne takie jak Adobe Photoshop, do przetwarzania transformacji linowych w celu renderowania obrazów.</p>
<p>W fizyce macierze znajdują zastosowanie w badaniach obwodów elektrycznych, mechanice kwantowej i optyce. Macierze wykorzystywane są do dokonywania dokładanych obliczeń pogrzebnych w pracy mechaniki kwantowej.</p>
<p>Macierze wykorzystywane są również do kodowania i szyfrowania wiadomości.</p>
<p>W robotyce i automatyce macierze tworzą podstawowe ruchy robota.</p>
<p>Macierze to również struktury do przechowywania danych śledzenia informacji o użytkownikach, służą do kompresji informacji elektronicznych, czy przechowywania danych biometrycznych, ale także informacji o populacji.</p>
<p>Transformacje macierzy, które dają doskonale skalibrowane obliczenia, wykorzystuje się w sieciach elektronicznych, samolotach, statkach kosmicznych oraz inżynierii chemicznej.</p>
<p>Dla mnie osobiście najbardziej interesującym zastosowaniem macierzy są wyszukiwarki internetowe np. Google. W tym konkretnym przypadku zastosowany jest algorytm PageRank (PR), który wykorzystuje macierze oraz ich wartości i wektory własne. Wyszukiwarka przyporządkowuje stronom internetowym pewien wskaźnik, którego początkiem był PageRank. Im jest o wyższy tym strona wyżej pojawia się w wyszukiwarce. Wartość PR powstaje w oparciu o jakość i ilość linków prowadzących do danej strony www.</p>
<p>Oczywiście nie są to wszystkie zastosowania, ponieważ macierze dotykają wielu dziedzin, a wymienione tu to tylko przykłady.</p>
<h1>Na czym polega mnożenie macierzy?</h1>
<p>Na mnożeniu wierszy pierwszej macierzy przez kolumny drugiej macierzy. By wymnożyć macierze musi być spełniony warunek : pierwsza macierz ma tyle kolumn ile druga wierszy.</p>
<p><img fetchpriority="high" decoding="async" class="aligncenter wp-image-9355 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query1.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 34" width="765" height="218"></p>
<h1><strong>Dlaczego mno</strong><strong>żenie macierzy w Power Query?</strong></h1>
<p>W Excelu do mnożenia macierzy można wykorzystać wbudowaną funkcję MACIERZ.ILOCZYN, czyli podać zakresy dwóch tablic, które między siebie miałyby być wymnożone. Niestety jeżeli zmienią się wymiary tablic, wówczas formułę należy zaktualizować oraz ponownie przeliczyć przy pomocy Ctrl + Shift + Enter (ponieważ jest to formuła tablicowa).</p>
<p>Jednak operowanie na Power Query pozwala zapomnieć o konieczności aktualizacji działania procedury, gdy zmieni się zakres poszczególnych macierzy.</p>
<h1>Mnożenie macierzy w Power Query</h1>
<p>Potrzebuję dwóch macierzy A i B jako zdefiniowane zakresy w Excel. Zacznę od pobrania i modyfikacji pierwszej macierzy do Power Query: <em>Dane &gt; Pobieranie i przekszta</em><em>łcanie &gt; Z tabeli</em></p>
<p><img decoding="async" class="aligncenter wp-image-9356 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query2.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 35" width="620" height="150"></p>
<p>Kolejne transformacje tabeli doprowadzą ją do postaci trzykolumnowej: <em>wiersz, kolumna oraz warto</em><em>ść.</em></p>
<p>Wybieram <em>Dodaj kolumn</em><em>ę &gt; Dodaj kolumn</em><em>ę indeksu &gt; od 1. </em></p>
<p><img decoding="async" class="aligncenter wp-image-9357 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query3.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 36" width="614" height="232"></p>
<p>Zostanie dodana nowa kolumna z numerem wiersza. Wybieram ją i prawym przyciskiem myszy rozwijam menu podręczne z którego wybieram <em>Anuluj przestawienie innych kolumn.</em></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-9358 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query4.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 37" width="615" height="294"></p>
<p>Operacja ta powoduje przekształcenie macierzy w wyglądu zbliżony do oczekiwanego. Należ jeszcze oczyścić kolumnę <em>Atrybut</em> do form liczbowej.</p>
<p>Kolejne kroki do wykonania to :</p>
<ol>
<li>Zamiana w drugiej kolumnie słowa <em>ColumnX </em>na <em>X </em>: <em>PP myszy &gt;</em> <em>zamie</em><em>ń warto</em><em>ści &gt; </em>w polu <em>Warto</em><em>ść do znalezienia</em> wpisuję <em>Column, Zamie</em><em>ń na </em>pozostawiam puste<img loading="lazy" decoding="async" class="aligncenter wp-image-9359 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query5.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 38" width="615" height="271"></li>
<li>Po powyższej operacji kolumna ma format tekstowy, więc zmieniam go na liczbowy : <em>PP myszy &gt; Zmie</em><em>ń typ &gt; Liczba ca</em><em>łkowita <img loading="lazy" decoding="async" class="aligncenter wp-image-9360 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query6.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 39" width="615" height="212"></em></li>
<li>Zmieniam nazw dwóch pierwszych kolumn na<em>: Wiersz, Kolumna</em> co też kończy całą operację zmian na tej tablicy.</li>
</ol>
<h2>Tworzenie funkcji</h2>
<p>Na początku zmieniam nazwę zapytania na <em>PrzygotowanieMacierzy. </em>Następnie zmieniam ciąg wykonanych operacji na funkcję. Wchodzę do <em>Edytora zaawansowanego </em>i dodaję w pierwszej linii wyrażenie <em>(TableName) =&gt;</em></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-9361 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query7.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 40" width="157" height="47"></p>
<p>Usuwam cały wiersz „<em>Zmieniono typ</em><em>”</em> , który jest zbędny (pozostawienie go spowoduje, że funkcja nie będzie uniwersalna, ponieważ zawiera odwołania do nazw poszczególnych kolumn). W kolejnym wierszu <em>#</em><em>”Zmieniono typ</em><em>” </em>zmieniam na <em>#</em><em>”Źr</em><em>ód</em><em>ło</em>”(ponieważ wcześniej usunąłem krok <em>Zmieniono ty</em>p)<em>.</em></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-9362 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query8.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 41" width="612" height="298"></p>
<p>W miejscu deklaracji źródła danych (<em>Excel.CurrentWorkbook</em>) zmieniam nazwę „MacierzA” na <em>TableName &gt; Gotowe. </em>Poniżej widok finalnego polecenia.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-9363 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query9.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 42" width="607" height="304"></p>
<p>Dzięki wykonanym zmianom po prawej stronie, w oknie nawigatora jest widoczna funkcja. Po wybraniu jej z listy pojawia się okno do wprowadzenia parametru dla funkcji (wcześniej wprowadzonego <em>TableName)</em>. Wprowadzam nazwę zakresu, który ma być przekształcony w wyniku działania funkcji : <em>MacierzA &gt; Wywo</em><em>łaj.</em></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-9364 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query10.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 43" width="505" height="219"></p>
<p>Dzięki funkcji powstaje nowe zapytanie, zmieniam jego nazwę na <em>MacierzA. </em>Takie same kroki wykonuję dla drugiej macierzy, zmieniam nazwę zapytania na <em>MacierzB. </em></p>
<h2>Tworzenie tabeli połączonej</h2>
<p>W następnej kolejności utworzę tabelę połączoną gdzie dla kolejnych kolumn Macierzy A dopasuję wiersze z Macierzy B. Zaznaczam na liście zapytań <em>MacierzA &gt; Narz</em><em>ędzia g</em><em>łówne &gt;Po</em><em>łącz &gt; Scal zapytania &gt; Scal zapytania jako nowe.  </em>Z <em>Macierzy A </em>zaznaczam <em>Kolumn</em><em>ę </em>zaś z <em>MacierzyB </em>zaznaczam <em>Wiersz. </em>Jako rodzaj połączenia tabel wybieram <em>Lewe zewn</em><em>ętrze &gt; OK.</em></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-9365 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query11.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 44" width="640" height="499"></p>
<p>W wyniku operacji pojawia się nowa kolumna, której nazwę zmieniam na <em>B</em>.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-9366 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query12.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 45" width="500" height="197"></p>
<p>Klikam a podwójną strzałkę w kolumnie B i z listy wyboru oznaczam <em>Wiersz, </em> pozostawiam zaznaczoną opcję <em>U</em><em>żyj oryginalnej nazwy kolumny jako prefiksu (co pozwoli mi p</em><em>óźniej odnale</em><em>źć si</em><em>ę  w danych).</em></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-9367 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query13.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 46" width="487" height="288"></p>
<p>Powstaje tablica zawierająca wszystkie kombinacje <em>Macierzy A</em> oraz <em>B</em>, które niezbędne są do wymnożenie między siebie macierzy. Znajdują się one w kolumnie <em>Warto</em><em>ść</em> oraz <em>B.Warto</em><em>ść. </em>By wymnożyć macierze musimy wymnożyć między siebie kolumny <em>Warto</em><em>ść</em> oraz <em>B.Warto</em><em>ść. </em> W tym celu stawiam nową kolumnę <em>Dodaj kolumn</em><em>ę &gt; Kolumna niestandardowa. </em></p>
<p>Nazywam ją <em>AB </em>oraz wprowadzam formułę wymnożenia kolumn między siebie.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-9368 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query14.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 47" width="601" height="343"></p>
<p>Wynikiem mnożenia macierzy jest macierz o ilości wiersz z Macierz A oraz ilości kolumn z Macierzy B. Zaznaczam kolumnę Wiersz oraz B.Kolumna <em>Przekszta</em><em>łć &gt; Grupowanie wed</em><em>ług</em></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-9369 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query15.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 48" width="604" height="402"></p>
<p>W okna wprowadzam wybory jak powyżej, grupuję dane według numery wierszy oraz kolumn, w nowej kolumnie. Cała operacja powoduje ogromne zmniejszenie się wielkości tabeli.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-9370 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query16.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 49" width="352" height="291"></p>
<p>Dane nie są jednak jeszcze w ostatecznej, oczekiwanej formie. Zaznaczam kolumnę B.Kolumna <em>Przekszta</em><em>łć &gt; Dowolna kolumna &gt; Kolumna przestawna</em></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-9371 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query17.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 50" width="622" height="225"></p>
<p>Wskazuję która kolumna jest kolumną z wartościami oraz jaka operacja ma być wykonana na danych,  tym przypadku <em>Suma.</em></p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-9372 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query18.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 51" width="602" height="256"></p>
<p>Na koniec powstaje mała macierz o spodziewanych rozmiarach.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-9373 size-full" src="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query19.jpg" alt="Jak wykonać mnożenie macierzy w Power Query? 52" width="381" height="127"></p>
<h1>Pobierz plik</h1>
<p>Jeżeli chcesz sam przejść wszystkie kroki samodzielnie, pobierz plik <a href="https://skuteczneraporty.pl/wp-content/uploads/2019/05/Mno%C5%BCenie-macierzy-w-Power-Query.xlsx">Mnożenie macierzy w Power Query</a>.</p>
<h1>Źródło pomysłu na artykuł</h1>
<p>Autor pomysłu: Bill Szysz</p>
<p>https://datachant.com/2016/06/07/faster-matrix-mulitplication/</p>
]]></content:encoded>
					
					<wfw:commentRss>https://skuteczneraporty.pl/jak-wykonac-mnozenie-macierzy-w-power-query/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
