Freigeben über


Materialisierung für metrische Ansichten

Von Bedeutung

Dieses Feature ist experimentell.

In diesem Artikel wird erläutert, wie Sie die Materialisierung für Metrikansichten verwenden, um die Abfrageleistung zu beschleunigen.

Die Materialisierung für Metrikansichten beschleunigt Abfragen mithilfe materialisierter Ansichten. Lakeflow Spark Declarative Pipelines orchestriert benutzerdefinierte materialisierte Ansichten für eine bestimmte Metrikansicht. Zum Abfragezeitpunkt leitet der Abfrageoptimierer Benutzerabfragen in der Metrikansicht durch automatisches Aggregat-bewusstes Abfrage-Matching, auch als Abfrage-Neuschreibung bezeichnet, intelligent zur besten materialisierten Ansicht weiter.

Dieser Ansatz bietet die Vorteile der Vorberechnung und automatischen inkrementellen Aktualisierungen, sodass Sie nicht festlegen müssen, welche Aggregationstabelle oder materialisierte Ansicht für unterschiedliche Leistungsziele abgefragt werden soll. Zudem entfällt die Notwendigkeit, separate Produktions-Pipelines zu verwalten.

Überblick

Das folgende Diagramm veranschaulicht, wie metrische Ansichten die Definition und Abfrageausführung behandeln:

Definition der Materialisierung von metrischen Ansichten und Ausführung von Abfragen

Definitionsphase

Wenn Sie eine Metrikansicht mit Materialisierung definieren, geben CREATE METRIC VIEW oder ALTER METRIC VIEW Ihre Dimensionen, Kennzahlen und den Aktualisierungszeitplan an. Databricks erstellt eine verwaltete Pipeline , die die materialisierten Ansichten verwaltet.

Abfrageausführung

Wenn Sie SELECT ... FROM <metric_view> ausführen, verwendet der Abfrageoptimierer die aggregatbasierte Abfrageüberschreibung, um die Leistung zu optimieren.

  • Schneller Pfad: Liest bei Bedarf aus vordefinierten materialisierten Ansichten.
  • Fallbackpfad: Liest direkt aus Quelldaten, wenn Materialisierungen nicht verfügbar sind.

Der Abfrageoptimierer gleicht die Leistung und Aktualität automatisch aus, indem zwischen materialisierten und Quelldaten ausgewählt wird. Sie erhalten unabhängig davon, welcher Pfad verwendet wird, transparent Ergebnisse.

Anforderungen

So verwenden Sie die Materialisierung für Metrikansichten:

  • Ihr Arbeitsbereich muss serverlose Berechnungen aktiviert haben. Dies ist erforderlich, um Lakeflow Spark Declarative Pipelines auszuführen.
  • Databricks Runtime 17.2 oder höher.

Konfigurationsreferenz

Alle Informationen im Zusammenhang mit der Materialisierung werden in einem Feld der obersten Ebene definiert, das in der YaML-Definition der Metrikansicht benannt materialization ist.

Hinweis

Während dieses Feature eingeführt wird, können Metrikansichten der Version 1.1 mit Materialisierungen einen folgenden Fehler in der zugrunde liegenden Pipeline erzeugen.

[METRIC_VIEW_INVALID_VIEW_DEFINITION] The metric view definition is invalid. Reason: Invalid YAML version: 1.1.

Verwenden Sie in diesem Fall stattdessen Version 0.1. Beachten Sie, dass Version 0.1 einige features, die in Version 1.1 verfügbar sind, nicht unterstützt. Die Materialisierung für Metrikansichten wird innerhalb der nächsten Wochen in allen Arbeitsbereichen verfügbar sein.

Das materialization Feld enthält die folgenden Pflichtfelder:

  • schedule: Unterstützt dieselbe Syntax wie die Zeitplanklausel für materialisierte Ansichten.
  • Modus: Muss auf relaxed.
  • materialized_views: Eine Liste der materialisierten Ansichten, die materialisiert werden sollen.
    • name: Der Name der Materialisierung.
    • Dimensionen: Eine Liste der zu materialisierenden Dimensionen. Nur direkte Verweise auf Dimensionsnamen sind zulässig; Ausdrücke werden nicht unterstützt.
    • Measures: Eine Liste der Maßnahmen, die zu materialisieren sind. Nur direkte Verweise auf Maßstabnamen sind zulässig; Ausdrücke werden nicht unterstützt.
    • type: Gibt an, ob die materialisierte Ansicht aggregiert wird oder nicht. Akzeptiert zwei mögliche Werte: aggregated und unaggregated.
      • Wenn typeaggregated ist, muss mindestens eine Dimension oder ein Maß vorhanden sein.
      • Wenn typeunaggregated ist, sollten keine Dimensionen oder Maße definiert werden.

Hinweis

Die Klausel wird für die TRIGGER ON UPDATE Materialisierung für Metrikansichten nicht unterstützt.

Beispieldefinition

version: 0.1

source: prod.operations.orders_enriched_view

filter: revenue > 0

dimensions:
  - name: category
    expr: substring(category, 5)

  - name: color
    expr: color

measures:
  - name: total_revenue
    expr: SUM(revenue)

  - name: number_of_suppliers
    expr: COUNT(DISTINCT supplier_id)

materialization:
  schedule: every 6 hours
  mode: relaxed

  materialized_views:
    - name: baseline
      type: unaggregated

    - name: revenue_breakdown
      type: aggregated
      dimensions:
        - category
        - color
      measures:
        - total_revenue

    - name: suppliers_by_category
      type: aggregated
      dimensions:
        - category
      measures:
        - number_of_suppliers

Modus

Im relaxed Modus überprüft die automatische Abfrageneuschreibung nur, ob die kandidatenmaterialisierten Ansichten über die erforderlichen Dimensionen und Messwerte verfügen, um die Abfrage zu beantworten.

Dies bedeutet, dass mehrere Prüfungen übersprungen werden:

  • Es gibt keine Überprüfungen, ob die materialisierte Ansicht auf dem neuesten Stand ist.
  • Es gibt keine Überprüfung, ob Sie über übereinstimmende SQL-Einstellungen verfügen (z ANSI_MODE . B. oder TIMEZONE).
  • Es gibt keine Überprüfungen, ob die materialisierte Ansicht deterministische Ergebnisse zurückgibt.

Wenn die Abfrage eine der folgenden Bedingungen enthält, tritt die Abfrageumschreibung nicht auf, und die Abfrage greift auf die Quelltabellen zurück:

  • Sicherheit auf Zeilenebene (RLS) oder Maskierung auf Spaltenebene (CLM) in materialisierten Ansichten.
  • Nicht deterministische Funktionen wie current_timestamp() in materialisierten Ansichten. Diese können in der Definition der Metrikansicht oder in einer Quelltabelle angezeigt werden, die von der Metrikansicht verwendet wird.

Hinweis

Während des experimentellen Veröffentlichungszeitraums ist relaxed der einzige unterstützte Modus. Wenn diese Überprüfungen fehlschlagen, greift die Abfrage auf die Quelldaten zurück.

Arten von Materialisierungen für metrische Ansichten

In den folgenden Abschnitten werden die Typen materialisierter Ansichten erläutert, die für Metrikansichten verfügbar sind.

Aggregierter Typ

Dieser Typ berechnet Aggregationen für angegebene Maß- und Bemaßungskombinationen für die gezielte Abdeckung vor.

Dies ist nützlich für die Ausrichtung bestimmter allgemeiner Aggregationsabfragemuster oder Widgets. Databricks empfiehlt, potenzielle Filterspalten als Dimensionen in die materialisierte Ansichtskonfiguration aufzunehmen. Potenzielle Filterspalten sind Spalten, die zur Abfragezeit in der WHERE Klausel verwendet werden.

Nicht aggregierter Typ

Dieser Typ materialisiert das gesamte nicht aggregierte Datenmodell (z. B. die Felder source, join und filter) für eine breitere Abdeckung mit weniger Leistungssteigerung im Vergleich zum aggregierten Typ.

Verwenden Sie diesen Typ, wenn Folgendes zutrifft:

  • Die Quelle ist eine teure Ansicht oder SQL-Abfrage.
  • Verknüpfungen, die in Ihrer Metrikansicht definiert sind, sind teuer.

Hinweis

Wenn es sich bei der Quelle um einen direkten Tabellenverweis ohne angewendeten selektiven Filter handelt, bietet eine nicht aggregierte materialisierte Ansicht möglicherweise keine Vorteile.

Materialisierungslebenszyklus

In diesem Abschnitt wird erläutert, wie Materialisierungen während des gesamten Lebenszyklus erstellt, verwaltet und aktualisiert werden.

Erstellen und Ändern

Das Erstellen oder Ändern einer Metrikansicht (mithilfe von CREATE, ALTER oder Katalog Explorer) erfolgt synchron. Angegebene materialisierte Ansichten werden mithilfe von Lakeflow Spark Declarative Pipelines asynchron materialisiert.

Wenn Sie eine Metrikansicht erstellen, erstellt Databricks eine Lakeflow Spark Declarative Pipelines-Pipeline und plant umgehend ein erstes Update, sofern materialisierte Ansichten angegeben sind. Die Metrikansicht bleibt ohne Materialisierungen abfragbar, indem sie auf die Abfrage der Quelldaten zurückgreift.

Wenn Sie eine Metrikansicht ändern, werden keine neuen Aktualisierungen geplant, es sei denn, Sie aktivieren die Materialisierung zum ersten Mal. Materialisierte Ansichten werden erst dann für die automatische Umschreibung von Abfragen verwendet, wenn die nächste geplante Aktualisierung abgeschlossen ist.

Das Ändern des Materialisierungszeitplans löst keine Aktualisierung aus.

Weitere Informationen finden Sie unter "Manuelle Aktualisierung ", um das Aktualisierungsverhalten genauer zu steuern.

Untersuchen der zugrunde liegenden Pipeline

Die Materialisierung für Metrikansichten wird mithilfe von Lakeflow Spark Declarative Pipelines implementiert. Ein Link zur Pipeline ist auf der Registerkarte "Übersicht " im Katalog-Explorer vorhanden. Informationen zum Zugreifen auf den Katalog-Explorer finden Sie unter Was ist der Katalog-Explorer?.

Sie können auch auf diese Pipeline zugreifen, indem Sie DESCRIBE EXTENDED in der Metrikansicht ausführen. Der Abschnitt "Informationen aktualisieren" enthält einen Link zur Pipeline.

DESCRIBE EXTENDED my_metric_view;

Beispielausgabe:

-- Returns additional metadata such as parent schema, owner, access time etc.
> DESCRIBE TABLE EXTENDED customer;
                      col_name                       data_type    comment
 ------------------------------- ------------------------------ ----------
                           ...                             ...        ...

 # Detailed Table Information
                           ...                             ...

                      Language                            YAML
              Table properties                             ...
 # Refresh information
         Latest Refresh status                       Succeeded
                Latest Refresh                     https://...
              Refresh Schedule                   EVERY 3 HOURS

Manuelle Aktualisierung

Über den Link zur Seite "Lakeflow Spark Declarative Pipelines" können Sie manuell ein Pipelineupdate starten, um die Materialisierungen zu aktualisieren. Sie können dies auch mithilfe eines API-Aufrufs basierend auf der Pipeline-ID koordinieren.

Beispielsweise startet das folgende Python-Skript eine Pipelineaktualisierung:

from databricks.sdk import WorkspaceClient

client = WorkspaceClient()
pipeline_id = "01484540-0a06-414a-b10f-e1b0e8097f15"
client.pipelines.start_update(pipeline_id)

Um eine manuelle Aktualisierung als Teil eines Lakeflow-Auftrags auszuführen, erstellen Sie ein Python-Skript mit der obigen Logik, und fügen Sie es als Aufgabe des Typs Python-Skripts hinzu. Alternativ können Sie ein Notizbuch mit derselben Logik erstellen und eine Aufgabe vom Typ " Notizbuch" hinzufügen.

Schrittweise Aktualisierung

Die materialisierten Ansichten verwenden nach Möglichkeit eine inkrementelle Aktualisierung und weisen die gleichen Einschränkungen in Bezug auf Datenquellen und Planstruktur auf.

Ausführliche Informationen zu Voraussetzungen und Einschränkungen finden Sie unter Inkrementelles Aktualisieren von materialisierten Ansichten.

Automatische Abfragenneuschreibung

Abfragen zu einer Metrikansicht mit Materialisierung versuchen, ihre Materialisierungen so weit wie möglich zu verwenden. Es gibt zwei Abfrageumschreibungsstrategien: exakte Übereinstimmung und nicht aggregierte Übereinstimmung.

Aggregatfähige Abfrageumschreibung

Wenn Sie eine Metrikansicht abfragen, analysiert der Optimierer die Abfrage und die verfügbaren benutzerdefinierten Materialisierungen. Die Abfrage wird automatisch für die beste Materialisierung anstelle der Basistabellen mit diesem Algorithmus ausgeführt:

  1. Zuerst wird eine genaue Übereinstimmung versucht.
  2. Wenn eine nicht aggregierte Materialisierung vorhanden ist, wird eine nicht aggregierte Übereinstimmung versucht.
  3. Wenn die Abfrageumschreibung fehlschlägt, liest die Abfrage direkt aus den Quelltabellen.

Hinweis

Materialisierungen müssen abgeschlossen werden, bevor die Abfrage-Neuschreibung wirksam werden kann.

Überprüfen, ob die Abfrage materialisierte Ansichten verwendet

Um zu überprüfen, ob eine Abfrage eine materialisierte Ansicht verwendet, führen Sie EXPLAIN EXTENDED auf Ihre Abfrage aus, um den Abfrageplan anzuzeigen. Wenn die Abfrage materialisierte Ansichten verwendet, enthält __materialization_mat___metric_view der Blattknoten den Namen der Materialisierung aus der YAML-Datei.

Alternativ werden im Abfrageprofil dieselben Informationen angezeigt.

Genaue Übereinstimmung

Um für die Exaktübereinstimmungsstrategie berechtigt zu sein, müssen die Gruppierungsausdrücke der Abfrage exakt den Materialisierungsdimensionen entsprechen. Die Aggregationsausdrücke der Abfrage müssen eine Teilmenge der Materialisierungsmaße sein.

Nicht aggregierter Treffer

Wenn eine nicht aggregierte Materialisierung verfügbar ist, ist diese Strategie immer berechtigt.

Abrechnung

Das Aktualisieren materialisierter Ansichten verursacht Kosten für die Nutzung von Lakeflow Spark Declarative Pipelines.

Bekannte Einschränkungen

Die folgenden Einschränkungen gelten für die Materialisierung für Metrikansichten:

  • Eine Metrikansicht mit Materialisierung, die sich auf eine andere Metrikansicht als Quelle bezieht, kann keine nicht aggregierte Materialisierung haben.