Ce este Sinele în Python: Exemple din lumea reală
Ce este Sinele în Python: Exemple din lumea reală
În acest tutorial, vom revizui un subiect pe care l-am abordat mai devreme despre cum să dezactivați mai multe coloane în Power Query folosind List.Zip. Un membru LuckyTemplates a întrebat pe cum să faceți această metodă dinamică. Puteți urmări videoclipul complet al acestui tutorial în partea de jos a acestui blog.
Am etichetat acest lucru ca avansat, deoarece vom scrie o serie de funcții M și unele dintre acestea ar putea fi chiar noi pentru tine.
Acestea fiind spuse, să trecem la Power Query.
Cuprins
Date în format tabelar
După cum puteți vedea, aceste date au fost deja transformate într-un format de tabletă adecvat, potrivit pentru analiză. Acest proces, deși foarte important, nu va fi acoperit aici, dar vom trece pe scurt peste fiecare pas.
În pasul sursă, vedem o repetare constantă a perechilor de valori, care sunt orele și contactele pentru fiecare dintre atributele enumerate mai sus.
În Pașii aplicați , puteți vedea restul pașilor. Am eliminat câteva rânduri de sus, am eliminat coloanele goale, ne-am curățat valorile textului și le-am completat. Apoi, ne-am transpus datele, am eliminat înregistrarea goală, am îmbinat coloanele unu și două, ne-am curățat din nou valorile textului și ne-am transpus datele înapoi.
Am creat un pas personalizat, pe care îl vom examina mai în detaliu mai târziu, am extras valori din lista noastră și apoi am schimbat tipul.
Să ne uităm la întregul cod. Lucrul care ne interesează aici este funcția List.Zip . Scurtă recapitulare, este nevoie de o singură listă ca parametru și apoi returnează o listă. Ca rezultat, vedem că această listă unică în acest caz conține trei liste separate.
Dacă examinăm prima listă, aceasta conține nume de atribute codificate, doar valori de text care au fost introduse. A doua listă conține referințe de coloană codificate pentru valorile oră. Lista finală conține referințe de coloane codificate hard pentru valorile de contact.
List.Zip preia apoi un element din fiecare dintre aceste trei liste și le combină în funcție de poziția lor într-o nouă listă. De exemplu, fiecare prim element din acele liste este combinat într-o listă nouă. Același lucru se întâmplă pentru toate valorile enumerate pe locul al doilea în acea listă și așa mai departe.
Valorile hard-coded pot fi îngrijorate dacă este puțin probabil ca atributele să se schimbe în timp. Deci, dacă data viitoare, nu toate articolele sunt prezente sau există elemente noi, puteți avea probleme.
Modificarea codului pentru a debloca mai multe coloane în mod dinamic
Deci, cum facem această dinamică?
Primul lucru pe care îl fac este să parcurg codul pentru a vedea dacă există un loc în care să putem prelua acele valori de atribut fără a fi nevoie să proiectăm un pas separat pentru a realiza asta. Deci, vom face un pas înapoi prin cod și acest pas RemoveNull este perfect.
Puteți vedea că listează toate valorile atributelor aici în coloana unu. Putem folosi interfața cu utilizatorul pentru a le extrage.
Așadar, faceți clic dreapta pe acel antet și, mai jos, selectați Adăugați ca interogare nouă .
Primim această listă și aceasta este o veste bună pentru că vrem să înlocuim acea listă codificată pe care am văzut-o mai devreme cu cea dinamică. Tot ce trebuie să facem este să curățăm valorile.
Să începem prin a elimina aceste valori nule. Deci, în bara de formule, vom adăuga un List.RemoveNulls . După cum puteți vedea acum, toate elementele sunt repetate și asta din cauza perechilor de valori. Este listat o dată pentru ore.
Și apoi din nou, pentru contacte, pentru a elimina acele duplicate, putem adăuga un List.Distinct . Acum am creat această logică și tot ce trebuie să facem este să o copiem și să o lipim înapoi în interogarea noastră exemplu.
În interogarea Eșantion , deschideți Editorul avansat și creați un nou nume de variabilă. Să-i spunem, AttributeList . Apoi lipim codul și punem o virgulă.
Acum să ne întoarcem la pasul Personalizat. În List.Zip, putem înlocui prima listă cu numele variabilei noastre (AttributeList).
Acum să aruncăm o privire mai atentă la a doua listă. Știm că face referire la nume de coloane și fiecare dintre aceste nume de coloane începe cu același atribut pe care îl avem deja în acea listă, urmat de un spațiu și un text „ore”.
Trebuie doar să adăugăm un sufix la fiecare articol. Deci, să ne întoarcem cu un pas și să adăugăm o coloană personalizată pentru a crea o logică.
Unpivot mai multe coloane în mod dinamic: Adăugarea logică personalizată de coloane
Este doar o coloană temporară, așa că nu trebuie să-i dăm un nume propriu. Îl vom elimina după ce terminăm.
Pentru a modifica valorile dintr-o listă, putem folosi funcția List.Transform . Trebuie să transformăm valorile din AttributeList , așa că o voi lipi.
Aici, în anteturi, vedem că valorile textului încep cu o literă majusculă, iar restul sunt litere mici. Atributul nostru conține doar un cuvânt cu majuscule, așa că trebuie să transformăm și acea valoare a textului. Și putem folosi caracterul de subliniere pentru a accesa fiecare articol din listă și vom adăuga acel sufix.
Cu aceasta, obținem o valoare de listă în coloana noastră. Nu contează pe care îl selectați, dar faceți clic pe lateral în spațiul alb din oricare dintre ele de aici.
Sub pagină, vedem o previzualizare a listei pe care am creat-o. Deci vedeți că acele antete de coloană sunt acum majuscule corect, astfel încât să se potrivească cu anteturile de coloană pe care le vedem aici cu această listă.
Acum avem mijloacele de a identifica câmpurile din înregistrarea noastră pe care dorim să le accesăm. Deci, să deschidem din nou caseta de dialog pentru coloana personalizată și să adăugăm Record.SelectFields . Vrea o înregistrare ca înregistrare, așa că putem folosi acel caracter de subliniere pentru a accesa înregistrarea curentă pe care ne aflăm. Și apoi i-am dat o listă cu toate acele nume de câmpuri, așa că adăugați o paranteză de închidere și apăsați OK .
Deci nu mai avem o listă, dar acum obținem un record. Să facem clic din nou în lateral în spațiul alb pentru a vedea conținutul acelei înregistrări. Aici vedem că listează numele câmpurilor de înregistrare și valorile câmpului de înregistrare.
Dar ne interesează doar valorile câmpului de înregistrare, așa că trebuie să extragem asta. Să ne întoarcem la caseta de dialog cu coloana personalizată și să adăugăm Record.FieldsValues .
Acum primim din nou o listă și nu mai avem o înregistrare. Facem din nou clic în lateral în spațiul alb și vedeți că acum avem o listă cu doar acele valori. Deci arată bine.
Să copiem întreaga logică pe care am creat-o, cu excepția ultimelor paranteze de închidere. Și acum putem elimina coloana noastră temporară pentru că nu mai avem nevoie de ea.
Pe bara de formule, selectăm a doua noastră listă și o înlocuim cu logica noastră.
Pentru a crea o listă cu valorile câmpurilor de înregistrare pentru contacte, tot ce trebuie să schimbăm este sufixul. Deci putem selecta și ultima listă și lipim în logica noastră.
Apoi, în loc de ore , să schimbăm acest lucru în contacte .
Fără erori și arată bine. Aceasta este acum o soluție dinamică pentru a debloca mai multe coloane.
LuckyTemplates Unpivot Columns – Tutorial Power Query
Cum să dezactivați coloanele în LuckyTemplates
Unpivot și Pivot Basics în LuckyTemplates – Query Editor Review
Concluzie
Așa dezactivați mai multe coloane în mod dinamic în folosind List.Zip.
Dacă apare un nou atribut, acesta va fi preluat automat de AttributeList. Și când un articol nu mai există, nu va fi prezent pe lista respectivă.
Sper că ți-a plăcut asta. Urmăriți videoclipul complet de mai jos pentru mai multe detalii despre acest tutorial și consultați linkurile de mai jos pentru mai mult conținut despre dezactivarea mai multor coloane în LuckyTemplates.
Toate cele bune
Melissa
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