Wat is zelf in Python: voorbeelden uit de echte wereld
Wat is zelf in Python: voorbeelden uit de echte wereld
Ik ga je laten zien hoe je een parameter in de M-functie toevoegt aan je datumtabelquery . Dit voorbeeld is gebaseerd op een vraag die gesteld is op het . Je kunt de volledige video van deze tutorial onderaan deze blog bekijken.
De vraag ging over hoe de nummering van de 1e dag van de week van 0 naar 1 te veranderen . Merk op dat dit niets verandert aan de daadwerkelijke start van de weekdag. In deze datumtabel is het begin van de week altijd maandag. Het gaat er gewoon om te verwijzen naar maandag als dag 1 in plaats van dag 0.
Dit proces is niet noodzakelijkerwijs ingewikkeld, maar je hebt wel basiskennis nodig van hoe M-taal is gestructureerd. bekijken . De inleiding raakt het onderwerp.
Inhoudsopgave
De M-functie en de uitgebreide datumtabel
Laat ik beginnen met in te gaan op de Power Query . Ik heb de datumtabel M-functie hier al gekopieerd .
Ik heb de M-functie uit de M Code Showcase-categorie in het LuckyTemplates-forum . De code staat onder het onderwerp .
Als ik de geavanceerde editor open , is dit de code.
Er zit veel M-code in, wat afleidend kan zijn.
Een testquery maken
Omdat er te veel gebeurt binnen de M-functie, begin ik in plaats daarvan met een nieuwe lege query .
Ik ga deze testquery een naam geven .
Vervolgens ga ik de geavanceerde editor openen .
Omdat ik een functie ga maken, voeg ik een paar haakjes toe en verwijder ik alle standaardcode daarin.
Om de functie te starten, ga ik een optionele parameter declareren .
Vervolgens ga ik een variabele toevoegen. Ik noem deze variabele WDStartNum , omdat deze staat voor het startnummer van de weekdag. Ik moet ook het type aangeven, dus ik typ het nummer .
Ik verklaar het type om fouten te voorkomen. Als ik het gewoon als elk type laat, betekent dit dat het een tabel of een datumwaarde kan doorgeven in plaats van alleen cijfers door te geven.
De volgende stap is het toevoegen van de let- clausule en de in- clausule.
Onder de let-clausule heb ik een variabelenaam nodig. Dus ik ga deze variabele WDStart noemen .
Nu moet ik testen of het WDStartNum is geslaagd. Als het slaagt, is het niet gelijk aan null . Dus ik ga verklaren dat als de WDStartNum niet gelijk is aan null, ik wil dat er een waarde wordt geretourneerd .
Wat betreft de in-clausule, ik wil dat dezelfde stap wordt doorlopen. Dus ik zal daar gewoon WDStart plaatsen , wat we onze variabele eerder noemden onder de let-clausule.
Zodra ik op Gereed druk, wordt de functie gemaakt. Dus ik zal proberen een waarde door te geven via die functie.
Ik ga proberen de letter "a" in te typen.
Onthoud dat ik eerder heb verklaard dat de waarde een getal moet zijn. Omdat het herkent dat de waarde die ik heb ingevoerd niet aan deze vereiste voldoet, kan ik die parameter niet invoeren.
Dus ik ga dat verwijderen en laat de ruimte leeg.
Zodra ik op Invoke klik, retourneert het een waarde van 0.
Terugkomend op mijn oorspronkelijke query, staat er dat als de waarde niet gelijk is aan null, het WDStartNum moet worden geretourneerd. Als het gelijk is aan null, moet een 0 worden geretourneerd.
Dus die 0 klopt.
Deze keer ga ik proberen een waarde door te geven door het getal in de TestQuery te wijzigen. Het is waar dat het een "1" retourneert zodra ik op enter druk.
Laat me nu proberen 2020 te halen in de TestQuery. Zodra ik op Enter heb gedrukt, keert het ook terug naar 2020.
Het is duidelijk dat ik niet wil dat dit gebeurt. Omdat ik een waarde wil die het begin van de week vertegenwoordigt, wil ik dat er een 0 of een 1 wordt weergegeven. Dit betekent dat ik nog een test moet maken om te zien of het ingevoerde getal een 0 of een 1 is. Hiervoor kan ik de functie List.Contains gebruiken.
List.Contains gebruiken
Ik heb een lege query gemaakt en List.Contains ingevoerd zonder een haakje te gebruiken.
Zodra ik op enter druk, kan ik de documentatie over die functie zien.
List.Contains geeft aan of de lijst een waarde bevat.
Het vereist dus een lijst als eerste parameter en daarna wordt een waarde toegevoegd. Als die waarde in de lijst wordt gevonden, retourneert deze waar. Anders zal het false retourneren.
Ik zal de geavanceerde editor opnieuw openen, zodat ik de nodige wijzigingen in mijn query kan aanbrengen.
In plaats van te testen of een waarde niet gelijk is aan null, ga ik List.Contains gebruiken .
Nu zal ik een lijst met waarden geven die op deze functie moeten worden toegepast.
Ik gebruik accolades als lijstinitialisatie. Binnen die accolades zet ik 0, 1. Ik voeg een komma toe na het sluiten van die haak.
Voor de tweede parameter ga ik WDStartNum gebruiken. Vervolgens voeg ik het haakje sluiten toe.
Als dit op zijn plaats is, betekent dit dat een 0 of 1 me het WDStartNumber zou moeten geven. Als er iets anders dan een 0 of 1 wordt geplaatst, zou ik een resultaat van 0 moeten krijgen.
Laat me dat testen door 2020 in de TestQuery te zetten. Zoals verwacht retourneert dit een "0" (nul).
Dat komt omdat de waarde 2020 niet in de lijst staat.
De parameter toevoegen aan de M-functie
Nu ik zeker weet dat de code werkt, kan ik hem eindelijk in de eigenlijke datumtabel en M-functie plaatsen. Ik open de geavanceerde editor en kopieer de logica .
Dan stap ik in de datumtabelquery.
Ik open de originele M-functie via de geavanceerde editor .
Dan ga ik mijn code daar plakken. Laten we ervoor zorgen dat er een komma aan het einde van de regel staat.
Vervolgens ga ik mijn parameternaam markeren en kopiëren .
Dan ga ik die parameter hier toevoegen .
Merk op dat ik eerst een komma aan het einde van de bestaande regel moet toevoegen, daarna moet ik deze parameter als optioneel verklaren . Dan kan ik WDStartNum plaatsen en het type toevoegen .
Ik heb de parameter toegevoegd en ik heb ook de logica ingebed. Maar ik moet er ook voor zorgen dat ik de verwachte resultaten krijg. Dus ik ga op zoek naar de coderegel die de dag van de week beslaat.
Dan ga ik toevoegen + WDStart .
Ik klik op Gereed om de editor te sluiten. Dan ga ik de query aanroepen.
Voor de StartDate zet ik 1 januari 2020, daarna gebruik ik 31 december 2020 als EndDate.
Ik gebruik "7" als de startmaand van het fiscale jaar en vervolgens "0" als het WDStartNum.
Ik klik op Invoke. Nu heb ik de datumtabel.
Ik zal het hernoemen om ervoor te zorgen dat het gemakkelijk kan worden geïdentificeerd.
Nu ga ik de resultaten bekijken.
Dit is mijn DayOfWeek- column.
Het laat zien dat maandag is teruggekeerd als 0.
Om terug te komen op de vraag in het Forum, ik moet het nummer van het begin van de week veranderen in 1 in plaats van 0. Dus ik verander dat gewoon in de maat.
Als ik op enter druk, wordt maandag nu dag 1 in plaats van dag 0.
Kijkend naar de cijferreeks, loopt deze nu van 1 tot 7 in plaats van 0 tot 6.
Wat gebeurt er als ik een null-waarde doorgeef?
Dan keert de DayOfWeek voor maandag gewoon terug naar 0.
De M-functie gebruiken om een uitgebreide LuckyTemplates-datumtabel te maken
Beginnershandleiding voor de M-code in LuckyTemplates
Een dynamische startdatum en einddatum instellen voor Power Query-datumtabellen
Conclusie
Dit is hoe u een extra parameter rechtstreeks in de M-functie kunt toevoegen aan uw datumtabelquery. Het proces is helemaal niet ingewikkeld, zoals ik al eerder zei. Zolang je een bron voor de M-code hebt, is het vanaf daar eenvoudig genoeg.
Online bekijken als je geen achtergrond hebt over hoe M-codes werken.
Al het beste,
Melissa
***** LuckyTemplates leren? *****
Wat is zelf in Python: voorbeelden uit de echte wereld
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.
In deze tutorial over DAX-coderingstaal leert u hoe u de functie GENERATE gebruikt en hoe u de titel van een maat dynamisch wijzigt.
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.
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.
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.
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.
Deze tutorial bespreekt de ideeën van materialisatie van datacaches en hoe deze de prestaties van DAX beïnvloeden bij het leveren van resultaten.
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