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.
In diesem Tutorial werden wir den Unterschied zwischen der Datenindizierung in einer relationalen Datenbank und in Vertipaq behandeln.
Relationale Datenbanken speichern die Daten zeilenweise. Vertipaq hingegen erledigt dies Spalte für Spalte.
Sehen wir uns an, wie sich diese beiden Arten der Datenspeicherung und -indizierung auf Ihren Berichtsentwicklungsprozess auswirken können, insbesondere bei der Ausführung Ihrer Abfragen.
Inhaltsverzeichnis
Datenindizierung pro Zeile
Das zeilenweise Speichern der Daten ist die herkömmliche Art der Datenspeicherung. Dieser Vorgang nimmt jedoch mehr Zeit in Anspruch, was sich auf die Leistung Ihrer Abfrage auswirkt.
Nehmen wir an, wir haben eine Tabelle, die Marke, Farbe, Geschlecht, Menge und Nettopreis enthält.
Wenn wir alles in dieser Tabelle in einer Datenbank speichern, werden die Daten Zeile für Zeile gespeichert. Aus diesem Grund wird die traditionelle Datenspeicherstruktur auch als Zeilenspeicher bezeichnet.
Zunächst werden in derselben Zeile die Spaltenüberschriften der ersten Zeile gespeichert – Marke, Farbe, Geschlecht, Menge und Nettopreis. Dann geht es weiter zur nächsten Zeile, um die ersten Elemente unter jeder Spalte zu speichern – A. Datum, Azure, ein Leerzeichen, 1 und 103,2. Dies geht Reihe für Reihe weiter.
Wie berechnen wir also mit dieser Datenindizierungsmethode die
Zunächst beginnt es mit der ersten Zeile, die die Spaltenüberschriften enthält. Dann springt es in die nächste Zeile und überspringt die anderen Datenelemente, bis es die erste Größe erreicht, die es sieht, nämlich 1. Dann springt es von Zeile zu Zeile, durchläuft alle Daten, die jede Zeile enthält, und sammelt alle Mengen sind Funde.
Sobald alle Mengen aus jeder Zeile beiseite gelegt wurden, ist die Berechnung erst dann abgeschlossen.
Sie können sich wahrscheinlich vorstellen, wie langwierig der Prozess ist, wenn Sie einen LuckyTemplates-Bericht vorbereiten, der eine DirectQuery-Verbindung zu einer SQL-Datenquelle verwendet. In diesem Fall konvertieren Analysis Services den DAX-Code in die SQL-Sprache und beginnen dann damit, die Datenstruktur Zeile für Zeile durchzugehen.
Datenindizierung pro Spalte
Um den damit verbundenen langwierigen Prozess zu vermeiden, haben Sie die Möglichkeit, die Daten spaltenweise über Vertipaq zu speichern, wenn Sie den Importmodus wählen.
Wenn Sie den Spaltenspeicher anstelle des Zeilenspeichers verwenden, werden Marke, Farbe, Geschlecht, Menge und Nettopreis jeweils in unterschiedlichen Datenstrukturen gespeichert.
Nehmen wir an, wir möchten die SUMME der Werte in der Spalte „Menge“ erhalten. Es besteht keine Notwendigkeit, Marke, Farbe und andere Daten außerhalb der Spalte „Menge“ weiterzugeben. In einem einzigen Scan wird die gesamte Mengenspalte von oben nach unten gelesen und alle Werte summiert.
Dadurch werden die Abfragen schneller ausgeführt als von links nach rechts.
Vergleich der Ausführungszeit in einfachen Abfragen
Um den großen Unterschied zwischen Zeilenspeicher und Spaltenspeicher wirklich zu erkennen, führen wir einige Testabfragen sowohl in SQL als auch in Vertipaq durch. Die Ausführungszeit sollte uns sagen, wie schnell ein Prozess im Vergleich zum anderen ist.
Beginnen wir mit einer einfachen Abfrage in SQL. Wir werden die SUMME der Spalte „Menge“ in der Tabelle „Verkäufe“ berechnen.
Wie Sie sehen, beträgt die Gesamtausführungszeit 2,2 Sekunden.
Gehen wir nun zu DAX Studio und verwenden Sie die EVALUATE- Funktion, um dieselbe Abfrage auszuführen. Wir müssen die Server-Timings einschalten und warten, bis die Ablaufverfolgung abgeschlossen ist.
Wir müssen außerdem sicherstellen, dass die Option „Cache leeren und dann ausführen“ ausgewählt ist, wenn wir die Abfrage ausführen.
Sobald die Abfrage ausgeführt ist, werden Sie feststellen, dass es nur 3 Millisekunden dauert, um dieselbe Abfrage abzuschließen, die wir zuvor in SQL durchgeführt haben.
Die Ergebnismenge sollte auch für SQL und DAX Studio übereinstimmen. Wenn wir sie nebeneinander platzieren, können Sie sehen, dass wir denselben Wert zurückgeben.
Sie können versuchen, die Abfrage noch einige Male auszuführen, um zu sehen, wie konsistent die Ausführungszeit ist.
Vergleich der Ausführungszeit bei komplizierteren Abfragen
Vergleichen wir dieses Mal die Ausführungszeit, wenn wir kompliziertere Abfragen ausführen.
Nehmen wir an, wir möchten die SUMME der Verkaufsmengen für jede Marke ermitteln . Dazu können wir über den der jeweiligen Produktmarke verwenden. Im niedrigen Kontext erstellen wir außerdem eine neue Tabelle mit dem Namen „Gesamtmenge“, in der wir die SUMME der Verkaufsmenge
Wenn wir diesen Code ausführen, können Sie sehen, dass die Gesamtausführungszeit 7 Millisekunden beträgt.
Im Hintergrund führt dieser Code tatsächlich zwei Abfragen aus. Der erste nimmt die Spalte „Marke“ aus der Tabelle „Produkte“ und führt dann einen OUTER JOIN für die Produktschlüsselspalten sowohl der Spalte „Verkäufe“ als auch der Spalte „Produkte“ aus.
Die zweite Abfrage ruft einfach die Spalte „Marke“ aus der Tabelle „Produkte“ ab.
Wenn ich zum Ergebnisbildschirm gehe, können Sie sehen, dass die Gesamtmenge nach Marke aufgeteilt wurde.
Gehen wir nun zum SQL-Server und schreiben dieselbe Abfrage.
Wir verschieben die DaxStudio Sales-Tabelle in die nächste Zeile und verweisen auf die Sales-Tabelle AS S. Anschließend führen wir auch einen LEFT JOIN in der DaxStudio Products-Tabelle aus, auf die AS P verwiesen wird, wobei der S.Product Key gleich ist P.Produktschlüssel. Wir werden P.Brand auch mit der SUMME der Menge und der Gesamtmenge in der SELECT- Anweisung verwenden . Schließlich werden wir für P.brand verwenden.
Sobald wir diesen Code ausführen, erhalten wir eine Tabelle, die die nach jeder Marke getrennte Gesamtmenge enthält. Dies ist dasselbe, was wir zuvor in Vertipaq erhalten haben.
Die Gesamtausführungszeit bleibt mit 2,5 Sekunden deutlich langsamer.
DAX für LuckyTemplates: Optimierung mithilfe von Formel-Engines in DAX Studio,
Techniken und Lektionen zur DAX-Abfrageoptimierung,
Abfrageleistung und DAX Studio-Setup
Abschluss
Es ist offensichtlich, wie schnell der Spaltenspeicher durch Vertipaq im Vergleich zum Zeilenspeicher in einer SQL-Datenbank wirklich ist. Dies zeigt, wie wichtig es ist, die Funktionsweise der Datenindizierung auf verschiedenen Plattformen wirklich kennenzulernen.
Es mag auf den ersten Blick wie ein kleines Opfer erscheinen, wenn Sie sich dennoch für die 2,5 Sekunden entscheiden, die der Zeilenspeicher für die Ausführung Ihrer Abfrage benötigt, im Vergleich zu 7 Millisekunden. Doch wenn wir unsere Berichte erstellen, führen wir alle mehrere Abfragen durch, und diese Ausführungszeiten summieren sich, was sich auf lange Sicht auf die Produktivität und das Benutzererlebnis auswirkt.
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