Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Chcę zagłębić się w coś, co nazywa się analizą kombinatoryczną. Można to określić jako dobieranie i układanie elementów zestawów zgodnie z ustalonymi zasadami. Może to zabrzmieć ezoterycznie, ale w rzeczywistości ma kilka bardzo praktycznych przypadków użycia. Możesz obejrzeć pełny film tego samouczka na dole tego bloga.

W tym samouczku pokażę, jak to zrobić za pomocą dodatku Power Query w usłudze LuckyTemplates.

Spis treści

Przykład analizy kombinatorycznej

W tej przykładowej analizie kombinatorycznej zadanie polegało na tym, że mieliśmy listę sześciu magazynów i musieliśmy wygenerować każdy unikalny zestaw trzech. Brzmi to jak dość prosty problem, ale jest to jeden z tych przypadków, w których język naprawdę ma znaczenie.

Prawidłowa odpowiedź to 216, 120, 56 lub 20. Tak więc, w zależności od tego, jak zdefiniujesz ten unikalny zestaw i określone zasady, możesz pomylić się o czynnik 10, jeśli nie uzyskasz zestawu poprawnie.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

I tak, są tu dwa wymiary, które mają znaczenie. Pierwsza to „ czy kolejność ma znaczenie ?” Więc kiedy mówimy o trzech zestawach po trzy, czy ABC jest równoważne z BCA? Więc czy kolejność ma znaczenie? A jeśli kolejność ma znaczenie , mówimy o permutacjach .

Dobrym przykładem permutacji, w których kolejność może mieć znaczenie, jest (mówimy o kontekście magazynu) czas podróży. Bardzo dobrze może się zdarzyć, że jeśli odwiedzisz magazyn A, następnie magazyn B, a następnie magazyn C, czas podróży ze względu na przepływ ruchu z ruchem przeciwnym do ruchu, czas przybycia do każdego magazynu, może być zupełnie inny w zależności od zamówienia w których je odwiedzasz.

Odwrotną stroną tego jest „ kolejność nie ma znaczenia ”, w którym to przypadku mówimy o kombinacjach , a nie permutacjach. Powszechnym przypadkiem użycia jest odległość. Na przykład, w linii prostej, odległość od A do B do C nie będzie się różnić od odległości od B do C do A. Będą one rozpatrywane w kontekście kombinacji.

Kombinacje są uważane za swoje duplikaty. Podczas gdy w kontekście permutacji będą one uważane za unikalne.

A więc, jak widać, zamek szyfrowy naprawdę powinien być zamkiem permutacyjnym, ponieważ w takim przypadku kolejność ma znaczenie, co czyni go permutacją, a nie kombinacją.

Drugim istotnym pytaniem lub wymiarem jest „czy po wybraniu przedmiotu można go wybrać ponownie ?” Na przykład, jeśli wybierzemy A jako nasz pierwszy magazyn, czy możemy ponownie wybrać A, czy też musimy za każdym razem wybierać unikalne elementy?

Termin, którego używamy tutaj, to „ z zamiennikiem ” lub „ bez zamiennika ”. Tak więc, jeśli przedmiot można wybrać ponownie, jest to wymiana, co oznacza, że ​​go wybierasz. I w pewnym sensie wraca do kosza selekcji i ponownie zostaje wybrana. Jeśli odpowiedź brzmi „nie”, to bez wymiany.

I tak widać w tym rozwiązaniu, że permutacje ze zamianą są najmniej restrykcyjne. Więc to ten, który daje nam 216 unikalnych zestawów. A kombinacje bez zamiany są najbardziej restrykcyjne, dając nam 20.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Zamierzamy po prostu użyć tych formuł, aby sprawdzić nasze wyniki dodatku Power Query . Zapamiętamy więc liczby 216, 120, 56 i 20. Przejdźmy teraz do dodatku Power Query i zobaczmy, jak wypadnie ta analiza kombinatoryczna.

Analiza kombinatoryczna: permutacje w dodatku Power Query

W Power Query mam tutaj bardzo prosty przypadek z sześcioma nazwanymi magazynami.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Opracowałem tę funkcję Power Query M, której użyłem do przetwarzania kombinacji i permutacji.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Najpierw rozwinę pierwszy przypadek użycia, czyli permutacje z zamianą , najmniej restrykcyjne z całej gamy. Sposobem na zrobienie tego w dodatku Power Query jest pobranie tej tabeli Warehouses i odwołanie się do niej (w języku DAX używamy CROSSJOIN ).

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Nazwę to Per w Rep (permutacje z zamianą).

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Istnieje wiele sposobów na wykonanie sprzężenia krzyżowego w dodatku Power Query. Najłatwiejszym sposobem, jaki znalazłem, jest po prostu przejście do Add column , a następnie Custom column . W formule kolumny niestandardowej odwołaj się do tabeli Magazyny .

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

A kiedy klikniemy OK, przekonamy się, że generuje zagnieżdżoną tabelę.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Następnie rozwijamy to i usuwamy kliknięcie opcji Użyj nazwy oryginalnej kolumny jako prefiksu .

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

I otrzymujemy tę Lokację.1 , która jest każdą możliwą kombinacją dwóch. Tak więc pierwsze sześć referencji porównuje się z pozostałymi sześcioma kombinacjami. Druga szóstka robi to samo aż do uzyskania 36 różnych zestawów.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Możemy zrobić trzecie, robiąc to ponownie. Idziemy więc Dodaj kolumnę, następnie kolumnę niestandardową, a następnie Magazyny.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

I będziemy mieli 216 wierszy jako permutacje z zamianą.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

I widzicie stąd, 3 kolumny, 216 rzędów.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Następnym przypadkiem użycia są permutacje bez zamiany . To, o czym tutaj myślimy, to w zasadzie wszystko, co ma powtarzający się element. W tej tabeli przyjrzymy się wierszom od 1 do 8.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Aby to zrobić, przyjrzymy się tej funkcji fxSortAndIsDistinct .

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

W Edytorze zaawansowanym możesz zobaczyć, że zasadniczo prosi o tabelę, a następnie wykonuje SortLocs . Ale ważną częścią tutaj dla „z zamianą” lub „bez zamiany” jest to, że jest to funkcja IsDistinct . To, co to robi, to po prostu pobranie listy elementów i określenie prawdy lub fałszu, niezależnie od tego, czy jest odrębne, czy też ma jakieś duplikaty na liście elementów.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Więc idziemy tutaj, wybieramy Perm w Rep i naciskamy Invoke .

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

To da nam te dwie nowe kolumny, SortLocs i IsDistinct . Teraz pamiętaj, że pierwsze osiem rekordów miało duplikaty, a dziewiąty rekord był pierwszym, w którym zobaczyliśmy odrębne pliki . Dlatego dziewiąty wiersz tutaj jest pierwszym, który pojawia się jako prawdziwy.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Jeśli wrócimy myślami do liczb, które mieliśmy w obliczeniach czynnikowych, spodziewamy się 120 rekordów, jeśli usuniemy niewyraźne rekordy. Spróbujmy więc przefiltrować tutaj i usunąć FAŁSZ.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Robiąc to, otrzymujemy tutaj dokładnie 120 wierszy, których oczekujemy. Teraz zmieńmy nazwę na Perm wo Rep (permutacja bez zamiany).

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Analiza kombinatoryczna: kombinacje w Power Query

Teraz wykonamy kombinacje z zamianą . Aby to zrobić, po prostu ponownie wykonujemy proces i powtarzamy krok (wywołana funkcja). Więc to w porządku, że mamy duplikaty, ale nie chcemy zestawów, które mają te same elementy , ale w innej kolejności.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

W tym przypadku, gdy mówimy o kombinacjach. Jeśli pamiętasz, że ABC jest równe BCA jest równe CAB, wszystkie te elementy są uważane za swoje duplikaty. A sposób, w jaki to określamy, to funkcja Sort ( fxSortAndIsDistinct ).

Jeśli wrócimy do funkcji w Edytorze zaawansowanym, zobaczymy dla tej drugiej kolumny, że wzięliśmy tę listę i posortowaliśmy ją alfabetycznie. Następnie wyodrębniliśmy z tej listy wartości oddzielone przecinkami. Teraz mamy każdy zestaw posortowany alfabetycznie. Znormalizowaliśmy kolejność, aby ułatwić znajdowanie duplikatów.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Teraz, jeśli wrócimy do tej wywołanej funkcji, pamiętaj, że szukamy tutaj 56 rekordów. Bierzemy więc tego rodzaju lokalizację ( SortLocs ) i usuwamy nasze duplikaty .

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

W ten sposób otrzymujemy 56 wierszy.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

I tak, to jest nasz trzeci przypadek użycia. Zmieńmy nazwę tego na CC w Rep (kombinacje z zamianą).

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

Podsumujmy to, biorąc ponownie tę permutację z tabelą zastępczą (Perm w Rep) i wykonaj ten sam wzór (invoke). Następnie usuniemy duplikaty (kolumna SortLocs), ponieważ jest to kombinacja i kolejność nie ma znaczenia. Jest bez zamiany, więc chcemy również tylko odrębnej listy . Tak więc klikamy FALSE w kolumnie IsDistinct.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates

W ten sposób otrzymujemy 20 rekordów. A teraz mamy wszystkie cztery przypadki użycia.

Analiza kombinatoryczna przy użyciu Power Query w LuckyTemplates


Sortowanie kolumn tabeli dat w usłudze LuckyTemplates
Przewodnik dla początkujących po kodzie M w usłudze LuckyTemplates
Konwertowanie funkcji tabeli dat na zapytanie tabelaryczne w usłudze LuckyTemplates

Wniosek

Więc teraz mamy wszystkie cztery przypadki użycia. Możesz naprawdę zobaczyć, jak potężne jest to w zakresie rozwijania analizy kombinatorycznej, która daje kontrolę nad zastępowaniem i odrębnymi elementami.

Ma to zastosowanie nawet w niektórych bardziej złożonych przypadkach, gdy masz częściową wymianę lub być może wybierasz zduplikowany element za pierwszym razem, ale nie za drugim razem. Nadal możesz sobie z tym dobrze poradzić w dodatku Power Query .

Mam nadzieję, że uznałeś to za przydatne. Sprawdź poniższe linki, aby uzyskać więcej treści. Możesz również obejrzeć pełny film z tego samouczka poniżej.

Wszystkiego najlepszego!

Leave a Comment

Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr

Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr

W tym samouczku omówimy pakiet dplyr, który umożliwia sortowanie, filtrowanie, dodawanie i zmianę nazw kolumn w języku R.

Funkcje zbierania w Microsoft Power Automate

Funkcje zbierania w Microsoft Power Automate

Odkryj różnorodne funkcje zbierania, które można wykorzystać w Power Automate. Zdobądź praktyczne informacje o funkcjach tablicowych i ich zastosowaniu.

Oceń wydajność kodu DAX w DAX Studio

Oceń wydajność kodu DAX w DAX Studio

Z tego samouczka dowiesz się, jak ocenić wydajność kodów DAX przy użyciu opcji Uruchom test porównawczy w DAX Studio.

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Jak zapisać i załadować plik RDS w R

Jak zapisać i załadować plik RDS w R

Dowiesz się, jak zapisywać i ładować obiekty z pliku .rds w R. Ten blog będzie również omawiał sposób importowania obiektów z R do LuckyTemplates.

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Z tego samouczka języka kodowania DAX dowiesz się, jak używać funkcji GENERUJ i jak dynamicznie zmieniać tytuł miary.

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

W tym samouczku omówiono sposób korzystania z techniki wielowątkowych wizualizacji dynamicznych w celu tworzenia szczegółowych informacji na podstawie dynamicznych wizualizacji danych w raportach.

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

W tym artykule omówię kontekst filtra. Kontekst filtrowania to jeden z głównych tematów, z którym każdy użytkownik usługi LuckyTemplates powinien zapoznać się na początku.

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Chcę pokazać, jak usługa online LuckyTemplates Apps może pomóc w zarządzaniu różnymi raportami i spostrzeżeniami generowanymi z różnych źródeł.

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Dowiedz się, jak obliczyć zmiany marży zysku przy użyciu technik, takich jak rozgałęzianie miar i łączenie formuł języka DAX w usłudze LuckyTemplates.