LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

För dagens handledning kommer jag att visa hur du kan automatisera processen att sortera en kolumn efter en annan kolumn inuti LuckyTemplates och SSAS- eller SQL-serveranalystjänster. Du kan se hela videon av denna handledning längst ner på den här bloggen.

I det här exemplet har vi tabellen Datum med flera kolumner. Vissa kolumner är heltalsdelen, som vi ska dölja; och några kolumner är strängdelen, som vi kommer att visa för slutanvändaren.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Så vi har kolumnerna Kalenderår, Kalenderår Månad och Månad. Vad vi vill göra är att automatisera sorteringen av dessa tre kolumner efter deras heltalsdel. Jag sorterar kalenderåret efter kalenderårsnummer, kalenderårsmånad efter kalenderårsmånadsnummer, samt månad efter månadsnummer.

Men vi kommer inte att göra det en efter en. Vi kör ett skript som automatiskt sorterar det för just den här tabellen. Om du har flera kolumner för flera tabeller kan du använda det skriptet på dessa tabelluppsättningar.

Vi ska användaför att skriva den C#-koden, men för närvarande har Tabular Editor ingen IntelliSense för C#-språket. För att göra det enklare kommer vi att använda Visual Studio (VS), där vi har IntelliSense for C#-språket och du kan även använda VS-kod.

Innehållsförteckning

Sortera kolumner i LuckyTemplates och SSAS med C#

Först måste vi skapa ett nytt projekt i Visual Studio, som kommer att vara konsolappen (.Net Framework) för C#-språket. Låt oss välja att klicka på Nästa.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Sedan kan vi ge projektet vilket namn som helst. Jag ska kalla detta för SortBy och klicka på Skapa.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Nu kan du se att vi har koden. När koden fungerar kommer vi helt enkelt att kopiera och klistra in den i Tabular Editor.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Men för att koden ska fungera i Visual Studio måste vi ställa in en referens till ett bibliotek. Och för det kan vi helt enkelt klicka på referenserna och välja alternativet Hantera NuGet-paket i webbläsaralternativet.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Inuti bläddringsalternativet måste vi skriva. Och sedan, i alternativen som är tillgängliga, måste vi välja det andra och klicka på Installera. Det kommer att påbörja installationen och det tar några sekunder för installationen att slutföras.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Därefter måste vi skriva i koden med hjälp av Microsoft.AnalysisServices.Tabular och sedan skriva ett semikolon. Vi kommer att skapa ett serverobjekt, så vi kan helt enkelt skriva Server , och namnet på serverobjektet kommer att vara Server själv, och vi kommer att skriva New Server .

Så i princip skapar vi ett nytt objekt inuti minnet. Och för att ansluta den servern till LuckyTemplates-filen kommer vi att använda en metod för serverobjektet. Så låt oss skriva server.Connect , och här ger vi portnumret som AnalysisServices inuti LuckyTemplates lyssnar på.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

För att hitta det portnumret går vi till Externa verktyg, klickar på , och längst ner hittar vi den lokala värden. Det är kodnumret på vilket SQL-serveranalystjänster som vi har inuti LuckyTemplates lyssnar på ändringarna som vi skickar via LuckyTemplates eller något annat externt verktyg.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Servern är en sak, men en server kan ha flera modeller också i fallet med SSAS. Men just nu, i LuckyTemplates, har vi bara en modell. Så vi kommer att förklara den modellen. Vi skriver här Modell är lika med (=) server.Databaser , och vi kommer åt den allra första databasen inuti den servern så vi skriver .Model .

Låt oss nu testa om den delen av koden fungerar eller inte. För att göra det skriver vi helt enkelt ut listan över alla tabeller som vi har i den datamodellen. Så vi skriver in här, för varje (Tabell t i model.Tables), öppna parentes och tryck på enter.

Efter det skriver vi in ​​Console.WriteLine (t.Name) . För att se till att fönstret inte stängs automatiskt när det väl har skrivit ut namnet på tabellerna, skriver vi Console.ReadLine , öppna och stänger parentes och ett semikolon. Nu behöver vi bara klicka på Start- alternativet och vänta på att det ska köras.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Du kan se att vi kan skriva ut namnet på de tabeller som vi har inuti datamodellen. Vi har datum, produkt, kund och butik. Det bekräftar att inställningen vi har skapat fungerar.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Så nu kan vi faktiskt komma in i kodens kött och börja skapa koden som hjälper oss att sortera den kolumnen efter heltalsmotsvarigheten.

Låt oss bli av med allt som vi har skapat från ForEach -delen. Vi kommer att behålla servern och modellen som den är. Låt oss deklarera en variabel som kommer att innehålla namnet på tabellen som vi vill iterera på. Jag kommer att namnge den som DatesTable , och namnet på tabellen kommer i princip att vara Dates .

Därefter kommer vi att ha för varje var t i model.Tables , sedan ska vi använda en where- sats, så att vi kan säga var T går till t.Name ska vara lika med DatesTable . Om vi ​​för närvarande itererar på DateTable, kommer vi att initiera en annan loop över alla kolumner i den DatesTable. Så för det kan vi skriva för varje var c i t.Columns .

För att testa om vi bara itererar över DateTable och vi har tillgång till alla kolumner i DatesTable, kan vi helt enkelt skriva ut Console.WriteLine , och vi kommer att säga c.Name .

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Om jag trycker på F5 kan du se att vi får tillgång till kolumnerna.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Nu kan vi gå vidare och skriva mer kod.

Vi kommer att skapa en lista med tupler som kommer att innehålla ytterligare tre kolumner. En av kolumnerna kommer att vara målkolumnen. Den andra kolumnen kommer att vara kolumnen genom vilken vi vill sortera målkolumnen, och den tredje kolumnen kommer helt enkelt att hålla sant eller falskt, oavsett om vi vill dölja kolumnen som vi faktiskt sorterar genom.

Låt oss säga att vi vill sortera kolumnen Kalenderår efter kalenderårsnummer. Den första kolumnen kommer att innehålla kalenderåret, den andra kolumnen kommer att vara för kalenderårsnumret, och den tredje kolumnen kommer att avgöra om vi vill dölja kolumnen Kalenderårsnummer efter att vi har slutfört sorteringen eller inte.

Och för det, låt oss gå tillbaka till Visual Studio, där vi ska skapa en ny variabel. Du kan namnge det vad du vill. I det här exemplet kallar jag det colOperations . Därefter kommer vi att skriva new , och sedan ska vi skapa en lista och vi skriver typen av kolumner (sträng, sträng och bool). Efter det skapar vi tuplarna.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Så i grund och botten skapar vi helt enkelt en lista med tre kolumner, och för tre kolumner har vi tillhandahållit två rader. Nu inuti vår foreach loop kommer vi att initiera en for loop . Så i grund och botten, vad vi säger är att deklarera en variabel som börjar med i i varje iteration. Om i är mindre än colOperations.Count ökar du helt enkelt det .

Därefter ska vi skriva ett IF- uttalande. c.Name tillhör namnet på kolumnen som vi för närvarande befinner oss i. Sedan har vi colOperations i . I:et låter oss i princip komma åt en viss rad. Och när vi skriver .Item1 kan vi komma åt den första kolumnen, andra kolumnen eller tredje kolumnen.

Så först ska vi använda kolumnen Artikel 1 . Om det är sant skriver vi helt enkelt att c.SortByColumn ska vara lika med t.Columns . Kom ihåg att t är tabellobjektet. Sedan kommer vi åt kolumnerna från den specifika tabellen. Vi vill ha colOperations , raden som vi för närvarande är på kolumnoperationerna, och kolumnen är i princip objektet Item2 .

Slutligen, för att dölja den specifika kolumnen genom vilken vi tillämpar sorteringen, skriver vi en sista rad med kod.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Så nu när vi har skrivit huvudkoden som vi ska köra mot vår tabellmodell kan vi helt enkelt kopiera koden från var colOperations och ta den till Tabular Editor, och sedan kör vi samma kod.

Sortera kolumner i LuckyTemplates och SSAS med hjälp av tabellredigerare

Vi kommer inte att använda servern eller modellobjektet eftersom Tabular Editor bakom scenen automatiskt kommer att veta vilken LuckyTemplates-modell eller analystjänstmodellen den måste ansluta till. Så vi behöver inte använda dessa variabler eftersom det redan är uppgiften att identifiera hur den vill ansluta till dessa modeller.

Tillbaka i LuckyTemplates kommer vi att lansera antingen Tabular Editor 3 eller Tabular Editor 2. Du kan använda vilken du vill. I det här fallet, låt oss gå med Tabular Editor 3.

Vi går till fliken Arkiv, klickar på Ny C#-kod och stänger alternativet Egenskaper. Sedan kan vi klistra in koden här. Det enda vi behöver försäkra oss om är att istället för att använda modellvariabeln är att använda modellobjektet . Så låt oss använda den stora M och köra den koden.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Nu när skriptet har körts framgångsrikt och det också säger visar tre modelländringar, kommer vi att återföra ändringarna till datamodellen. Vi sparar allt vi har använt på dessa kolumner.

Tillbaka i LuckyTemplates kan du se att månadsnumret är dolt. Om jag klickar på kolumnen Månad och går till kolumnverktygen och till kolumnen Sortera efter kan du se att just den kolumnen har sorterats efter månadsnummer. Detsamma gäller för kalenderårsmånadsnummer.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#

Kalenderåret sorteras av sig själv eftersom vi inte hade den kolumnen i den C#-koden. Så vad vi kan göra är att starta tillbaka tabellredigeraren och skapa en annan tuppel. Och sedan kör vi det skriptet igen.

LuckyTemplates och SSAS – Sortera kolumner med TE3 & C#




Slutsats

Så enkelt är det att automatisera processen att sortera en kolumn efter en annan kolumnoch SSAS. Detta var ett mycket grundläggande exempel på hur du kan göra den operationen i tabellen Datum. Men du kan berika den här listan genom att lägga till fler kolumner och sedan leta efter en annan tabell.

På så sätt kan du minska den tid du måste lägga på att sortera dessa kolumner för samma modeller som du kommer att skapa om och om igen.

Jag hoppas att du har funnit detta till hjälp. Om du har några frågor, låt mig bara veta i kommentarsfältet.


Upptäck unika insikter med LuckyTemplates TOPN-funktion

Upptäck unika insikter med LuckyTemplates TOPN-funktion

Den här bloggen innehåller LuckyTemplates TOPN DAX-funktion, som gör att du kan få unika insikter från dina data, vilket hjälper dig att fatta bättre marknadsföringsbeslut.

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Lär dig några fantastiska analytiska tekniker som vi kan göra för datamodellering i LuckyTemplates med hjälp av DAX-stödtabeller.

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Här dyker vi in ​​i LuckyTemplates Advanced DAX och implementerar rankningslogik för att få en mycket unik insikt. Jag visar också upp måttförgrening i det här exemplet.

LuckyTemplates What-If-parameterfunktion

LuckyTemplates What-If-parameterfunktion

Den här bloggen introducerar den nya funktionen i LuckyTemplates, analysparametern What-If. Du kommer att se hur det gör allt snabbt och enkelt för din scenarioanalys.

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Lär dig hur du avgör om din intäktstillväxt är bra genom att kontrollera om dina marginaler ökade med hjälp av LuckyTemplates mäter förgrening.

LuckyTemplates parametrar via frågeredigerare

LuckyTemplates parametrar via frågeredigerare

Lär dig och förstå hur du kan skapa och använda LuckyTemplates-parametrar som är en kraftfull funktion i frågeredigeraren.

Runda stapeldiagram – En visualisering för din instrumentpanel

Runda stapeldiagram – En visualisering för din instrumentpanel

Denna handledning kommer att diskutera hur man skapar ett runt stapeldiagram med Charticulator. Du kommer att lära dig hur du designar dem för din LuckyTemplates-rapport.

PowerApps funktioner och formler | En introduktion

PowerApps funktioner och formler | En introduktion

Lär dig hur du använder PowerApps funktioner och formler för att förbättra funktionaliteten och ändra ett beteende i vår Power Apps canvas-app.

Pipe In R: Anslutningsfunktioner med Dplyr

Pipe In R: Anslutningsfunktioner med Dplyr

I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX från LuckyTemplates låter dig returnera rankningen av ett specifikt nummer i varje tabellrad som utgör en del av en lista med nummer.