Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Jeg vil gjøre et dypdykk i noe som kalles kombinatorisk analyse. Dette kan defineres som å velge og arrangere elementer av sett i samsvar med foreskrevne regler. Det høres kanskje esoterisk ut, men det har faktisk noen veldig praktiske bruksområder. Du kan se hele videoen av denne opplæringen nederst på denne bloggen.

I denne opplæringen skal jeg vise deg hvordan du gjør dette ved å bruke Power Query i LuckyTemplates.

Innholdsfortegnelse

Eksempel på kombinatorisk analyse

I dette eksempelet på kombinatorisk analyse var oppgaven at vi hadde en liste med seks varehus og vi trengte å generere hvert unike sett med tre. Det høres ut som et ganske enkelt problem, men dette er et av de tilfellene der språket virkelig betyr noe.

Det riktige svaret her er enten 216, 120, 56 eller 20. Så, avhengig av hvordan du definerer det unike settet og reglene du foreskrev, kan du være av med en faktor 10 hvis du ikke får settet riktig.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Og så er det to dimensjoner som betyr noe her. Den første er " betyr rekkefølgen noe ?" Så når vi snakker om tre sett med tre, er ABC tilsvarende BCA? Så betyr rekkefølgen noe? Og hvis rekkefølgen betyr noe , snakker vi om permutasjoner .

Et godt eksempel på permutasjoner der rekkefølge kan ha betydning er (vi snakker om en lagerkontekst) når det gjelder reisetid. Det kan godt hende at hvis du besøker lager A, deretter lager B, og deretter lager C, kan reisetiden på grunn av trafikkflyt med trafikk mot trafikk, tiden du ankom hvert lager, være ganske forskjellig avhengig av ordren der du besøker dem.

Baksiden av det er " rekkefølge spiller ingen rolle ", i så fall snakker vi om kombinasjoner , ikke permutasjoner. Brukssaken her som er vanlig er avstand. For eksempel, i luftlinje vil ikke avstanden fra A til B til C være annerledes enn avstanden fra B til C til A. Disse vil bli vurdert i en kombinasjonssammenheng.

Kombinasjoner anses som duplikater av hverandre. Mens de i en permutasjonssammenheng vil bli ansett som unike.

Og så, som du kan se, burde en kombinasjonslås egentlig være en permutasjonslås, for i så fall betyr rekkefølgen noe, noe som gjør den til en permutasjon, ikke en kombinasjon.

Det andre spørsmålet eller dimensjonen som betyr noe er " når en vare er plukket, kan den plukkes igjen ?" Hvis vi for eksempel velger A som vårt første lager, kan vi velge A igjen, eller må vi velge unike elementer hver gang?

Begrepet vi bruker her er " med erstatning " eller " uten erstatning ". Så hvis en vare kan plukkes igjen, er det med erstatning, noe som betyr at du velger den. Og på en måte går den tilbake i utvalgsboksen og for å bli plukket igjen. Hvis svaret er nei, er det uten erstatning.

Og så kan du se i denne løsningen at permutasjoner med erstatning er de minst restriktive. Så det er den som gir oss 216 unike sett. Og kombinasjoner uten erstatning er den mest restriktive og gir oss 20.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Vi skal bare bruke disse formlene som en måte å sjekke resultatene våre på. Så vi vil huske 216, 120, 56 og 20. La oss nå hoppe inn i Power Query og se hvordan denne kombinatoriske analysen utspiller seg.

Kombinatorisk analyse: Permutasjoner i Power Query

I Power Query har jeg her en veldig enkel sak med seks navngitte varehus.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Og jeg har utviklet denne Power Query M-funksjonen, som jeg har brukt til å behandle kombinasjoner og permutasjoner.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Først skal jeg utvikle den første brukssaken, som er permutasjoner med erstatning , den minst restriktive av gjengen. Måten å gjøre det på i Power Query er å ta denne Warehouses- tabellen og referere til den (i DAX bruker vi CROSSJOIN ).

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Jeg vil kalle dette, Per w Rep (permutasjoner med erstatning).

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Det er en rekke måter du kan gjøre en krysskobling i Power Query. Den enkleste måten jeg har funnet, er å bare gå til Legg til kolonne og deretter Egendefinert kolonne . I den egendefinerte kolonneformelen refererer du til Varehus- tabellen.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Og det vi finner når vi klikker OK er at det genererer en nestet tabell.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Deretter utvider vi det og fjerner klikker på Bruk originale kolonnenavn som prefiks .

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Og vi får denne Location.1 , som er enhver mulig kombinasjon av to. Så det tar de seks første referansene mot de andre seks kombinasjonene. De andre seks gjør det samme hele veien ned til vi har 36 forskjellige sett.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Vi kan gjøre den tredje ved å gjøre dette igjen. Så vi går til Legg til kolonne, deretter en egendefinert kolonne, og deretter Warehouses.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Og vi vil ha de 216 radene som permutasjoner med erstatning.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Og du kan se her nede, 3 kolonner, 216 rader.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Neste brukstilfelle er permutasjoner uten erstatning . Det vi tenker på her er i utgangspunktet alt som har et gjentatt element. Så i denne tabellen skal vi se på fra rad 1 til rad 8.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

For å gjøre det, tar vi en titt på denne funksjonen, fxSortAndIsDistinct .

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

I Advanced Editor kan du se at dette i utgangspunktet ber om en tabell, og deretter utfører den en SortLocs . Men den viktige delen her for "med erstatning" eller "uten erstatning" er at dette er en IsDistinct -funksjon. Det dette gjør er bare å ta en liste over elementer og bestemme sant eller usant, om det er distinkt eller om det har noen duplikater i listen over elementer.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Så vi går hit, velger Perm w Rep , og trykker på Invoke .

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Dette vil gi oss disse to nye kolonnene, SortLocs og IsDistinct . Husk at de første åtte postene hadde duplikater og den niende posten var første gang vi så den distinkte . Derfor er den niende raden her den første som vises som sann.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Hvis vi tenker tilbake på tallene vi hadde på faktorberegningene, forventer vi 120 poster hvis vi tar ut de ikke-distinkte postene. Så, la oss prøve å filtrere her og ta ut FALSE.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Når vi gjør det, får vi her nede akkurat de 120 radene vi forventer. La oss nå omdøpe dette til Perm wo Rep (permutasjon uten erstatning).

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Kombinatorisk analyse: Kombinasjoner i Power Query

Nå skal vi gjøre kombinasjonene med erstatning . For å gjøre det, gjør vi bare prosessen på nytt og gjentar trinnet (påkalt funksjon). Så det er greit at vi har duplikater, men vi vil ikke ha sett som har de samme elementene , men i en annen rekkefølge.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

I dette tilfellet, når vi snakker om kombinasjoner. Hvis du husker at ABC er lik BCA er lik CAB, regnes alle som duplikater av hverandre. Og måten vi bestemmer det på er gjennom Sorter-funksjonen ( fxSortAndIsDistinct ).

Hvis vi går tilbake til funksjonen i Advanced Editor, vil vi se for den andre kolonnen at vi har tatt den listen og sortert den alfabetisk. Deretter hentet vi ut verdiene avgrenset med komma fra den listen. Nå har vi hvert sett sortert alfabetisk. Vi har normalisert rekkefølgen for å gjøre det enkelt å finne duplikater.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Hvis vi nå går tilbake til denne påkalte funksjonen, husk at vi ser etter 56 poster her. Så vi tar denne typen plassering ( SortLocs ) og fjerner duplikatene våre .

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Med det får vi 56 rader.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Og så, dette er vårt tredje bruksområde. La oss gi dette nytt navn til CC w Rep (kombinasjoner med erstatning).

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

La oss avslutte denne ved å ta igjen den permutasjonstabellen med erstatning (Perm w Rep) og gjøre det samme mønsteret (påkalle). Deretter skal vi fjerne duplikatene (SortLocs-kolonnen) fordi dette er en kombinasjon og rekkefølgen spiller ingen rolle. Den er uten erstatning, så vi ønsker også bare den distinkte listen . Så vi klikker av FALSE i IsDistinct-kolonnen.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates

Med dette får vi 20 poster. Og nå har vi alle fire brukssakene våre.

Kombinatorisk analyse ved hjelp av Power Query i LuckyTemplates




Konklusjon

Så nå har vi alle fire brukstilfellene våre. Du kan virkelig se hvor kraftig dette er når det gjelder å utvikle den kombinatoriske analysen som gir deg kontroll over erstatning og distinkte elementer.

Dette er til og med aktuelt i noen mer komplekse tilfeller der du har en delvis erstatning, eller kanskje velger et duplikatelement for den første, men ikke den andre gangen. Du kan fortsatt håndtere det pent innenfor.

Jeg håper du fant dette nyttig. Sjekk ut lenkene nedenfor for mer innhold. Du kan også se hele videoen av denne opplæringen nedenfor.

Beste ønsker!


Pipe In R: Koblingsfunksjoner med Dplyr

Pipe In R: Koblingsfunksjoner med Dplyr

I denne opplæringen lærer du hvordan du kobler funksjoner sammen ved å bruke dplyr-røroperatøren i programmeringsspråket R.

RANKX Deep Dive: A LuckyTemplates DAX-funksjon

RANKX Deep Dive: A LuckyTemplates DAX-funksjon

RANKX fra LuckyTemplates lar deg returnere rangeringen til et spesifikt tall i hver tabellrad som utgjør en del av en liste med tall.

Trekker ut LuckyTemplates-temaer og bilder fra PBIX

Trekker ut LuckyTemplates-temaer og bilder fra PBIX

Lær hvordan du demonterer en PBIX-fil for å trekke ut LuckyTemplates-temaer og bilder fra bakgrunnen og bruke den til å lage rapporten din!

Excel Formulas Cheat Sheet: Mellomveiledning

Excel Formulas Cheat Sheet: Mellomveiledning

Excel Formulas Cheat Sheet: Mellomveiledning

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

Python i LuckyTemplates: Hvordan installere og sette opp

Python i LuckyTemplates: Hvordan installere og sette opp

Lær hvordan du installerer programmeringsspråket Python i LuckyTemplates og hvordan du bruker verktøyene til å skrive koder og vise visuelle elementer.

Beregning av dynamiske fortjenestemarginer – enkel analyse av LuckyTemplates med DAX

Beregning av dynamiske fortjenestemarginer – enkel analyse av LuckyTemplates med DAX

Lær hvordan du beregner dynamiske fortjenestemarginer ved siden av LuckyTemplates og hvordan du kan få mer innsikt ved å grave dypere inn i resultatene.

Sortering av datotabellkolonner i LuckyTemplates

Sortering av datotabellkolonner i LuckyTemplates

Lær hvordan du sorterer feltene fra kolonner med utvidet datotabell på riktig måte. Dette er en god strategi å gjøre for vanskelige felt.

Finn dine beste produkter for hver region i LuckyTemplates ved å bruke DAX

Finn dine beste produkter for hver region i LuckyTemplates ved å bruke DAX

I denne artikkelen går jeg gjennom hvordan du kan finne de beste produktene dine per region ved å bruke DAX-beregninger i LuckyTemplates, inkludert TOPN- og CALCUATE-funksjonene.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Lær hvordan du bruker en søppeldimensjon for flagg med lav kardinalitet som du ønsker å inkludere i datamodellen din på en effektiv måte.