Cosmos-Daten brauchen Analytics? Mit SQL-Abfragen analysieren

Veröffentlicht am:

Ein Händler möchte wissen, wie viele Produkte vorhanden sind und wie sich Preise zwischen Kategorien unterscheiden. Jedes Dokument einzeln zu lesen wird mit wachsendem Katalog aufwendig. Cosmos-DB-SQL-Abfragen berechnen Zusammenfassungen direkt aus JSON-Dokumenten im Data Explorer und nutzen dafür den Durchsatz des vorhandenen Containers.

Verwende cosmos-ctappeus → Data Explorer → appdb → products aus dem Trip zur Kontoerstellung. Diese Übung läuft vollständig im Azure-Portal.

Zwei Beispielprodukte hinzufügen

Öffne Items → New Item, füge das erste Dokument ein und wähle Save. Wiederhole dies für das zweite Dokument:

{"id":"analytics-pen","category":"stationery","name":"Pen","price":2,"lab":"analytics"}
{"id":"analytics-mug","category":"home","name":"Mug","price":8,"lab":"analytics"}

Das Feld lab grenzt diese Beispiele von deinen vorhandenen Produkten ab. Existieren diese IDs bereits in ihren Kategorien, passe die betreffenden Elemente an die obigen Werte an.

Wähle products → New SQL Query und führe aus:

SELECT c.id, c.category, c.name, c.price
FROM c
WHERE c.lab = 'analytics'

Cosmos Data Explorer mit dem Beispielprodukt Pen zum Preis 2 und Mug zum Preis 8

Prüfe beide Elemente mit Kategorie und numerischem Preis. Der Partitionsschlüssel /category ordnet sie unterschiedlichen logischen Partitionen zu.

Zusammenfassung berechnen

Führe im selben Abfragetab aus:

SELECT COUNT(1) AS productCount,
       AVG(c.price) AS averagePrice,
       MIN(c.price) AS lowestPrice,
       MAX(c.price) AS highestPrice
FROM c
WHERE c.lab = 'analytics'

Cosmos Data Explorer mit productCount 2, averagePrice 5, lowestPrice 2 und highestPrice 8

Erwarte 2 Produkte, Durchschnitt 5, Minimum 2 und Maximum 8. Diese Funktionen fassen passende Dokumente zu einem Ergebnis zusammen. Prüfe Request Charge in der Abfragestatistik: Request Units (RU) messen die verbrauchte Datenbankarbeit; der tatsächliche Wert variiert.

Kategorien vergleichen

Führe aus:

SELECT c.category,
       COUNT(1) AS productCount,
       AVG(c.price) AS averagePrice
FROM c
WHERE c.lab = 'analytics'
GROUP BY c.category

Cosmos Data Explorer mit stationery: Anzahl 1 und Durchschnitt 2 sowie home: Anzahl 1 und Durchschnitt 8

Erwarte stationery: 1 Produkt, Durchschnitt 2 und home: 1 Produkt, Durchschnitt 8 in beliebiger Reihenfolge. GROUP BY berechnet eine eigene Zusammenfassung je Kategorie.

Diese Abfragen lesen aktive Cosmos-Daten und teilen den Durchsatz mit App-Anfragen. Umfangreiche Abfragen über viele Partitionen können mehr RUs verbrauchen; große regelmäßige Berichte profitieren von einer separaten Analysekopie.

Aufräumen

Lösche unter Items ausschließlich analytics-pen in stationery und analytics-mug in home. Behalte deine ursprünglichen Produkte und das Konto für den nächsten Trip.