Combinatorische analyse met behulp van Power Query in LuckyTemplates

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Ik wil een diepe duik nemen in iets dat combinatorische analyse wordt genoemd. Dit kan worden gedefinieerd als het kiezen en rangschikken van elementen van sets volgens voorgeschreven regels. Het klinkt misschien esoterisch, maar het heeft eigenlijk een aantal zeer praktische use-cases. Je kunt de volledige video van deze tutorial onderaan deze blog bekijken.

In deze zelfstudie laat ik u zien hoe u dit doet met behulp van de Power Query in LuckyTemplates.

Inhoudsopgave

Voorbeeld van combinatorische analyse

In dit voorbeeld van combinatorische analyse was de taak dat we een lijst van zes magazijnen hadden en dat we elke unieke set van drie moesten genereren. Het klinkt als een vrij eenvoudig probleem, maar dit is een van die gevallen waarin taal er echt toe doet.

Het juiste antwoord hier is 216, 120, 56 of 20. Dus, afhankelijk van hoe je die unieke set definieert en de regels die je hebt voorgeschreven, kun je er een factor 10 naast zitten als je de set niet correct krijgt.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

En dus zijn er twee dimensies die er hier toe doen. De eerste is " doet volgorde ertoe ?" Dus als we het hebben over drie sets van drie, is ABC dan gelijk aan BCA? Dus volgorde is belangrijk? En als volgorde ertoe doet , hebben we het over permutaties .

Een goed voorbeeld van permutaties waarbij volgorde van belang kan zijn, is (we hebben het over een magazijncontext) in het geval van reistijd. Het kan heel goed zijn dat als je magazijn A bezoekt, dan magazijn B en dan magazijn C, de reistijd als gevolg van verkeersstroom met tegenliggers, de tijd dat je bij elk magazijn aankomt, behoorlijk kan verschillen, afhankelijk van de bestelling waarin je ze bezoekt.

De keerzijde daarvan is " volgorde doet er niet toe ", in welk geval we het hebben over combinaties , niet permutaties. De use case die hier gebruikelijk is, is afstand. Hemelsbreed bijvoorbeeld zal de afstand van A naar B naar C niet anders zijn dan de afstand van B naar C naar A. Die zullen in een combinatiecontext worden beschouwd.

Combinaties worden beschouwd als duplicaten van elkaar. Terwijl ze in een permutatiecontext als uniek worden beschouwd.

En dus, zoals je kunt zien, zou een combinatieslot eigenlijk een permutatieslot moeten zijn, want in dat geval doet de volgorde ertoe, waardoor het een permutatie wordt, geen combinatie.

De tweede vraag of dimensie die van belang is, is " als een item eenmaal is gepickt, kan het dan opnieuw worden gepickt ?" Als we bijvoorbeeld A als ons eerste magazijn kiezen, kunnen we A dan opnieuw kiezen of moeten we elke keer unieke elementen kiezen?

De term die we hier gebruiken is " met vervanging " of " zonder vervanging ". Dus als een item weer kan worden gepickt, is dat met vervanging, wat betekent dat jij het pickt. En in zekere zin gaat het terug de selectiebak in en wordt het opnieuw geplukt. Als het antwoord nee is, is het zonder vervanging.

En dus kun je in deze oplossing zien dat permutaties met vervanging het minst beperkend zijn. Dus dat is degene die ons 216 unieke sets geeft. En combinaties zonder vervanging zijn het meest beperkend en geven ons 20.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

We gaan deze formules gewoon gebruiken als een manier om onze Power Query- resultaten te controleren. Dus we onthouden 216, 120, 56 en 20. Laten we nu naar Power Query springen en kijken hoe deze combinatorische analyse allemaal uitpakt.

Combinatorische analyse: permutaties in Power Query

In de Power Query heb ik hier een heel eenvoudig geval met zes benoemde magazijnen.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

En ik heb deze Power Query M-functie ontwikkeld, die ik heb gebruikt om combinaties en permutaties te verwerken.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Eerst ga ik die eerste use-case ontwikkelen, namelijk permutaties met replacement , de minst beperkende van het stel. De manier om dat in de Power Query te doen, is door deze Warehouses- tabel te nemen en ernaar te verwijzen (in DAX gebruiken we CROSSJOIN ).

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Ik noem dit, Per w Rep (permutaties met vervanging).

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Er zijn een aantal manieren waarop u een cross-join kunt uitvoeren in Power Query. De gemakkelijkste manier die ik heb gevonden, is door gewoon naar Kolom toevoegen te gaan en vervolgens naar Aangepaste kolom . Verwijs in de aangepaste kolomformule naar de tabel Magazijnen .

Combinatorische analyse met behulp van Power Query in LuckyTemplates

En wat we zullen vinden als we op OK klikken, is dat het een geneste tabel genereert.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Vervolgens vouwen we dat uit en maken we de klik op Gebruik originele kolomnaam als voorvoegsel ongedaan .

Combinatorische analyse met behulp van Power Query in LuckyTemplates

En we krijgen deze Location.1 , wat elke mogelijke combinatie van twee is. Dus het neemt de eerste zes referenties tegen de andere zes combinaties. De tweede zes doet hetzelfde totdat we 36 verschillende sets hebben.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

We kunnen de derde doen door dit opnieuw te doen. Dus we gaan Kolom toevoegen, dan een aangepaste kolom en dan Magazijnen.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

En we hebben de 216 rijen als de permutaties met vervanging.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

En je kunt van hier beneden zien, 3 kolommen, 216 rijen.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

De volgende use case is permutaties zonder vervanging . Waar we hier aan denken, is eigenlijk alles dat een herhaald element heeft. Dus in deze tabel gaan we kijken van rij 1 tot rij 8.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Om dat te doen, zullen we deze functie bekijken, fxSortAndIsDistinct .

Combinatorische analyse met behulp van Power Query in LuckyTemplates

In de geavanceerde editor kun je zien dat dit in feite om een ​​tabel vraagt, en dan doet het een SortLocs . Maar het belangrijkste deel hier voor de "met vervanging" of "zonder vervanging" is dat dit een IsDistinct- functie is. Wat dit doet, is in feite gewoon een lijst met elementen nemen en bepalen waar of onwaar, of het verschillend is of dat er duplicaten in de lijst met items zijn.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Dus we gaan hierheen, selecteren de Perm w Rep en drukken op Invoke .

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Dit geeft ons deze twee nieuwe kolommen, SortLocs en IsDistinct . Onthoud nu dat de eerste acht records duplicaten hadden en dat de negende record de eerste keer was dat we de afzonderlijke . Daarom is de negende rij hier de eerste die als waar wordt weergegeven.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Als we terugdenken aan de getallen die we hadden op de faculteitsberekeningen, verwachten we 120 records als we de niet-afzonderlijke records eruit halen. Laten we dus proberen hier te filteren en de FALSE eruit te halen.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Terwijl we dat doen, krijgen we hier precies de 120 rijen die we verwachten. Laten we dit nu hernoemen naar Perm wo Rep (permutatie zonder vervanging).

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Combinatorische analyse: combinaties in Power Query

Nu gaan we de combinaties met vervanging doen . Om dat te doen, doen we het proces gewoon opnieuw en herhalen we de stap (Invoked Function). Het is dus oké dat we duplicaten hebben, maar we willen geen sets met dezelfde elementen , maar in een andere volgorde.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

In dit geval, als we het hebben over combinaties. Als je je herinnert dat ABC gelijk is aan BCA is gelijk aan CAB, dan worden dat allemaal beschouwd als duplicaten van elkaar. En de manier waarop we dat bepalen, is via de functie Sort ( fxSortAndIsDistinct ).

Als we teruggaan naar de functie in de geavanceerde editor, zien we voor die tweede kolom dat we die lijst hebben genomen en deze alfabetisch hebben gesorteerd. Vervolgens hebben we de door komma's gescheiden waarden uit die lijst gehaald. Nu hebben we elke set alfabetisch gesorteerd. We hebben de volgorde genormaliseerd om het gemakkelijk te maken om duplicaten te vinden.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Als we nu teruggaan naar deze aangeroepen functie, bedenk dan dat we hier naar 56 records zoeken. Dus we nemen dit soort locatie ( SortLocs ) en verwijderen onze duplicaten .

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Daarmee krijgen we 56 rijen.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

En dit is dus onze derde use case. Laten we dit hernoemen naar CC w Rep (combinaties met vervanging).

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Laten we dit afronden door die permutaties met vervangende (Perm w Rep) tabel opnieuw te nemen en hetzelfde patroon te doen (invoke). Vervolgens gaan we de duplicaten verwijderen (kolom SortLocs) omdat dit een combinatie is en de volgorde er niet toe doet. Het is zonder vervanging, dus we willen ook alleen de aparte lijst . Dus klikken we ONWAAR af in de kolom IsDistinct.

Combinatorische analyse met behulp van Power Query in LuckyTemplates

Hiermee krijgen we 20 records. En nu hebben we alle vier onze use cases.

Combinatorische analyse met behulp van Power Query in LuckyTemplates


Datumtabelkolommen sorteren in LuckyTemplates
Beginnershandleiding voor de M-code in LuckyTemplates
Zet de datumtabelfunctie om in een tabelquery in LuckyTemplates

Conclusie

Dus nu hebben we alle vier onze use cases. Je kunt echt zien hoe krachtig dit is in termen van het ontwikkelen van die combinatorische analyse die je controle geeft over vervanging en afzonderlijke elementen.

Dit is zelfs van toepassing in sommige complexere gevallen waarin u een gedeeltelijke vervanging heeft, of misschien een duplicaatelement selecteert voor de eerste keer, maar niet voor de tweede keer. Dat kun je nog netjes afhandelen binnen Power Query .

Ik hoop dat je dit nuttig vond. Bekijk de onderstaande links voor meer inhoud. Je kunt ook de volledige video van deze tutorial hieronder bekijken.

Al het beste!


Wat is zelf in Python: voorbeelden uit de echte wereld

Wat is zelf in Python: voorbeelden uit de echte wereld

Wat is zelf in Python: voorbeelden uit de echte wereld

Een RDS-bestand opslaan en laden in R

Een RDS-bestand opslaan en laden in R

Je leert hoe je objecten uit een .rds-bestand in R opslaat en laadt. In deze blog wordt ook besproken hoe je objecten uit R naar LuckyTemplates importeert.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

First N Business Days Revisited – Een DAX-coderingstaaloplossing

In deze tutorial over DAX-coderingstaal leert u hoe u de functie GENERATE gebruikt en hoe u de titel van een maat dynamisch wijzigt.

Breng inzichten onder de aandacht met behulp van de Multi Threaded Dynamic Visuals-techniek in LuckyTemplates

Breng inzichten onder de aandacht met behulp van de Multi Threaded Dynamic Visuals-techniek in LuckyTemplates

Deze zelfstudie behandelt hoe u de Multi Threaded Dynamic Visuals-techniek kunt gebruiken om inzichten te creëren op basis van dynamische gegevensvisualisaties in uw rapporten.

Inleiding tot het filteren van context in LuckyTemplates

Inleiding tot het filteren van context in LuckyTemplates

In dit artikel zal ik de filtercontext doornemen. Filtercontext is een van de belangrijkste onderwerpen waarover elke LuckyTemplates-gebruiker in eerste instantie zou moeten leren.

Beste tips voor het gebruik van de apps in LuckyTemplates Online Service

Beste tips voor het gebruik van de apps in LuckyTemplates Online Service

Ik wil laten zien hoe de online service LuckyTemplates Apps kan helpen bij het beheren van verschillende rapporten en inzichten die uit verschillende bronnen zijn gegenereerd.

Analyseer winstmargeveranderingen in de loop van de tijd - analyse met LuckyTemplates en DAX

Analyseer winstmargeveranderingen in de loop van de tijd - analyse met LuckyTemplates en DAX

Leer hoe u wijzigingen in uw winstmarge kunt berekenen met behulp van technieken zoals vertakking van metingen en het combineren van DAX-formules in LuckyTemplates.

Materialisatie-ideeën voor gegevenscaches in DAX Studio

Materialisatie-ideeën voor gegevenscaches in DAX Studio

Deze tutorial bespreekt de ideeën van materialisatie van datacaches en hoe deze de prestaties van DAX beïnvloeden bij het leveren van resultaten.

Zakelijke rapportage met behulp van LuckyTemplates

Zakelijke rapportage met behulp van LuckyTemplates

Als u tot nu toe nog steeds Excel gebruikt, is dit het beste moment om LuckyTemplates te gaan gebruiken voor uw zakelijke rapportagebehoeften.

Wat is LuckyTemplates Gateway? Alles wat u moet weten

Wat is LuckyTemplates Gateway? Alles wat u moet weten

Wat is LuckyTemplates Gateway? Alles wat u moet weten