So speichern und laden Sie eine RDS-Datei in R
Sie erfahren, wie Sie Objekte aus einer .rds-Datei in R speichern und laden. In diesem Blog wird auch behandelt, wie Sie Objekte aus R in LuckyTemplates importieren.
Im heutigen Tutorial werde ich zeigen, wie Sie den Prozess der Sortierung einer Spalte nach einer anderen Spalte in LuckyTemplates und SSAS oder SQL Server-Analysediensten automatisieren können. Das vollständige Video dieses Tutorials können Sie unten in diesem Blog ansehen.
In diesem Beispiel haben wir die Datumstabelle mit mehreren Spalten. Einige Spalten sind der ganzzahlige Teil, den wir ausblenden; und einige Spalten sind der String-Teil, den wir dem Endbenutzer zeigen werden.
Wir haben also die Spalten „Kalenderjahr“, „Kalenderjahr, Monat“ und „Monat“. Wir möchten die Sortierung dieser drei Spalten nach ihrem ganzzahligen Teil automatisieren. Ich sortiere das Kalenderjahr nach der Kalenderjahrnummer, den Kalenderjahrmonat nach der Kalenderjahrmonatsnummer und den Monat nach der Monatsnummer.
Aber wir werden das nicht einzeln tun. Wir führen ein Skript aus, das dies automatisch für diese bestimmte Tabelle sortiert. Falls Sie mehrere Spalten für mehrere Tabellen haben, können Sie dieses Skript für diese Tabellensätze verwenden.
Wir werden den Tabular Editor zum Schreiben dieses C#-Codes verwenden , aber derzeit verfügt der Tabular Editor nicht über IntelliSense für die C#-Sprache. Um es einfacher zu machen, verwenden wir Visual Studio (VS), wo wir über die Sprache IntelliSense für C# verfügen und Sie auch VS-Code verwenden können.
Inhaltsverzeichnis
Sortieren von Spalten in LuckyTemplates und SSAS mit C#
Zuerst müssen wir in Visual Studio ein neues Projekt erstellen, das die Konsolen-App (.Net Framework) für die Sprache C# sein wird . Wählen wir das aus und klicken Sie auf Weiter.
Dann können wir dem Projekt einen beliebigen Namen geben. Ich werde dies SortBy nennen und auf Erstellen klicken.
Jetzt können Sie sehen, dass wir den Code haben. Sobald der Code funktioniert, kopieren wir ihn einfach und fügen ihn in den Tabelleneditor ein.
Damit der Code jedoch in Visual Studio funktioniert, müssen wir einen Verweis auf eine Bibliothek festlegen. Und dazu können wir einfach auf die Referenzen klicken und die Option „NuGet-Pakete im Browser verwalten“ auswählen.
Innerhalb der Durchsuchen-Option müssen wir „Analysedienste“ schreiben . Und dann müssen wir in den verfügbaren Optionen die zweite auswählen und auf „Installieren“ klicken. Die Installation wird gestartet und es dauert einige Sekunden, bis die Installation abgeschlossen ist.
Als Nächstes müssen wir mithilfe von Microsoft.AnalysisServices.Tabular in den Code schreiben und dann ein Semikolon schreiben. Wir werden ein Serverobjekt erstellen, also können wir einfach Server schreiben , und der Name des Serverobjekts wird Server selbst sein, und wir werden New Server schreiben .
Im Grunde erstellen wir also ein neues Objekt im Speicher. Und um diesen Server mit der LuckyTemplates-Datei zu verbinden, verwenden wir eine Methode des Serverobjekts. Schreiben wir also server.Connect und geben hier die Portnummer an, die von AnalysisServices in LuckyTemplates überwacht wird.
Um diese Portnummer zu finden, gehen wir zu External Tools, klicken auf DAX Studio und im unteren Teil finden wir den lokalen Host. Das ist die Codenummer, mit der die SQL Server-Analysedienste, die wir in LuckyTemplates haben, die Änderungen abhören, die wir über LuckyTemplates oder ein anderes externes Tool senden.
Der Server ist eine Sache, aber im Fall von SSAS kann ein Server auch mehrere Modelle haben. Aber im Moment haben wir in LuckyTemplates nur ein Modell. Also werden wir dieses Modell deklarieren. Wir schreiben hier „Model is equal to (=) server.Databases “ und wir greifen auf die allererste Datenbank innerhalb dieses Servers zu, also schreiben wir „.Model“ .
Testen wir nun, ob dieser Teil des Codes funktioniert oder nicht. Dazu drucken wir einfach die Liste aller Tabellen aus, die wir in diesem Datenmodell haben. Also geben wir hier für jedes (Table t in model.Tables) die Klammer ein und drücken die Eingabetaste.
Danach geben wir Console.WriteLine (t.Name) ein . Um sicherzustellen, dass das Fenster nicht automatisch geschlossen wird, sobald der Name der Tabellen gedruckt wird, schreiben wir Console.ReadLine , öffnende und schließende Klammern und ein Semikolon. Jetzt müssen wir nur noch auf die Option „Start“ klicken und auf die Ausführung warten.
Sie können sehen, dass wir die Namen der Tabellen drucken können, die wir im Datenmodell haben. Wir haben die Daten, das Produkt, den Kunden und das Geschäft. Das bestätigt, dass das von uns erstellte Setup funktioniert.
Jetzt können wir uns also tatsächlich mit dem Kern des Codes befassen und mit der Erstellung des Codes beginnen, der uns beim Sortieren dieser Spalte nach dem ganzzahligen Gegenstück hilft.
Lassen Sie uns alles loswerden, was wir aus dem ForEach- Teil erstellt haben. Wir werden den Server und das Modell so belassen, wie es ist. Lassen Sie uns eine Variable deklarieren, die den Namen der Tabelle enthält, über die wir iterieren möchten. Ich nenne es DatesTable und der Name der Tabelle lautet im Grunde Dates .
Als nächstes haben wir foreach var t in model.Tables , dann verwenden wir eine where- Klausel, damit wir sagen können, wo T hingeht t.Name sollte gleich DatesTable sein . Wenn wir gerade die DatesTable durchlaufen, werden wir eine weitere Schleife über alle Spalten dieser DatesTable initiieren. Dafür können wir foreach var c in t.Columns schreiben .
Um zu testen, ob wir nur über die DatesTable iterieren und Zugriff auf alle Spalten der DatesTable haben, können wir einfach Console.WriteLine drucken und sagen c.Name .
Wenn ich F5 drücke, sehen Sie, dass wir Zugriff auf die Spalten erhalten.
Jetzt können wir weitermachen und mehr Code schreiben.
Wir werden eine Liste von Tupeln erstellen, die drei weitere Spalten enthalten wird. Eine der Spalten wird die Zielspalte sein. Die zweite Spalte ist die Spalte, nach der wir die Zielspalte sortieren möchten, und die dritte Spalte enthält einfach „true“ oder „false“, unabhängig davon, ob wir die Spalte, nach der wir tatsächlich sortieren, ausblenden möchten.
Nehmen wir an, wir möchten die Spalte „Kalenderjahr“ nach der Nummer des Kalenderjahres sortieren. Die erste Spalte enthält das Kalenderjahr, die zweite Spalte enthält die Kalenderjahresnummer und in der dritten Spalte wird entschieden, ob wir die Spalte mit der Kalenderjahresnummer ausblenden möchten, nachdem wir die Sortierung abgeschlossen haben oder nicht.
Und dafür kehren wir zu Visual Studio zurück, wo wir eine neue Variable erstellen werden. Sie können es beliebig benennen. In diesem Beispiel nenne ich es colOperations . Als nächstes schreiben wir new , erstellen dann eine Liste und schreiben den Spaltentyp (String, String und Bool). Danach erstellen wir die Tupel.
Im Grunde erstellen wir also einfach eine Liste mit drei Spalten und für drei Spalten haben wir zwei Zeilen bereitgestellt. Jetzt werden wir innerhalb unserer foreach- Schleife eine for-Schleife initiieren . Im Grunde sagen wir also, dass die Deklaration einer Variablen in jeder Iteration mit i beginnt . Wenn i kleiner als colOperations.Count ist, erhöhen Sie diesen Wert einfach .
Als nächstes schreiben wir eine IF- Anweisung. Der c.Name gehört zum Namen der Spalte, in der wir uns gerade befinden. Dann haben wir die colOperations i . Das i ermöglicht uns grundsätzlich den Zugriff auf eine bestimmte Zeile. Und wenn wir .Item1 schreiben , können wir auf die erste Spalte, die zweite Spalte oder die dritte Spalte zugreifen.
Zuerst verwenden wir also die Spalte „Item1“ . Wenn das wahr ist, schreiben wir einfach, dass c.SortByColumn gleich t.Columns sein sollte . Denken Sie daran, dass t das Tabellenobjekt ist. Dann greifen wir auf die Spalten dieser bestimmten Tabelle zu. Wir wollen colOperations , die Zeile, in der wir uns gerade in den Spaltenoperationen befinden, und die Spalte ist im Grunde das Item2- Objekt.
Um schließlich die bestimmte Spalte auszublenden, über die wir die Sortierung anwenden, schreiben wir eine letzte Codezeile.
Nachdem wir nun den Hauptcode geschrieben haben, den wir für unser tabellarisches Modell ausführen werden, können wir einfach den Code aus var colOperations kopieren und zum Tabular Editor übertragen und dann denselben Code ausführen.
Sortieren von Spalten in LuckyTemplates und SSAS mithilfe des Tabelleneditors
Wir werden den Server oder das Modellobjekt nicht verwenden, da der Tabular Editor hinter den Kulissen automatisch weiß, mit welchem LuckyTemplates-Modell oder Analysedienstmodell er eine Verbindung herstellen muss. Wir müssen diese Variablen also nicht verwenden, da dies bereits die Aufgabe des Tabelleneditors ist , zu identifizieren, wie er eine Verbindung zu diesen Modellen herstellen möchte.
Zurück in LuckyTemplates werden wir entweder Tabular Editor 3 oder Tabular Editor 2 starten. Sie können den von Ihnen gewünschten verwenden. In diesem Fall verwenden wir den Tabular Editor 3.
Wir gehen zur Registerkarte „Datei“, klicken auf „Neuer C#-Code“ und schließen die Option „Eigenschaften“. Dann können wir den Code hier einfügen. Das Einzige, worauf wir achten müssen, ist, dass wir anstelle der Modellvariablen das Modellobjekt verwenden . Lassen Sie uns also das große M verwenden und diesen Code ausführen.
Nachdem das Skript nun erfolgreich ausgeführt wurde und auch drei Modelländerungen angezeigt werden, werden wir die Änderungen wieder in das Datenmodell übernehmen. Wir speichern alles, was wir auf diese Spalten angewendet haben.
Zurück in LuckyTemplates können Sie sehen, dass die Monatsnummer ausgeblendet ist. Wenn ich auf die Spalte „Monat“ klicke und zu den Spaltentools und zur Spalte „Sortieren nach“ gehe , können Sie sehen, dass eine bestimmte Spalte nach der Monatsnummer sortiert wurde. Das Gleiche gilt für die Kalenderjahr-Monatsnummer.
Das Kalenderjahr ist nach sich selbst sortiert, da wir diese Spalte nicht in diesem C#-Code hatten. Wir können also den Tabelleneditor erneut starten und ein weiteres Tupel erstellen. Und dann führen wir dieses Skript noch einmal aus.
Tabular Editor LuckyTemplates: Überprüfung und Tutorial zu Version 3
LuckyTemplates Tabular Editor 3: Automatisieren Sie mit einem Skript
die DAX-Codierung im Tabular Editor 3
Abschluss
So einfach lässt sich das Sortieren einer Spalte nach einer anderen Spalte in und SSAS automatisieren. Dies war ein sehr einfaches Beispiel dafür, wie Sie diese Operation in der Datumstabelle ausführen können. Sie können diese Liste jedoch erweitern, indem Sie weitere Spalten hinzufügen und dann nach einer anderen Tabelle suchen.
Auf diese Weise können Sie den Zeitaufwand für das Sortieren dieser Spalten für dieselben Modelle, die Sie immer wieder erstellen, reduzieren.
Ich hoffe, dass Sie dies hilfreich fanden. Wenn Sie Fragen haben, lassen Sie es mich einfach im Kommentarbereich wissen.
Sie erfahren, wie Sie Objekte aus einer .rds-Datei in R speichern und laden. In diesem Blog wird auch behandelt, wie Sie Objekte aus R in LuckyTemplates importieren.
Was ist Self in Python: Beispiele aus der Praxis
In diesem Tutorial zur DAX-Codierungssprache erfahren Sie, wie Sie die GENERATE-Funktion verwenden und einen Kennzahltitel dynamisch ändern.
In diesem Tutorial erfahren Sie, wie Sie mithilfe der Multi-Threaded-Dynamic-Visuals-Technik Erkenntnisse aus dynamischen Datenvisualisierungen in Ihren Berichten gewinnen.
In diesem Artikel werde ich den Filterkontext durchgehen. Der Filterkontext ist eines der Hauptthemen, über die sich jeder LuckyTemplates-Benutzer zunächst informieren sollte.
Ich möchte zeigen, wie der LuckyTemplates Apps-Onlinedienst bei der Verwaltung verschiedener Berichte und Erkenntnisse aus verschiedenen Quellen helfen kann.
Erfahren Sie, wie Sie Ihre Gewinnmargenänderungen mithilfe von Techniken wie Kennzahlenverzweigung und der Kombination von DAX-Formeln in LuckyTemplates ermitteln.
In diesem Tutorial werden die Ideen der Materialisierung von Datencaches und deren Auswirkungen auf die Leistung von DAXs bei der Bereitstellung von Ergebnissen erläutert.
Wenn Sie bisher noch Excel verwenden, ist dies der beste Zeitpunkt, LuckyTemplates für Ihre Geschäftsberichtsanforderungen zu verwenden.
Was ist LuckyTemplates Gateway? Alles was du wissen musst