Anwendungsfälle für materialisierte Ansichten
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer
Materialisierte Ansichten eine Aggregation Abfrage über eine Quelltabelle oder eine andere materialisierte Ansicht verfügbar machen. In diesem Artikel werden allgemeine und erweiterte Anwendungsfälle für materialisierte Ansichten behandelt.
Häufige Anwendungsfälle
Im Folgenden finden Sie häufige Szenarien, die mithilfe einer materialisierten Ansicht behandelt werden können:
Aktualisieren von Daten: Aktualisieren von Daten durch Zurückgeben des letzten Datensatzes pro Entität mithilfe
arg_max()
(Aggregationsfunktion). Erstellen Sie z. B. eine Ansicht, die nur datensätze materialisiert, die von jetzt an aufgenommen wurden:.create materialized-view ArgMax on table T { T | summarize arg_max(Timestamp, *) by User }
Reduzieren Sie die Auflösung von Daten Reduzieren Sie die Auflösung von Daten, indem Sie regelmäßige Statistiken über die Rohdaten berechnen. Verwenden Sie verschiedene Aggregationsfunktionen nach Zeitraum. Verwalten Sie beispielsweise eine up-to-Datumsmomentaufnahme unterschiedlicher Benutzer pro Tag:
.create materialized-view UsersByDay on table T { T | summarize dcount(User) by bin(Timestamp, 1d) }
Deduplicate-Datensätze: Deduplicate-Datensätze in einer Tabelle mithilfe
take_any()
(Aggregationsfunktion). Erstellen Sie z. B. eine materialisierte Ansicht, die die Quelltabelle basierend auf der spalteEventId
dedupliziert, indem Sie einen Lookback von 6 Stunden verwenden. Datensätze werden nur mit Datensätzen dedupliziert, die 6 Stunden vor den aktuellen Datensätzen aufgenommen wurden..create materialized-view with(lookback=6h) DeduplicatedTable on table T { T | summarize take_any(*) by EventId }
Anmerkung
Sie können die Quelltabelle verbergen, indem Sie eine Funktion mit demselben Namen wie die Tabelle erstellen, die stattdessen auf die materialisierte Ansicht verweist. Dieses Muster stellt sicher, dass Aufrufer, die die Tabelle abfragen, auf die deduplizierte materialisierte Ansicht zugreifen, da Funktionen Tabellen mit demselben Namenüberschreiben. Um zyklische Verweise in der Ansichtsdefinition zu vermeiden, verwenden Sie die Table()-Funktion, um auf die Quelltabelle zu verweisen:
.create materialized-view DeduplicatedTable on table T { table('T') | summarize take_any(*) by EventId }
Weitere Beispiele finden Sie im .create materialized-view command.
Erweitertes Szenario
Sie können eine materialisierte Ansicht zum Erstellen/Aktualisieren/Löschen der Ereignisverarbeitung verwenden. Für Datensätze mit unvollständigen oder veralteten Informationen in jeder Spalte kann eine materialisierte Ansicht die neuesten Updates für jede Spalte bereitstellen, mit Ausnahme von Entitäten, die gelöscht wurden.
Berücksichtigen Sie die folgende Eingabetabelle mit dem Namen Events
:
Eingabe-
Zeitstempel | wiedergekäutes Futter | ID | Col1 | Col2 | Col3 |
---|---|---|---|---|---|
2023-10-24 00:00:00.0000000 | C | 1 | 1 | 2 | |
2023-10-24 01:00:00.0000000 | U | 1 | 22 | 33 | |
2023-10-24 02:00:00.0000000 | U | 1 | 23 | ||
2023-10-24 00:00:00.0000000 | C | 2 | 1 | 2 | |
2023-10-24 00:10:00.0000000 | U | 2 | 4 | ||
2023-10-24 02:00:00.0000000 | D | 2 |
Erstellen Sie eine materialisierte Ansicht, um die neueste Aktualisierung pro Spalte mithilfe der arg_max()-Aggregationsfunktionabzurufen:
.create materialized-view ItemHistory on table Events
{
Events
| extend Timestamp_col1 = iff(isnull(col1), datetime(1970-01-01), Timestamp),
Timestamp_col2 = iff(isnull(col2), datetime(1970-01-01), Timestamp),
Timestamp_col3 = iff(isnull(col3), datetime(1970-01-01), Timestamp)
| summarize arg_max(Timestamp_col1, col1), arg_max(Timestamp_col2, col2), arg_max(Timestamp_col3, col3), arg_max(Timestamp, cud) by id
}
Ausgabe-
ID | Timestamp_col1 | Col1 | Timestamp_col2 | Col2 | Timestamp_col3 | Col3 | Zeitstempel | wiedergekäutes Futter |
---|---|---|---|---|---|---|---|---|
2 | 2023-10-24 00:00:00.0000000 | 1 | 2023-10-24 00:10:00.0000000 | 4 | 1970-01-01 00:00:00.0000000 | 2023-10-24 02:00:00.0000000 | D | |
1 | 2023-10-24 00:00:00.0000000 | 1 | 2023-10-24 02:00:00.0000000 | 23 | 2023-10-24 01:00:00.0000000 | 33 | 2023-10-24 02:00:00.0000000 | U |
Sie können eine gespeicherte Funktion erstellen, um die Ergebnisse weiter zu bereinigen:
ItemHistory
| project Timestamp, cud, id, col1, col2, col3
| where cud != "D"
| project-away cud
endgültige Ausgabe-
Das neueste Update für jede Spalte für id 1
, da id 2
gelöscht wurde.
Zeitstempel | ID | Col1 | Col2 | Col3 |
---|---|---|---|---|
2023-10-24 02:00:00.0000000 | 1 | 1 | 23 | 33 |
Materialisierte Ansichten im Vergleich zu Updaterichtlinien
Materialisierte Ansichten und Aktualisierungsrichtlinien funktionieren unterschiedlich und dienen unterschiedlichen Anwendungsfällen. Verwenden Sie die folgenden Richtlinien, um zu ermitteln, welches Sie verwenden sollten:
Materialisierte Ansichten eignen sich für Aggregationen, während Updaterichtlinien nicht vorhanden sind. Updaterichtlinien werden für jeden Aufnahmebatch separat ausgeführt und können daher nur Aggregationen innerhalb desselben Aufnahmebatches ausführen. Wenn Sie eine Aggregationsabfrage benötigen, verwenden Sie immer materialisierte Ansichten.
Aktualisierungsrichtlinien sind nützlich für Datentransformationen, Anreicherungen mit Dimensionstabellen (in der Regel mit Nachschlageoperator) und anderen Datenmanipulationen, die im Umfang einer einzelnen Aufnahme ausgeführt werden können.
Updaterichtlinien werden während der Aufnahmezeit ausgeführt. Daten sind für Abfragen in der Quelltabelle oder der Zieltabelle erst verfügbar, wenn alle Updaterichtlinien ausgeführt werden. Materialisierte Ansichten dagegen sind nicht Teil der Aufnahmepipeline. Der Materialisierungsprozess wird regelmäßig im Hintergrund ausgeführt, nach der Aufnahme. Datensätze in der Quelltabelle sind für Abfragen verfügbar, bevor sie materialisiert werden.
Sowohl Aktualisierungsrichtlinien als auch materialisierte Ansichten können Verknüpfungenintegrieren, ihre Effektivität ist jedoch auf bestimmte Szenarien beschränkt. Insbesondere sind Verknüpfungen nur geeignet, wenn die für die Verknüpfung von beiden Seiten erforderlichen Daten zum Zeitpunkt des Aktualisierungsrichtlinien- oder Materialisierungsprozesses zugänglich sind. Wenn übereinstimmende Entitäten beim Ausführen der Updaterichtlinie oder Materialisierung aufgenommen werden, besteht das Risiko, dass Daten übersehen werden. Weitere Informationen zu
dimension tables
in materialisierten Ansichtsabfrageparameter und in Fakten- und Dimensionstabellen.
Anmerkung
Wenn Sie Verknüpfungen materialisieren müssen, die nicht für Aktualisierungsrichtlinien und materialisierte Ansichten geeignet sind, können Sie diesen Prozess selbst verwalten. Um die Ergebnisse von Verknüpfungsvorgängen zu erstellen und zu speichern, verwenden Sie Orchestrierungstools und Erfassung von Abfragebefehlen.