Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Jeg vil lave et dybt dyk ned i noget, der hedder kombinatorisk analyse. Dette kan defineres som at vælge og arrangere elementer af sæt i overensstemmelse med foreskrevne regler. Det lyder måske esoterisk, men det har faktisk nogle meget praktiske use cases. Du kan se den fulde video af denne tutorial nederst på denne blog.

I denne tutorial viser jeg dig, hvordan du gør dette ved hjælp af Power Query i LuckyTemplates.

Indholdsfortegnelse

Eksempel på kombinatorisk analyse

I dette eksempel på kombinatorisk analyse var opgaven, at vi havde en liste med seks varehuse, og vi skulle generere hvert unikt sæt af tre. Det lyder som et ret ligetil problem, men dette er et af de tilfælde, hvor sproget virkelig betyder noget.

Det korrekte svar her er enten 216, 120, 56 eller 20. Så afhængigt af hvordan du definerer det unikke sæt og de regler, du har foreskrevet, kan du være ude af en faktor 10, hvis du ikke får sættet korrekt.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Og så er der to dimensioner, der betyder noget her. Den første er " betyder rækkefølge noget ?" Så når vi taler om tre sæt af tre, svarer ABC så til BCA? Så betyder rækkefølgen noget? Og hvis orden betyder noget , taler vi om permutationer .

Et godt eksempel på permutationer, hvor orden kunne have betydning, er (vi taler om en lagerkontekst) i tilfælde af rejsetid. Det kan meget vel være, at hvis du besøger lager A, derefter lager B og derefter lager C, kan rejsetiden på grund af trafikafvikling med trafik mod trafik, det tidspunkt, du ankom til hvert lager, være ret forskellig afhængig af ordren hvor du besøger dem.

Bagsiden af ​​det er " orden betyder ikke noget ", i hvilket tilfælde vi taler om kombinationer , ikke permutationer. Den use case her, der er almindelig, er afstand. For eksempel, i luftlinje, vil afstanden fra A til B til C ikke være anderledes end afstanden fra B til C til A. Disse vil blive betragtet i en kombinationssammenhæng.

Kombinationer betragtes som dubletter af hinanden. Mens de i en permutationssammenhæng vil blive betragtet som unikke.

Og så, som du kan se, burde en kombinationslås virkelig være en permutationslås, fordi i så fald betyder rækkefølgen noget, hvilket gør den til en permutation, ikke en kombination.

Det andet spørgsmål eller dimension, der betyder noget, er " når en vare er plukket, kan den så plukkes igen ?" Hvis vi for eksempel vælger A som vores første lager, kan vi så vælge A igen, eller skal vi vælge unikke elementer hver gang?

Udtrykket, vi bruger her, er " med udskiftning " eller " uden udskiftning ". Så hvis en vare kan vælges igen, er det med erstatning, hvilket betyder, at du vælger den. Og på en måde går den tilbage i udvælgelsesspanden og for at blive plukket igen. Hvis svaret er nej, er det uden erstatning.

Og så kan du se i denne løsning, at permutationer med erstatning er de mindst restriktive. Så det er den, der giver os 216 unikke sæt. Og kombinationer uden erstatning er den mest restriktive og giver os 20.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Vi vil bare bruge disse formler som en måde at kontrollere vores resultater på. Så vi husker 216, 120, 56 og 20. Lad os nu hoppe ind i Power Query og se, hvordan denne kombinatoriske analyse udspiller sig.

Kombinatorisk analyse: Permutationer i Power Query

I Power Query har jeg her en meget simpel sag med seks navngivne varehuse.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Og jeg har udviklet denne Power Query M-funktion, som jeg har brugt til at behandle kombinationer og permutationer.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Først vil jeg udvikle det første use case, som er permutationer med erstatning , den mindst begrænsende af flokken. Måden at gøre det på i Power Query er at tage denne Warehouse- tabel og referere til den (i DAX bruger vi CROSSJOIN ).

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Jeg vil kalde dette, Per w Rep (permutationer med erstatning).

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Der er en række måder, hvorpå du kan lave en krydsforbindelse i Power Query. Den nemmeste måde, jeg har fundet, er at gå til Tilføj kolonne og derefter Brugerdefineret kolonne . I den tilpassede kolonneformel skal du henvise til tabellen Varehuse .

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Og det, vi finder, når vi klikker på OK, er, at det genererer en indlejret tabel.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Derefter udvider vi det og fjerner klik på Brug originale kolonnenavn som præfiks .

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Og vi får denne Location.1 , som er enhver mulig kombination af to. Så det tager de første seks referencer mod de andre seks kombinationer. Den anden seks gør det samme hele vejen ned, indtil vi har 36 forskellige sæt.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Vi kan gøre den tredje ved at gøre dette igen. Så vi går til Tilføj kolonne, derefter en brugerdefineret kolonne og derefter Warehouses.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Og vi vil have de 216 rækker som permutationer med erstatning.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Og du kan se nedefra, 3 kolonner, 216 rækker.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Det næste use case er permutationer uden erstatning . Det, vi tænker på her, er dybest set alt, der har et gentaget element. Så i denne tabel skal vi se på fra række 1 til række 8.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

For at gøre det, tager vi et kig på denne funktion, fxSortAndIsDistinct .

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

I den avancerede editor kan du se, at denne grundlæggende beder om en tabel, og derefter udfører den en SortLocs . Men den vigtige del her for "med udskiftning" eller "uden udskiftning" er, at dette er en IsDistinct -funktion. Hvad dette gør, er bare dybest set at tage en liste over elementer og bestemme sandt eller falsk, om det er særskilt, eller om det har nogen dubletter på listen over elementer.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Så vi går her, vælg Perm w Rep og tryk på Invoke .

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Dette vil give os disse to nye kolonner, SortLocs og IsDistinct . Husk nu, at de første otte poster havde dubletter, og den niende rekord var første gang, vi så den adskilte . Derfor er den niende række her den første, der viser sig som sand.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Hvis vi tænker tilbage på de tal, vi havde på faktorberegningerne, forventer vi 120 poster, hvis vi tager de ikke-særskilte poster ud. Så lad os prøve at filtrere her og fjerne FALSK.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Mens vi gør det, får vi hernede præcis de 120 rækker, som vi forventer. Lad os nu omdøbe dette til Perm wo Rep (permutation uden erstatning).

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Kombinatorisk analyse: Kombinationer i Power Query

Nu laver vi kombinationerne med udskiftning . For at gøre det gør vi blot processen igen og gentager trinnet (Invoked Function). Så det er okay, at vi har dubletter, men vi vil ikke have sæt, der har de samme elementer , men i en anden rækkefølge.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

I dette tilfælde, når vi taler om kombinationer. Hvis du husker, at ABC er lig med BCA er lig med CAB, betragtes de alle som dubletter af hinanden. Og måden vi bestemmer det på er gennem Sort-funktionen ( fxSortAndIsDistinct ).

Hvis vi går tilbage til funktionen i den avancerede editor, vil vi se for den anden kolonne, at vi har taget den liste og sorteret den alfabetisk. Derefter udtog vi værdierne afgrænset med komma fra den liste. Nu har vi hvert sæt sorteret alfabetisk. Vi har normaliseret rækkefølgen for at gøre det nemt at finde dubletter.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Hvis vi nu går tilbage til denne påkaldte funktion, så husk, at vi leder efter 56 poster her. Så vi tager denne slags placering ( SortLocs ) og fjerner vores dubletter .

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Med det får vi 56 rækker.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Så dette er vores tredje use case. Lad os omdøbe dette til CC w Rep (kombinationer med erstatning).

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Lad os afslutte dette ved at tage permutationer med erstatningstabellen (Perm w Rep) igen og lave det samme mønster (påkalde). Derefter vil vi fjerne dubletterne (SortLocs-kolonnen), fordi dette er en kombination, og rækkefølgen er ligegyldig. Den er uden erstatning, så vi ønsker også kun den særskilte liste . Så vi klikker fra FALSE i IsDistinct-kolonnen.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates

Hermed får vi 20 poster. Og nu har vi alle fire vores use cases.

Kombinatorisk analyse ved hjælp af Power Query i LuckyTemplates




Konklusion

Så nu har vi alle fire vores use cases. Du kan virkelig se, hvor stærkt dette er i forhold til at udvikle den kombinatoriske analyse, der giver dig kontrol over udskiftning og særskilte elementer.

Dette er endda anvendeligt i nogle mere komplekse tilfælde, hvor du har en delvis erstatning, eller måske vælger et dubletelement for den første, men ikke anden gang. Det kan du stadig godt klare indeni.

Jeg håber, du fandt dette nyttigt. Tjek nedenstående links for mere indhold. Du kan også se den fulde video af denne tutorial nedenfor.

Alt det bedste!


Pipe In R: Tilslutningsfunktioner med Dplyr

Pipe In R: Tilslutningsfunktioner med Dplyr

I denne øvelse lærer du, hvordan du kæder funktioner sammen ved hjælp af dplyr-røroperatoren i programmeringssproget R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX fra LuckyTemplates giver dig mulighed for at returnere rangeringen af ​​et specifikt tal i hver tabelrække, der udgør en del af en liste over tal.

Udpakning af LuckyTemplates-temaer og -billeder fra PBIX

Udpakning af LuckyTemplates-temaer og -billeder fra PBIX

Lær, hvordan du adskiller en PBIX-fil for at udtrække LuckyTemplates-temaer og -billeder fra baggrunden og bruge den til at oprette din rapport!

Excel Formler Snydeark: Mellemvejledning

Excel Formler Snydeark: Mellemvejledning

Excel Formler Snydeark: Mellemvejledning

LuckyTemplates kalendertabel: Hvad er det, og hvordan man bruger det

LuckyTemplates kalendertabel: Hvad er det, og hvordan man bruger det

LuckyTemplates kalendertabel: Hvad er det, og hvordan man bruger det

Python i LuckyTemplates: Sådan installeres og konfigureres

Python i LuckyTemplates: Sådan installeres og konfigureres

Lær, hvordan du installerer programmeringssproget Python i LuckyTemplates, og hvordan du bruger dets værktøjer til at skrive koder og vise billeder.

Beregning af dynamiske fortjenestemargener – nem analyse af LuckyTemplates med DAX

Beregning af dynamiske fortjenestemargener – nem analyse af LuckyTemplates med DAX

Lær, hvordan du beregner dynamiske fortjenstmargener ved siden af ​​LuckyTemplates, og hvordan du kan få mere indsigt ved at grave dybere ned i resultaterne.

Sortering af datotabelkolonner i LuckyTemplates

Sortering af datotabelkolonner i LuckyTemplates

Lær, hvordan du sorterer felterne fra kolonner med udvidet datotabel korrekt. Dette er en god strategi at gøre for vanskelige felter.

Find dine topprodukter for hver region i LuckyTemplates ved hjælp af DAX

Find dine topprodukter for hver region i LuckyTemplates ved hjælp af DAX

I denne artikel gennemgår jeg, hvordan du kan finde dine topprodukter pr. region ved hjælp af DAX-beregninger i LuckyTemplates, herunder funktionerne TOPN og CALCUATE.

Junk Dimension: Hvad er det, og hvorfor det er alt andet end junk

Junk Dimension: Hvad er det, og hvorfor det er alt andet end junk

Lær, hvordan du bruger en uønsket dimension til flag med lav kardinalitet, som du ønsker at inkorporere i din datamodel på en effektiv måde.