Freigeben über


Spiegelung von OneLake in der Cosmos DB-Datenbank in Microsoft Fabric

Jede Cosmos DB in einer Microsoft Fabric-Datenbank wird im Open-Source-Delta Lake-Format in OneLake gespiegelt. Dieses Feature erfordert keine zusätzliche Konfiguration oder Einrichtung und wird automatisch aktiviert, wenn die Datenbank erstellt wird. Diese enge Integration beseitigt die Notwendigkeit von ETL-Pipelines (Extract, Transform, Load) und stellt sicher, dass Cosmos DB-Daten immer analysebereit sind.

Diese automatische Spiegelunterstützung ermöglicht Szenarien, einschließlich, aber nicht beschränkt auf:

  • Ad-hoc-Abfragen mit der Abfragesprache Transact SQL (T-SQL)
  • Integration in Apache Spark
  • Analyse von Echtzeitdaten mithilfe von Notebooks
  • Data Science- und Machine Learning-Workflows

Spiegelungsstatus

Sie können den Replikationsstatus überprüfen, indem Sie zum Replikationsbereich für die Datenbank im Fabric-Portal navigieren. Dieser Abschnitt enthält Metadaten zur Replikation, einschließlich des Status der letzten Synchronisierung.

Screenshot des Statusdialogfelds für die Spiegelung einer Cosmos DB in Fabric-Datenbank.

SQL Analytics-Endpunktabfragen

Mit dem SQL-Analyseendpunkt können Sie gespiegelte Cosmos DB-Daten direkt im Fabric-Portal mithilfe von T-SQL abfragen. Sie können jederzeit zwischen dem NoSQL-Daten-Explorer und dem T-SQL SQL-Analyseendpunkt wechseln.

Ausführen von grundlegenden Abfragen

Verwenden Sie die T-SQL-Standardsyntax, um ihre gespiegelten Daten abzufragen. Das folgende Beispiel zeigt eine einfache Aggregationsabfrage:

SELECT
  categoryName,
  COUNT(*) AS quantity
FROM
  [<database-name>].[<database-name>].[<container-name>] -- Replace with your database and container name
GROUP BY
  categoryName

Screenshot einer Transact SQL-Abfrage (T-SQL) mithilfe des Abfrage-Editors im SQL-Analyseendpunkt für ein einfaches Szenario.

Analysieren von Beispieldaten mit erweiterten Abfragen

Für komplexere Analyseszenarien können Sie Abfragen ausführen, die mehrere Metriken kombinieren und erweiterte T-SQL-Features verwenden. Im folgenden Beispiel wird der integrierte Beispieldatensatz verwendet, um Produkt-KPIs zu berechnen und Erkenntnisse über Kategorien hinweg zu überprüfen. Weitere Informationen zum Beispieldatensatz finden Sie unter Beispieldatensätze in Cosmos DB in Microsoft Fabric.

-- Product performance analysis by category
WITH SampleData AS (
  SELECT *
  FROM [<database-name>].[<database-name>].[<container-name>] -- Replace with your database and container name
),
TopProducts AS (
  SELECT 
    categoryName,
    name,
    ROW_NUMBER() OVER (PARTITION BY categoryName ORDER BY currentPrice DESC) AS rn
  FROM SampleData
  WHERE docType = 'product'
)
SELECT
  c.categoryName,
  COUNT(DISTINCT CASE WHEN c.docType = 'product' THEN c.productId END) AS totalProducts,
  ROUND(AVG(CASE WHEN c.docType = 'review' THEN CAST(c.stars AS FLOAT) END), 2) AS avgRating,
  tp.name AS topProduct,
  SUM(CASE WHEN c.docType = 'product' THEN c.currentPrice * c.inventory END) AS totalInventoryValue
FROM SampleData AS c
LEFT JOIN TopProducts AS tp ON c.categoryName = tp.categoryName AND tp.rn = 1
GROUP BY c.categoryName, tp.name
ORDER BY avgRating DESC;

Beobachten Sie die Ergebnisse der Abfrage im Abfrage-Editor:

[
  {
    "categoryName": "Devices, E-readers",
    "totalProducts": "10",
    "avgRating": "4.38",
    "topProduct": "eReader Lumina Edge X7",
    "totalInventoryValue": "890338.94"
  },
  {
    "categoryName": "Devices, Smartwatches",
    "totalProducts": "10",
    "avgRating": "4.37",
    "topProduct": "PulseSync Pro S7",
    "totalInventoryValue": "750008.86"
  },
  // Ommitted for brevity
]

Screenshot der erweiterten Transact SQL-Abfrage (T-SQL) mithilfe des Abfrage-Editors im SQL-Analyseendpunkt für ein erweitertes Szenario.

Abfragen geschachtelter JSON-Arrays mit OPENJSON

Verwenden Sie die OPENJSON Funktion, um geschachtelte JSON-Arrays in Ihren Dokumenten zu analysieren und abzufragen. Im folgenden Beispiel wird veranschaulicht, wie Sie das priceHistory Array analysieren, um Produkte mit den größten Preiserhöhungen zu identifizieren, um Preistrends nachzuverfolgen und Ihre Preisstrategie zu optimieren.

-- Identify products with significant price increases
WITH PriceChanges AS (
  SELECT
    p.productId,
    p.name,
    p.categoryName,
    p.currentPrice,
    ph.priceDate,
    ph.historicalPrice,
    p.currentPrice - ph.historicalPrice AS priceIncrease,
    ROUND(((p.currentPrice - ph.historicalPrice) / ph.historicalPrice) * 100, 1) AS percentIncrease
  FROM [<database-name>].[<database-name>].[<container-name>] AS p -- Replace with your database and container name
  CROSS APPLY OPENJSON(p.priceHistory) WITH (
    priceDate datetime2,
    historicalPrice float '$.price'
  ) AS ph
  WHERE p.docType = 'product'
)
SELECT TOP 10
  name,
  categoryName,
  currentPrice,
  priceIncrease,
  percentIncrease
FROM PriceChanges
WHERE priceIncrease > 0
ORDER BY percentIncrease DESC;

Beobachten Sie die Ergebnisse der Abfrage im Abfrage-Editor:

[
  {
    "name": "Resonova Elite360 Wireless ANC Headphones",
    "categoryName": "Accessories, Premium Headphones",
    "currentPrice": "523.66",
    "priceIncrease": "224.66",
    "percentIncrease": "75.1"
  },
  {
    "name": "AuraLux VX Pro Leather Case",
    "categoryName": "Accessories, Luxury Cases",
    "currentPrice": "129.96",
    "priceIncrease": "50.89",
    "percentIncrease": "64.4"
  },
  // Ommitted for brevity
]

Screenshot einer OPENJSON Transact SQL (T-SQL)-Abfrage mit dem Abfrage-Editor im SQL-Analyseendpunkt für ein erweitertes Szenario.

Nächste Schritte

  • Erstellen Sie eine OneLake-Verknüpfung in einem Lakehouse oder führen Sie eine datenbankübergreifende Abfrage aus