Database
 sql >> Datenbank >  >> RDS >> Database

Zeilenmustererkennung in SQL

Der ISO/IEC 9075:2016-Standard, oder kurz SQL:2016, führt die Unterstützung für ein tiefgreifendes Konzept namens Row Pattern Recognition (RPR) in SQL ein. Ich habe einen Vorschlag zur Verbesserung von SQL Server gepostet, indem ich Unterstützung für RPR in T-SQL hinzufügte, aber ich hatte ziemlich wenig Platz, um Feedback zu geben. Der Zweck dieses Artikels besteht darin, weitere Einzelheiten über den Vorschlag bereitzustellen, und hoffentlich werden Sie von seiner Bedeutung überzeugt und geben Ihre Stimme ab.

Hintergrund

Ähnlich wie bei der Verwendung regulärer Ausdrücke zum Identifizieren von Mustern in einer Zeichenfolge verwenden Sie mit RPR reguläre Ausdrücke zum Identifizieren von Mustern in einer Folge von Zeilen. Für jede Musterübereinstimmung können Sie entweder eine Zusammenfassungszeile wie bei der Gruppierung oder die detaillierten Zeilen mit berechneten Messwerten für Untersequenzen der Übereinstimmung zurückgeben. RPR hat grenzenlose praktische Anwendungen, einschließlich der Identifizierung von Mustern in Börsenaktivitäten (sowohl gültige Muster mit Handelswert als auch potenziell illegale oder verdächtige Muster), Handhabung von Zeitreihen, Betrugserkennung, Materialhandhabung, Versandanwendungen, DNA-Sequenzierung, Lücken und Inseln, top N pro Gruppe und viele andere.

Für mich ist RPR der nächste Schritt in der Entwicklung von Fensterfunktionen mit einem höheren Maß an Raffinesse und erweitertem Nutzen. Wenn Sie denken, dass Fensterfunktionen tiefgreifend und nützlich sind, wird RPR Sie wirklich fesseln. Ähnlich wie Fensterfunktionen unterstützt RPR Partitionierung und Ordnung. In der Regel suchen Sie in jeder Partition unabhängig nach Musterübereinstimmungen, basierend auf der angegebenen Reihenfolge. Auch ähnlich wie Fensterfunktionen eignet sich RPR für eine gute Optimierung, mit der Möglichkeit, sich auf die Indexreihenfolge zu verlassen, um das Sortieren der Daten zu vermeiden.

Die Abdeckung von RPR, einschließlich illustrierter Beispiele, finden Sie in einem 90-seitigen technischen Bericht ISO/IEC TR 19075-5 (kostenlos erhältlich).

Sie finden es auch als Teil des Dokuments ISO/IEC 9075-2:2016, Informationstechnologie – Datenbanksprachen – SQL – Teil 2:Foundation (SQL/Foundation) (erhältlich zum Kauf).

Der SQL:2016-Standard bietet zwei Hauptfunktionen im Zusammenhang mit RPR:

  • Feature R010, „Zeilenmustererkennung:FROM-Klausel“
  • Feature R020, „Zeilenmustererkennung:WINDOW-Klausel“

Der Standard erwähnt auch das Feature R030, „Erkennung von Zeilenmustern:vollständige Aggregatunterstützung“, ohne das Aggregatfunktionen nicht erlaubt sind, DISTINCT oder anzugeben.

Bisher ist die einzige Plattform, die ich von dieser implementierten Funktion R010 kenne, Oracle. Mir ist noch keine Plattform bekannt, die R020 implementiert hat.

Feature R010, „Zeilenmustererkennung:FROM-Klausel“

Feature R010 definiert einen Klausel-/Tabellenoperator namens MATCH_RECOGNIZE, den Sie in der FROM-Klausel verwenden. Die Eingabe ist eine Tabelle oder ein Tabellenausdruck, und die Ausgabe ist eine virtuelle Tabelle. Der Kontext ähnelt dem anderer Tabellenoperatoren wie JOIN, APPLY, PIVOT und UNPIVOT. Hier ist die Syntax einer Abfrage, die diese Funktion verwendet:

SELECT