Arbeiten mit Union-Knoten in Calculation Views

Unions-Pruning implementieren

Objective

After completing this lesson, you will be able to implementieren Sie das Union-Pruning, um die Performance von Calculation Views zu verbessern.

Union Pruning

Was ist Union Pruning?

Es gibt Möglichkeiten, die Leistung von Gewerkschaften durch die Implementierung von Union Pruning deutlich zu verbessern. Es gibt drei Ansätze für die Implementierung von Pruning-Regeln in Gewerkschaften. Zwei dieser Ansätze basieren auf Spaltenwerten und einer auf Spaltennamen. Zuerst wird das Union-Pruning mithilfe von Werten behandelt.

Konstanten-Pruning

Für jede Datenquelle in einem Union-Knoten können Sie eine zusätzliche Spalte definieren und mit einem konstanten Wert füllen, um die Bedeutung der Datenquelle explizit zu kennzeichnen. Sie können beispielsweise den konstanten Wertplan der Datenquelle zuordnen, die Plandaten darstellt, und den konstanten Wert Ist der Datenquelle zuordnen, die Istdaten darstellt. Wenn ein Abfragefilter - WHERE-Klausel - nicht mit dem Konstantenwert für eine bestimmte Quelle einer Union übereinstimmt, wird die Quelle ignoriert. Dies wird als explizites Pruning bezeichnet. Explizites Pruning hilft bei der Performance, da der Zugriff auf Datenquellen, die von der Query nicht benötigt werden, vermieden wird.

Reihe von Bildschirmaufnahmen, die ein Beispiel für explizites Union-Pruning zeigen. Verwenden Sie das Dialogfenster Zuordnung verwalten, um das neue Feld Temperatur mit dem Konstantenwert alt für eine Quelle mit älteren Daten und den Wert neu für eine Quelle mit aktuellen Daten zu füllen. Wenn eine Abfrage eine Klausel ...WHERE Temperature = 'old' enthält, wird die Quelle für aktuelle Daten bereinigt.

Im Beispiel in der Abbildung „Union-Pruning" hat der Union-Knoten eine neue Spalte, die im Union-Knoten definiert ist. Um den Konstantenwert zuzuordnen, verwenden wir den Bereich „Zuordnung verwalten" und geben einen Konstantenwert für die neue Spalte pro Datenquelle ein. In unserem Fall heißt die neue Spalte Temperatur. In unserem Fall wird entweder der Wert alt oder neu zugeordnet. Dies ist eine einfache Möglichkeit, Datenquellen in Unionen zu bereinigen, in denen die Regeln einfach sind und sich selten ändern. Obwohl ein Union-Knoten in der Regel nur eine konstante Spalte hat, können Sie mehrere konstante Spalten anlegen und zuordnen und AND/OR-Filterbedingungen in Ihrer Abfrage verwenden. Ein wichtiger Punkt ist jedoch, dass, wenn Sie in der sendenden Abfrage nicht explizit auf die konstante Spalte verweisen, die Datenquelle immer in der Union enthalten ist und nicht abgekürzt wird.

Explizites Pruning ist eine sehr einfache und direkte Möglichkeit, das Union-Pruning zu implementieren, erfordert jedoch die Pflege des Konstantenwerts in jedem Union-Knoten der Calculation View. Die Pflege von Pruning-Regeln in jeder Calculation View kann zu einer hohen Pflege führen.

Implizites Pruning

Implizites Pruning wird implementiert, indem eine oder mehrere Pruning-Regeln in einer dedizierten Tabelle namens Pruning-Konfigurationstabelle definiert werden. Die Pruning-Konfigurationstabelle befindet sich außerhalb der Calculation View und ermöglicht es Ihnen, die Regeln, die bestimmen, wann jede Quelle einer Union gültig ist, detaillierter zu beschreiben.

Dieser implizite Pruning-Ansatz muss keine Konstantenwerte im Union-Knoten für jede Datenquelle in der Calculation View bereitstellen. Mit einer Union-Pruning-Konfigurationstabelle können Sie mehrere Einzelwerte pro Spalte definieren, die mit der ODER-Logik behandelt werden. Sie können auch die Operatoren "größer als" und "kleiner als" verwenden. Sie können in einer Regel auch Werte über verschiedene Spalten hinweg definieren. Spaltenübergreifende Werte werden mit „AND"-Logik behandelt.

Dies bietet viel mehr Flexibilität gegenüber dem expliziten Pruning, bei dem Sie nur einen einzelnen Wert pro Datenquelle eingeben können. Dies bedeutet auch, dass Sie die Pruning-Regeln einfach aktualisieren können, da es sich dabei lediglich um Datensätze in einer Tabelle handelt, die von allen Calculation Views gemeinsam genutzt wird.

Reihe von Bildschirmaufnahmen, die ein Beispiel für implizites Union-Pruning zeigen. Verwenden Sie eine Konfigurationstabelle, um Bedingungen für jede Quelle aufzulisten: Im Beispiel enthält das Feld ChangedAt Werte niedriger als 2012-10-19 in der Quelle für ältere Daten und Werte, die mit 2012-10-19 in der Quelle für aktuelle Daten beginnen.

Wenn Sie zum ersten Mal eine Pruning-Konfigurationstabelle anlegen, müssen Sie einen Tabellennamen angeben. Anschließend stellen Sie die Pruning-Regeln mithilfe verschiedener Operatoren bereit:

  • Die möglichen Operatoren sind =, <, >, <=, >= und BETWEEN.

  • Der Operator BETWEEN bezieht sich auf ein geschlossenes Intervall (einschließlich der Werte LOW und HIGH).

  • Wenn mehrere Pruning-Bedingungen für dieselbe Spalte einer View vorhanden sind, werden sie mit OR kombiniert.

  • In verschiedenen Spalten werden die resultierenden Bedingungen mit AND kombiniert.

Die Bedingungen in einer Pruning-Konfigurationstabelle können für Spalten der folgenden Datentypen definiert werden:

  • INT
  • BIGINT
  • VARCHAR
  • NVARCHAR
  • Datum

Sie können beispielsweise festlegen, dass auf eine Quelle zu einer Union nur zugegriffen werden soll, wenn die Abfrage die Spalte JAHR = 2008 ODER JAHR = 2010 ODER JAHR zwischen 2012 und 2014 UND Spalte STATUS = A ODER STATUS = X anfordert.

Das bedeutet, wenn die angeforderten Daten 2008 und der Status „C" sind, wird die Quelle ignoriert. Wenn die Anforderung für 2013 und den Status „A" lautet, ist die Quelle gültig.

Wir können Eingabeparameter verwenden, um die Abfrage so zu leiten, dass nur die Union-Quellen verwendet werden, die die erforderlichen Daten enthalten.

Unabhängig davon, welche Methode Sie wählen, stellen Sie dem Optimierer wichtige Informationen zur Verfügung, die er bei Laufzeitentscheidungen in Bezug auf die Union-Quellen verwendet. Dadurch wird die bestmögliche Performance sichergestellt, indem nicht benötigte Verarbeitungsquellen vermieden werden.

Wertbasiertes Union-Pruning implementieren

Unions-Pruning optimieren

In diesem Video erfahren Sie mehr über die Optimierung von Union Pruning.

Spaltenbasiertes Union-Pruning

Spaltenbasiertes Pruning

Das spaltenbasierte Pruning ist ein weiterer Ansatz zur Eliminierung von Datenquellen innerhalb von Unions, die von Abfragen nicht benötigt werden. Im Gegensatz zu den anderen Ansätzen, die auf der Prüfung von Spaltenwerten basieren, prüft das spaltenbasierte Pruning jedoch, ob bestimmte Spalten von einer Abfrage angefordert wurden und ob diese Spalten als wichtig für eine Ergebnismenge definiert sind.

Spaltenbasiertes Pruning, das durch Bildschirmaufnahmen erläutert wird. Wenn eine Spalte nicht aus einer Quelle zugeordnet ist, kann diese Quelle für diese Spalte zugeschnitten werden.

Die Definition der Regeln besteht aus zwei Teilen.

  1. Erforderliche Spalten der Union-Ausgabe zuordnen
  2. Fokusspalte(n) definieren

In unserer Grafik sehen wir, dass beide Datenquellen die Spalte VERKAUF bereitstellen könnten, aber nur eine Datenquelle salesOrder2019 stellt die Spalte für die Ausgabe bereit.

Wir sehen auch, dass die Spalte VERKAUF als Fokusspalte definiert wurde. Das bedeutet, wenn eine Abfrage diese Spalte anfordert und die Datenquelle sie nicht bereitstellen kann, sind wir nicht an dieser Datenquelle interessiert, auch wenn andere Spalten (Jahr usw.) bereitgestellt werden könnten.

Es ist möglich, mehrere Fokusspalten zu definieren. Dabei kann es sich um Attribute, Kennzahlen oder eine Mischung aus beidem handeln.

Dieser Ansatz bietet eine Möglichkeit, flexible Pruning-Bedingungen zu definieren, die auf die aufrufende Query reagieren, basierend darauf, welche Spalten angefordert werden.

Notiz

Es ist möglich, alle drei Union-Pruning-Ansätze zu mischen, wenn dies sinnvoll ist.

Spaltenbasiertes Union-Pruning implementieren

Spaltenbasiertes Pruning

In diesem Video erfahren Sie, wie Sie das Unions-Pruning basierend auf den Spalten optimieren, die in der Abfrage enthalten sind, die auf der Calculation View ausgeführt wird.