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.
Ich möchte heute etwas Zeit damit verbringen, über Tabellen in LuckyTemplates zu sprechen. Wir stoßen bei jedem Problem ständig auf Tabellen, verbringen aber nicht wirklich viel Zeit damit, nur über sie nachzudenken. Das vollständige Video dieses Tutorials können Sie unten in diesem Blog ansehen.
Kürzlich gab es einen Beitrag von LuckyTemplates-Mitglied Ashton, der immer gute, zum Nachdenken anregende Fragen parat hat. Seine Frage brachte mich dazu, über ein Muster nachzudenken, das ich ziemlich regelmäßig sehe und das ich in diesem Tutorial behandeln möchte.
Es war kein Fehler, den er gemacht hat, aber es ist ein häufiger Fehler. Ich sehe oft, dass Leute sagen, dass sie Probleme mit einem virtuellen Tisch haben, wenn es sich beispielsweise gar nicht um einen virtuellen Tisch handelt.
Es gibt einen echten Unterschied zwischen den Tabellentypen in LuckyTemplates.
Die Analogie, die ich anführen würde, wäre, wenn jemand sagen würde: „Hey, ich habe kürzlich einen Hund adoptiert und ich habe Probleme mit dem Hund und frage mich, ob Sie helfen können“ und es ist kein Hund, sondern ein Wolf. Sie sind beide Eckzähne, aber es gibt einige ziemlich große Unterschiede, die Sie berücksichtigen sollten.
Obwohl sie also alle zur gleichen Familie gehören, genau wie die Tabellen in LuckyTemplates, stellen sie wichtige Unterschiede dar, die sich wirklich auf die Lösung und die Art und Weise auswirken, wie Sie diese Tabellen verwenden. Deshalb wollte ich Ashtons Frage noch einmal aufgreifen und mich dann ein wenig mit den Unterschieden zwischen den Tabellen in LuckyTemplates befassen und zeigen, wie sich diese auf die Art und Weise auswirken, wie Sie damit umgehen.
Die Frage war ziemlich einfach, aber es steckt etwas mehr dahinter, als es zunächst den Anschein hat. Er hatte einen einfachen Datensatz, der nur die Kunden, die Art der von ihnen gekauften Früchte, die Menge und dann nur eine Indexnummer enthielt.
Er wollte einen Slicer mit Mehrfachauswahlfunktion haben , damit bei der Auswahl von beispielsweise Orange alle Kunden angezeigt werden, die Orangen gekauft haben, aber auch angezeigt wird, was sie sonst noch gekauft haben.
Wenn wir also diese Auswahl (orange) deaktivieren, können wir den vollständigen Datensatz sehen. Wir können auch sehen, dass dies die beiden Kunden (Joe und Mary) sind, die Orangen gekauft haben, aber jeder von ihnen hat auch einen weiteren Kauf getätigt.
Das erste, was wir wissen, ist, dass es sich bei dem Obstschneider um einen nicht angeschlossenen Schneidetisch handeln muss. Wenn es ein normaler Slicer wäre, würden Sie Orange treffen und im Grunde alles außer Orange in der Tabelle entfernen. Da dies dynamisch ist, wissen wir auch, dass wir ein Problem mit der virtuellen Tabelle haben.
Lassen Sie uns also ein wenig näher darauf eingehen, werfen wir aber vorher einen Blick auf die verschiedenen Tabellentypen, die wir in LuckyTemplates finden.
Inhaltsverzeichnis
Drei Arten von Tabellen in LuckyTemplates
Es gibt drei Arten von Tabellen, die wir regelmäßig finden. Die erste ist die gebräuchlichste und es handelt sich um eine physische Tabelle, bei der es sich tatsächlich um Ihre Primärdaten handelt. Immer wenn Sie Daten abrufen oder Daten direkt über diese Option oder in Power Query eingeben , führen Sie eine Referenz oder ein Duplikat durch oder Sie laden Daten über eine leere Abfrage, wie eine Datumstabelle, das ist eine physische Tabelle.
Eine physische Tabelle ist nicht vollständig dynamisch, verfügt aber über all diese anderen Eigenschaften, die die Dateigröße erhöhen, da es sich um physische Daten handelt. Es ist in Power Query zugänglich. Typischerweise werden die Beziehungen im Datenmodell durch physische Beziehungen aufgebaut. Das muss nicht sein, ist es aber in der Regel. Sie werden für Primärdaten verwendet und Sie visualisieren diese entweder über die Datenansicht oder über Power Query.
Eine physische Tabelle ist nicht vollständig dynamisch, verfügt aber über all diese anderen Eigenschaften, die die Dateigröße erhöhen, da es sich um physische Daten handelt. Es ist in Power Query zugänglich. Typischerweise werden die Beziehungen im Datenmodell durch physische Beziehungen aufgebaut. Das muss nicht sein, ist es aber in der Regel. Sie werden für Primärdaten verwendet und Sie visualisieren diese entweder über die Datenansicht oder über Power Query.
Diejenige, die oft mit der virtuellen Tabelle verwechselt wird, ist diese berechnete Tabelle oder das, was wir auch als DAX-Ausdruckstabelle bezeichnen können. Dies hat eine direkte Analogie zu berechneten Spalten, die durch DAX- Ausdrücke erstellt werden . Dies erfolgt über die Registerkarte „Modellierung“ und die Option „Neue Tabelle“. Anschließend geben Sie den DAX-Ausdruck ein.
Diejenige, die oft mit der virtuellen Tabelle verwechselt wird, ist diese berechnete Tabelle oder das, was wir auch als DAX-Ausdruckstabelle bezeichnen können. Dies hat eine direkte Analogie zu berechneten Spalten, die durch DAX-Ausdrücke erstellt werden. Dies erfolgt über die Registerkarte „Modellierung“ und die Option „Neue Tabelle“. Anschließend geben Sie den DAX-Ausdruck ein.
Wie Sie der Vergleichstabelle unten entnehmen können, unterscheidet sich das Profil der berechneten Tabelle deutlich von der physischen oder der virtuellen Tabelle. Es ist nicht vollständig dynamisch.
Es muss aktualisiert werden, um die neuen Informationen aufzunehmen. Es erhöht die physische Dateigröße. Im Gegensatz zu einer direkten physischen Tabelle ist sie in Power Query nicht zugänglich. Genauso wie eine berechnete Spalte in Power Query nicht angezeigt wird, wird dies auch bei einer berechneten Tabelle nicht der Fall sein. Aber es besitzt die anderen Aspekte eines physischen Tisches.
In der Regel werden berechnete Tabellen zur Unterstützung von Tabellen und häufiger zum Debuggen verwendet. Mittlerweile gibt es bessere Tools wie DAX Studio und Tabular Editor, daher wird es dafür nicht so häufig verwendet. Sie können diese Tabelle über die Datenansicht anzeigen.
Und ehrlich gesagt ist es, wie bei berechneten Spalten, im Allgemeinen etwas, von dem man die Finger lassen sollte. Es gibt bessere Möglichkeiten, Dinge zu erledigen, als mit berechneten Tabellen.
Und die Analogie zu den Maßen sind die echten virtuellen Tabellen . Diese werden im Rahmen von Kennzahlen durch den DAX Measure Code erstellt. Im Gegensatz zu den beiden anderen Tabellentypen sind sie vollständig dynamisch. Sie erhöhen die Dateigröße nicht, da sie auf Abruf verfügbar sind. Genau wie Kennzahlen werden virtuelle Tabellen bei Bedarf im Speicher berechnet und alle im Verlauf der Kontexte verwendet, für die sie benötigt werden.
Sie sind in Power Query nicht zugänglich. Man kann ihnen keine körperliche Beziehung zuordnen. Wenn Sie sie in Ihrem Datenmodell in Beziehung setzen, tun Sie dies mithilfe virtueller Beziehungen, am häufigsten mit .
Virtuelle Tabellen werden für Zwischenberechnungen in Kennzahlen verwendet, da eine Kennzahl keinen Tabellenwert zurückgeben kann und einen Skalarwert zurückgeben muss. Daher verwenden Sie diese normalerweise als Zwischenberechnung, auf deren Grundlage Sie Ihre Skalierer generieren, die das resultierende Produkt Ihrer Messung sind.
Sie können diese Tabellen in Tools wie DAX Studio, Tabular Editor oder New Table visualisieren, was wiederum wahrscheinlich die am wenigsten wünschenswerte Methode ist, da Ihr Datenmodell mit einer Menge zusätzlicher Tabellen überladen wird, es sei denn, Sie löschen diese.
DAX-Measure-Lösung für einen virtuellen Tisch
Um auf Ashtons Frage zurückzukommen: Wenn wir uns die Tabelle ansehen, können wir erkennen, dass sie dynamisch ist. Wir können auch mehrere Auswahlmöglichkeiten treffen und dies ändert sich völlig spontan. Daher wissen wir, dass es sich um eine virtuelle Tabelle handelt, da die anderen beiden (physische und berechnete Tabellen) nicht vollständig dynamisch sind. Wir wissen auch, dass es sich um eine nicht verbundene Tabelle handelt, wie ich eingangs erwähnt habe.
Um dieses Problem zu lösen, habe ich das Rubber Duck-Konzept verwendet. In einem früheren Tutorial habe ich über dieses Konzept des Rubber Ducking gesprochen, bei dem eine konzeptionelle Lösung für das Problem entwickelt wird, bevor man sich mit dem spezifischen DAX befasst.
Und so habe ich für die Gummi-Enten-Lösung hier im Wesentlichen diesen getrennten Slicer-Tisch zusammengestellt. Dann habe ich den Wert dieser Slicer geerntet. Als nächstes habe ich mir eine virtuelle Tabelle ausgedacht, die die Kunden nach denen filterte, die die Auswahl in der nicht verbundenen Tabelle gekauft hatten.
Dann nahm ich diese Kundenliste und filterte unseren ursprünglichen Datensatz nach diesen Kunden, um zusätzlich zum Slicer-Wert die Kunden und die von diesen Kunden getätigten Käufe zu ermitteln.
Werfen wir einen Blick auf die spezifische Maßnahme, um zu sehen, wie sich dies ausgewirkt hat, und um einige Überlegungen anzustellen, die Sie bei der Arbeit mit virtuellen Tischen berücksichtigen müssen.
Zunächst galt es, zwei Erntemaßnahmen für unsere Werte zu entwickeln. Der erste Wert ist der Wert des getrennten Slicers.
Da wir die Mehrfachauswahl in der Anforderung hatten, bedeutete das, dass wir nicht einfach verwenden konnten . Also habe ich die Funktion verwendet, um möglicherweise eine oder mehrere Auswahlen in diesem nicht verbundenen Slicer zu erfassen. Für Kunden können wir SELECTEDVALUE verwenden, da wir in jeder auszuwertenden Zeile einen Kunden haben.
Das nächste, was ich tat, war diese virtuelle Tabellenvariable ( VAR Buyers ), die mit beginnt . Anschließend werden die Kunden danach gefiltert, ob sie einen Obstkauf getätigt haben, der unseren Werten des nicht verbundenen Slicers entsprach.
Wir können dies überprüfen, indem wir eine DAX-Abfrage durchführen. Wir können dies entweder in DAX Studio oder im Tabelleneditor tun. Nehmen wir also hier unser virtuelles Tabellenmaß und kopieren es in den Tabelleneditor. Wir werden sicherstellen, dass es uns die Werte vermittelt, die wir erwarten, nämlich Joe und Mary.
DAX-Abfragen geben immer Tabellen zurück und sie begannen immer mit EVALUATE, daher fügen wir hier EVALUATE hinzu. Allerdings erhalten wir im Ergebnis nichts. Dies liegt daran, dass die ausgewählte Erntevariable zum Trennen von Früchten ( SelDisconnFruit ) keine Kenntnis vom Slicer hat. Es ist aus dem Kontext gerissen.
Die Art und Weise, dies zu testen, besteht darin, den Slicer-Wert künstlich festzulegen. Wir ersetzen SelDisconnFruit hier durch eine kleine Tabelle. Geben Sie Orange (den Wert dieses Slicers) in geschwungenen Klammern ein . Und jetzt erhalten wir hier das Ergebnis, nämlich Joe und Mary. Damit funktioniert der virtuelle Tisch genau so, wie wir es uns vorgestellt haben.
Wir können jetzt also zu unserem Maßausdruck zurückkehren. Eine der Herausforderungen an virtuellen Tabellen besteht darin, dass sie sich einfach innerhalb einer Kennzahl erstellen lassen . Sie können jedoch keine virtuelle Tabelle als Ergebnis einer Maßnahme zurückgeben . Wir müssen also einen Skalar zurückgeben, der jedoch den relevanten Aspekt der virtuellen Tabelle erfasst.
Hier haben wir also die virtuelle Tabelle, die uns sagt, welche Kunden die Früchte gekauft haben, die im Value Slicer waren. Wir können eine weitere Variable ( VAR BuyerIn ) einrichten, die besagt, dass, wenn der ausgewählte Kunde in der Tabelle dieses Käufers war, er eine Eins erhält . Und wenn nicht, erhält es eine Null .
Dann nehmen wir die Ergebnisse und fügen sie in den Filterbereich ein. Wir sagen, dass es sich bei der Kennzahl „Key Buyers“ um eine handelt, nämlich um die Kunden, die in diesem Fall Orangen gekauft haben.
Auf diese Weise filtern wir unsere ursprüngliche Datentabelle nach den richtigen Datensätzen. Sie können sehen, dass jetzt diese virtuelle Tabelle erstellt wird und die Filterung basierend auf jeder Auswahl ordnungsgemäß durchgeführt wird.
Virtuelle Tabellen in iterierenden Funktionen in LuckyTemplates – DAX-Konzepte
Erstellen virtueller Beziehungen in LuckyTemplates mithilfe der TREATAS-Funktion.
So verwenden Sie die COUNTROWS-DAX-Funktion in virtuellen Tabellen
Abschluss
Das ist der Großteil dessen, was ich heute behandeln wollte. Es handelt sich um ein recht einfaches Beispiel für eine virtuelle Tabelle, wobei der Schwerpunkt jedoch auf dem Unterschied zwischen physischen Tabellen, berechneten Tabellen und virtuellen Tabellen liegt.
Im Hinblick auf virtuelle Tabellen gibt es viele interessante Probleme, die es noch einmal zu betrachten gilt, insbesondere beim Debuggen virtueller Tabellenkennzahlen. Darauf werde ich in den nächsten Wochen zurückkommen, aber im Moment ist das alles in diesem Tutorial.
Beifall!
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