Variabler og udtryk i Power Query Editor
Denne vejledning vil diskutere om variabler og udtryk i Power Query Editor. Du lærer at skrive og bygge dem ordentligt.
Til dagens vejledning vil jeg vise, hvordan du kan automatisere processen med at sortere en kolonne efter en anden kolonne inde i LuckyTemplates og SSAS- eller SQL-serveranalysetjenester. Du kan se den fulde video af denne tutorial nederst på denne blog.
I dette eksempel har vi Datoer-tabellen med flere kolonner. Nogle kolonner er heltalsdelen, som vi skal skjule; og nogle kolonner er strengdelen, som vi vil vise til slutbrugeren.
Så vi har kolonnerne Kalenderår, Kalenderår Måned og Måned. Det, vi ønsker at gøre, er at automatisere sorteringen af disse tre kolonner efter deres heltal. Jeg sorterer kalenderåret efter kalenderårsnummeret, kalenderårets måned efter kalenderårets månedsnummer samt måneden efter månedsnummeret.
Men det vil vi ikke gøre én efter én. Vi kører et script, der automatisk sorterer det for denne særlige tabel. Hvis du har flere kolonner til flere tabeller, kan du bruge det script på disse sæt tabeller.
Vi skal brugefor at skrive den C#-kode, men i øjeblikket har Tabular Editor ikke en IntelliSense til C#-sproget. For at gøre det nemmere vil vi bruge Visual Studio (VS), hvor vi har IntelliSense for C#-sproget, og du kan også bruge VS-kode.
Indholdsfortegnelse
Sortering af kolonner i LuckyTemplates og SSAS ved hjælp af C#
Først skal vi oprette et nyt projekt inde i Visual Studio, som vil være Console-appen (.Net Framework) til C#-sproget. Lad os vælge det klik på Næste.
Så kan vi give et hvilket som helst navn til projektet. Jeg vil kalde dette SortBy og klikke på Opret.
Nu kan du se, at vi har koden. Når koden virker, kopierer og indsætter vi den i Tabular Editor.
Men for at koden skal fungere inde i Visual Studio, skal vi angive en reference til et bibliotek. Og for det kan vi blot klikke på referencerne og vælge muligheden for Administrer NuGet-pakker i browserindstillingen.
Inde i gennemse-indstillingen skal vi skrive. Og så, i de tilgængelige muligheder, skal vi vælge den anden og klikke på Installer. Det starter installationen, og det vil tage et par sekunder, før installationen er fuldført.
Dernæst skal vi skrive i koden ved hjælp af Microsoft.AnalysisServices.Tabular og derefter skrive et semikolon. Vi skal lave et serverobjekt, så vi kan simpelthen skrive Server , og navnet på serverobjektet vil være Server selv, og vi skal skrive New Server .
Så dybest set skaber vi et nyt objekt inde i hukommelsen. Og for at forbinde den server til LuckyTemplates-filen, skal vi bruge en metode til serverobjektet. Så lad os skrive server.Connect , og her giver vi portnummeret, som AnalysisServices inde i LuckyTemplates lytter til.
For at finde det portnummer, går vi til Eksterne værktøjer, klikker på , og i den nederste del finder vi den lokale vært. Det er det kodenummer, som SQL-serveranalysetjenester, som vi har inde i LuckyTemplates, lytter til de ændringer, som vi sender gennem LuckyTemplates eller ethvert andet eksternt værktøj.
Serveren er én ting, men en server kan også have flere modeller i tilfælde af SSAS. Men lige nu, i LuckyTemplates, har vi kun én model. Så vi vil erklære den model. Vi skriver her Model er lig med (=) server.Databaser , og vi får adgang til den allerførste database inde i den server, så vi skriver .Model .
Lad os nu teste, om den del af koden virker eller ej. For at gøre det udskriver vi blot listen over alle tabeller, som vi har inde i den datamodel. Så vi indtaster her for hver (Tabel t i model.Tables) , åbner parentes og trykker enter.
Derefter skriver vi Console.WriteLine (t.Name) . For at sikre, at vinduet ikke automatisk lukker, når det udskriver tabellernes navn, skriver vi Console.ReadLine , åbner og lukker parenteser og et semikolon. Nu skal vi bare klikke på Start- indstillingen og vente på, at den udføres.
Du kan se, at vi er i stand til at udskrive navnet på de tabeller, som vi har inde i datamodellen. Vi har datoer, produkt, kunde og butik. Det bekræfter, at den opsætning, vi har oprettet, fungerer.
Så nu kan vi faktisk komme ind i kodens kød og begynde at skabe koden, der vil hjælpe os med at sortere den kolonne efter heltalsmodstykket.
Lad os slippe af med alt det, vi har skabt fra ForEach- delen. Vi vil beholde serveren og modellen som den er. Lad os erklære en variabel, der vil indeholde navnet på den tabel, som vi ønsker at iterere på. Jeg vil navngive det som DatesTable , og navnet på tabellen vil grundlæggende være Dates .
Dernæst har vi foreach var t i model.Tables , så skal vi bruge en where -sætning, så vi kan sige, hvor T går til t.Name skal være lig med DatesTable . Hvis vi i øjeblikket itererer på DatesTable, vil vi starte en anden løkke over alle kolonnerne i den DatesTable. Så til det kan vi skrive for hver var c i t.Columns .
For at teste, om vi kun itererer over DatesTable, og vi har adgang til alle kolonnerne i DatesTable, kan vi blot udskrive Console.WriteLine , og vi vil sige c.Name .
Hvis jeg trykker på F5, kan du se, at vi får adgang til kolonnerne.
Nu kan vi gå videre og skrive mere kode.
Vi vil oprette en liste over tuples, der vil indeholde tre kolonner mere. En af kolonnerne vil være målkolonnen. Den anden kolonne vil være den kolonne, som vi vil sortere målkolonnen igennem, og den tredje kolonne vil blot holde sand eller falsk, uanset om vi vil skjule den kolonne, som vi faktisk sorterer igennem.
Lad os sige, at vi vil sortere kolonnen Kalenderår efter kalenderårsnummeret. Den første kolonne vil indeholde kalenderåret, den anden kolonne vil være for kalenderårsnummeret, og den tredje kolonne vil afgøre, om vi vil skjule kolonnen kalenderårnummer efter at vi har afsluttet sorteringen eller ej.
Og for det, lad os gå tilbage til Visual Studio, hvor vi skal lave en ny variabel. Du kan navngive det, hvad du vil. I dette eksempel vil jeg kalde det colOperations . Dernæst skal vi skrive new , og så skal vi lave en liste, og vi skriver typen af kolonner (streng, streng og bool). Derefter skaber vi tuplerne.
Så grundlæggende opretter vi simpelthen en liste med tre kolonner, og for tre kolonner har vi leveret to rækker. Nu inde i vores foreach loop, vil vi starte en for loop . Så dybest set er det, vi siger, at erklære en variabel, der starter med i i hver iteration. Hvis i er mindre end colOperations.Count, skal du blot øge det .
Dernæst skal vi skrive en IF- sætning. c.Navnet hører til navnet på den kolonne, som vi er i. Så har vi colOperations i . I'et giver os grundlæggende adgang til en bestemt række. Og når vi skriver .Item1 , er vi i stand til at få adgang til den første kolonne, anden kolonne eller tredje kolonne.
Så først skal vi bruge kolonnen Item1 . Hvis det er sandt, skriver vi blot, at c.SortByColumn skal være lig med t.Columns . Husk at t er tabelobjektet. Derefter får vi adgang til kolonnerne fra den pågældende tabel. Vi vil have colOperations , den række, som vi i øjeblikket er i kolonneoperationerne, og kolonnen er dybest set Item2 -objektet.
Til sidst, for at skjule den særlige kolonne, hvorigennem vi anvender sorteringen, skriver vi en sidste kodelinje.
Så nu, hvor vi har skrevet hovedkoden, som vi skal udføre mod vores tabelmodel, kan vi blot kopiere koden fra var colOperations og tage den til Tabular Editor, og så skal vi udføre den samme kode.
Sortering af kolonner i LuckyTemplates og SSAS ved hjælp af tabeleditor
Vi kommer ikke til at bruge serveren eller modelobjektet, for bag scenen vil Tabular Editor automatisk vide, hvilken LuckyTemplates-model eller analyseservicemodel den skal oprette forbindelse til. Så vi behøver ikke bruge disse variabler, fordi det allerede er opgaven for den at identificere, hvordan den ønsker at forbinde til disse modeller.
Tilbage i LuckyTemplates vil vi lancere enten Tabular Editor 3 eller Tabular Editor 2. Du kan bruge hvilken du vil. I dette tilfælde, lad os gå med Tabular Editor 3.
Vi går til fanen Filer, klikker på Ny C#-kode og lukker indstillingen Egenskaber. Så kan vi indsætte koden her. Det eneste, vi skal sikre os, er, at i stedet for at bruge modelvariablen er at bruge modelobjektet . Så lad os bruge den store M og udføre den kode.
Nu hvor scriptet er blevet eksekveret med succes, og det også siger viser tre modelændringer, vil vi forpligte ændringerne tilbage til datamodellen. Vi gemmer det, vi har anvendt på disse kolonner.
Tilbage i LuckyTemplates kan du se, at månedsnummeret er skjult. Hvis jeg klikker på kolonnen Måned og går til kolonneværktøjer og til kolonnen Sorter efter , kan du se, at den pågældende kolonne er blevet sorteret efter månedsnummer. Det samme gælder med kalenderårets månedsnummer.
Kalenderåret er sorteret af sig selv, fordi vi ikke havde den kolonne inde i den C#-kode. Så hvad vi kan gøre er at starte tabeleditoren tilbage og oprette en anden tuple. Og så udfører vi igen det script.
Konklusion
Så let er det at automatisere processen med at sortere en kolonne efter en anden kolonne iog SSAS. Dette var et meget grundlæggende eksempel på, hvordan du kan udføre den handling inde i tabellen Datoer. Men du kan berige denne liste ved at tilføje flere kolonner og derefter søge efter en anden tabel.
På den måde kan du reducere den tid, du skal bruge på at sortere disse kolonner for de samme modeller, som du vil oprette igen og igen.
Jeg håber, du har fundet dette nyttigt. Hvis du har spørgsmål, så lad mig det vide i kommentarfeltet.
Denne vejledning vil diskutere om variabler og udtryk i Power Query Editor. Du lærer at skrive og bygge dem ordentligt.
Jeg vil vise dig, hvordan du automatiserer processen med at sortere en kolonne efter en anden kolonne inde i LuckyTemplates og SSAS- eller SQL-serveranalysetjenester.
Et LuckyTemplates-varmekort er en type visualisering, der bruges til at vise datatæthed på et kort. I denne tutorial vil jeg diskutere, hvordan vi kan oprette en - gå ikke glip af noget!
Jeg vil lære dig et virkelig interessant eksempel omkring Pareto-princippet, og hvordan man laver et Pareto-diagram ved hjælp af vigtige DAX-formler.
Lær, hvordan et tilpasset søjlediagram på markedspladsen kan bruges til datasammenligning, og hvordan du kan oprette dem ved hjælp af eksempler i LuckyTemplates.
Lær, hvordan Power Automate Static Results-funktionen fungerer, og hvorfor det er godt at blive tilføjet til de bedste fremgangsmåder, når du opretter flowdiagrammer.
eDNA demonstrerer, hvordan man udfører sprog- eller tekstoversættelse ved hjælp af Python og overfører det til LuckyTemplates. LuckyTemplates Python Tutorial.
I denne øvelse lærer du, hvordan du bruger Gauge Bullet Graph til at oprette et Gantt-diagram i LuckyTemplates Report Builder.
I denne øvelse lærer du, hvordan du opretter et tredimensionelt (3D) scatterplot ved hjælp af Python i LuckyTemplates.
Effektiv LuckyTemplates-rapportering – Sessionsgennemgang og ressourcedownload