Ce este Sinele în Python: Exemple din lumea reală
Ce este Sinele în Python: Exemple din lumea reală
Vă voi arăta cum să adăugați un parametru în funcția M în interogarea tabelului de date . Acest exemplu se bazează pe o întrebare care a fost ridicată pe . Puteți urmări videoclipul complet al acestui tutorial în partea de jos a acestui blog.
Întrebarea a fost despre cum se schimbă numerotarea primei zile a săptămânii de la 0 la 1 . Rețineți că acest lucru nu schimbă începutul real al zilei lucrătoare. În acest tabel de date, începutul săptămânii va fi întotdeauna luni. Este vorba doar de referire la luni ca Ziua 1 în loc de Ziua 0.
Acest proces nu este neapărat complex, dar aveți nevoie de o înțelegere de bază a modului în care este structurat limbajul M. Dacă sunteți membru LuckyTemplates, puteți consulta . Introducerea atinge subiectul.
Cuprins
Funcția M și tabelul extins pentru date
Permiteți-mi să încep prin a intra în Power Query . Am copiat deja funcția tabelului de date M aici.
Am primit funcția M din categoria M Code Showcase din Forumul LuckyTemplates . Codul se află sub subiectul .
Dacă deschid Editorul avansat , acesta este codul.
Există o mulțime de cod M acolo, care ar putea distrage atenția.
Crearea unei interogări de testare
Deoarece se întâmplă prea multe în cadrul funcției M, voi începe cu o nouă interogare goală .
Voi denumi această interogare de testare .
În continuare, voi deschide Editorul avansat .
Deoarece voi crea o funcție, voi adăuga o pereche de paranteze și voi șterge tot codul implicit de acolo.
Pentru a porni funcția, voi declara un parametru opțional .
În continuare, voi adăuga o variabilă. Voi numi această variabilă WDStartNum , deoarece va reprezenta numărul de început în ziua săptămânii. De asemenea, trebuie să îi declar tipul, așa că voi introduce numărul .
Declar tipul pentru a preveni erorile. Dacă îl las ca orice tip, asta înseamnă că ar putea trece un tabel sau o valoare de dată în loc să treacă doar numere.
Următorul pas este să adăugați clauza let și clauza in .
Sub clauza let, am nevoie de un nume de variabilă. Așa că o să numesc această variabilă WWDStart .
Acum, trebuie să testez dacă WDStartNum a fost trecut. Dacă trece, nu va echivala cu null . Deci, voi declara că, dacă WDStartNum nu este egal cu null, vreau să fie returnată o valoare .
În ceea ce privește clauza in, vreau ca același pas să fie trecut. Așa că voi pune doar WWDStart acolo, care este ceea ce am numit variabila noastră mai devreme sub clauza let.
Odată ce apăs pe Done, funcția va fi creată. Deci voi încerca să trec o valoare prin acea funcție.
Voi încerca să tastesc litera „a”.
Amintiți-vă că mai devreme am declarat că valoarea trebuie să fie un număr. Deoarece recunoaște că valoarea pe care am introdus-o nu îndeplinește această cerință, nu îmi va permite să introduc acel parametru.
Așa că îl voi șterge și voi lăsa spațiul necompletat.
Odată ce dau clic pe Invoke, returnează o valoare de 0.
Revenind la interogarea mea inițială, se afirmă că, dacă valoarea nu este egală cu nul, WWDStartNum ar trebui returnat. Dacă este egal cu nul, atunci ar trebui returnat un 0.
Deci 0 este corect.
De data aceasta, voi încerca să transmit o valoare schimbând numărul din TestQuery. Destul de adevărat, returnează un „1” odată ce apăs pe Enter.
Acum, permiteți-mi să încerc să trec 2020 în TestQuery. Odată ce apăs pe Enter, revine și 2020.
Evident, nu vreau să se întâmple asta. Deoarece vreau o valoare care reprezintă începutul săptămânii, vreau să apară fie 0, fie 1. Aceasta înseamnă că trebuie să creez un alt test pentru a vedea dacă numărul introdus este fie 0, fie 1. Pot folosi funcția List.Contains pentru aceasta.
Folosind List.Contains
Am creat o interogare goală și am intrat List.Contains fără a folosi o paranteză.
Odată ce apăs pe Enter, pot vedea documentația despre acea funcție.
List.Contains indică dacă lista conține o valoare.
Deci, necesită o listă ca prim parametru, iar apoi se adaugă o valoare după aceea. Dacă acea valoare este găsită în listă, returnează adevărat. În caz contrar, va returna false.
Voi deschide din nou Editorul avansat , astfel încât să pot face modificările necesare la interogarea mea.
În loc să testez dacă o valoare nu este egală cu nul, voi folosi List.Contains .
Acum, voi da o listă de valori care trebuie aplicate acestei funcții.
Voi folosi paranteze ca inițializator de listă. În interiorul acelor paranteze, voi pune 0, 1. Voi adăuga o virgulă după închiderea acelui parantez.
Pentru al doilea parametru, voi folosi WDStartNum. Apoi, voi adăuga paranteza de închidere.
Cu acest lucru în loc, înseamnă că un 0 sau 1 ar trebui să-mi dea WWDStartNumber. Dacă se plasează altceva decât 0 sau 1, ar trebui să obțin un rezultat de 0.
Permiteți-mi să testez asta punând 2020 în TestQuery. După cum era de așteptat, aceasta returnează un „0” (zero).
Asta pentru că valoarea 2020 nu este în listă.
Adăugarea parametrului în funcția M
Acum că sunt sigur că codul funcționează, îl pot pune în sfârșit în tabelul de date real și în funcția M. Voi deschide Editorul avansat , apoi voi copia logica .
Apoi voi intra în interogarea tabelului de date.
Voi deschide funcția M originală prin Editorul avansat .
Apoi, îmi voi lipi codul acolo. Să ne asigurăm că există o virgulă la sfârșitul rândului.
În continuare, voi evidenția și voi copia numele meu parametru .
Apoi voi adăuga acel parametru aici .
Rețineți că trebuie să adaug mai întâi o virgulă la sfârșitul liniei existente, apoi trebuie să declar acest parametru ca fiind opțional . Apoi pot plasa WDStartNum și pot adăuga tipul .
Am adăugat parametrul și am încorporat și logica. Dar trebuie și să mă asigur că obțin rezultatele așteptate. Așa că voi căuta linia de cod care acoperă ziua săptămânii.
Apoi, voi adăuga + WDStart .
Voi face clic pe Terminat pentru a închide editorul. Apoi, voi invoca interogarea.
Pentru StartDate, voi pune 1 ianuarie 2020, apoi voi folosi 31 decembrie 2020 ca EndDate.
Voi folosi „7” ca luna de început a anului fiscal, apoi voi pune „0” ca WDStartNum.
Voi face clic pe Invoke. Acum, am tabelul cu datele.
Îl voi redenumi pentru a mă asigura că poate fi identificat cu ușurință.
Acum, voi verifica rezultatele.
Aceasta este rubrica mea DayOfWeek .
Arată că luni a revenit ca 0.
Revenind la întrebarea din Forum, trebuie să schimb numărul începutului săptămânii la 1 în loc de 0. Așa că o voi schimba doar în măsură.
Când apăs pe Enter, luni va fi acum ziua 1 în loc de ziua 0.
Privind intervalul de numere, acum merge de la 1 la 7 în loc de la 0 la 6.
Ce se întâmplă dacă trec o valoare nulă?
Apoi, Ziua Săptămânii pentru luni se întoarce la 0.
Utilizarea funcției M pentru a crea un tabel extins de date LuckyTemplates
Ghid pentru începători la codul M în LuckyTemplates
Configurarea unei date de început și de sfârșit dinamice pentru tabelele de date Power Query
Concluzie
Acesta este modul în care puteți adăuga un parametru suplimentar chiar în funcția M din interogarea tabelului de date. Procesul nu este deloc complex, așa cum am menționat mai devreme. Atâta timp cât aveți o sursă pentru codul M, de acolo este destul de ușor.
Din nou, puteți oricând să consultați cursul Advanced Data Transformations & Modeling din Online dacă nu aveți cunoștințe despre cum funcționează codurile M.
Toate cele bune,
Melissa
***** Învățați LuckyTemplates? *****
Ce este Sinele în Python: Exemple din lumea reală
Veți învăța cum să salvați și să încărcați obiecte dintr-un fișier .rds în R. Acest blog va trata, de asemenea, cum să importați obiecte din R în LuckyTemplates.
În acest tutorial despre limbajul de codare DAX, aflați cum să utilizați funcția GENERATE și cum să schimbați în mod dinamic titlul unei măsuri.
Acest tutorial va acoperi cum să utilizați tehnica Multi Threaded Dynamic Visuals pentru a crea informații din vizualizările dinamice de date din rapoartele dvs.
În acest articol, voi trece prin contextul filtrului. Contextul de filtrare este unul dintre subiectele majore despre care orice utilizator LuckyTemplates ar trebui să învețe inițial.
Vreau să arăt cum serviciul online LuckyTemplates Apps poate ajuta la gestionarea diferitelor rapoarte și informații generate din diverse surse.
Aflați cum să vă calculați modificările marjei de profit folosind tehnici precum măsurarea ramificării și combinarea formulelor DAX în LuckyTemplates.
Acest tutorial va discuta despre ideile de materializare a cache-urilor de date și despre modul în care acestea afectează performanța DAX-ului în furnizarea de rezultate.
Dacă încă utilizați Excel până acum, atunci acesta este cel mai bun moment pentru a începe să utilizați LuckyTemplates pentru nevoile dvs. de raportare a afacerii.
Ce este LuckyTemplates Gateway? Tot ce trebuie să știți