Laden von Stagingtabellen

Abgeschlossen

Eines der gängigsten Muster für das Laden eines Data Warehouse besteht darin, Daten aus Quellsystemen in Dateien in einem Data Lake zu übertragen, die Dateidaten in Stagingtabellen zu erfassen und sie dann mithilfe von SQL-Anweisungen aus den Stagingtabellen in die Dimensions- und Faktentabellen zu laden. Normalerweise wird das Laden von Daten als regelmäßiger Batchprozess durchgeführt, bei dem Einfügungen und Aktualisierungen im Data Warehouse so koordiniert werden, dass sie in regelmäßigen Abständen (z. B. täglich, wöchentlich oder monatlich) erfolgen.

Erstellen von Stagingtabellen

Viele organisierte Warehouses verfügen über Standardstrukturen für das Staging der Datenbank und könnten sogar ein bestimmtes Schema für das Staging der Daten verwenden. Das folgende Codebeispiel erstellt eine Stagingtabelle für Produktdaten, die letztendlich in eine Dimensionstabelle geladen werden:

Hinweis

In diesem Beispiel wird eine Stagingtabelle im dbo-Standardschema erstellt. Sie können auch separate Schemas für Stagingtabellen mit einem aussagekräftigen Namen erstellen (z. B. Phase), damit Programmierer*innen und Benutzer*innen den Zweck des Schemas verstehen.

CREATE TABLE dbo.StageProduct
(
    ProductID NVARCHAR(10) NOT NULL,
    ProductName NVARCHAR(200) NOT NULL,
    ProductCategory NVARCHAR(200) NOT NULL,
    Color NVARCHAR(10),
    Size NVARCHAR(10),
    ListPrice DECIMAL NOT NULL,
    Discontinued BIT NOT NULL
)
WITH
(
    DISTRIBUTION = ROUND_ROBIN,
    CLUSTERED COLUMNSTORE INDEX
);

Verwenden des COPY-Befehls

Sie können die COPY-Anweisung verwenden, um Daten aus dem Data Lake zu laden, wie im folgenden Beispiel gezeigt:

Hinweis

Dies ist aufgrund des Hochleistungsdurchsatzes im Allgemeinen der empfohlene Ansatz für das Laden von Stagingtabellen.

COPY INTO dbo.StageProduct
    (ProductID, ProductName, ...)
FROM 'https://mydatalake.../data/products*.parquet'
WITH
(
    FILE_TYPE = 'PARQUET',
    MAXERRORS = 0,
    IDENTITY_INSERT = 'OFF'
);

Tipp

Weitere Informationen zur COPY-Anweisung finden Sie unter COPY (Transact-SQL) in der Dokumentation zu Transact-SQL.

Verwenden von externen Tabellen

Wenn die zu ladenden Daten in Dateien mit einer geeigneten Struktur gespeichert sind, kann es in einigen Fällen effektiver sein, externe Tabellen zu erstellen, die auf den Dateispeicherort verweisen. Auf diese Weise lassen sich die Daten direkt aus den Quelldateien lesen und müssen nicht in den relationalen Speicher geladen werden. Das folgende Beispiel zeigt, wie Sie eine externe Tabelle erstellen, die auf Dateien in dem Data Lake verweist, der dem Azure Synapse Analytics-Arbeitsbereich zugeordnet ist:

CREATE EXTERNAL TABLE dbo.ExternalStageProduct
 (
     ProductID NVARCHAR(10) NOT NULL,
     ProductName NVARCHAR(10) NOT NULL,
 ...
 )
WITH
 (
    DATE_SOURCE = StagedFiles,
    LOCATION = 'folder_name/*.parquet',
    FILE_FORMAT = ParquetFormat
 );
GO

Tipp

Weitere Informationen zur Verwendung externer Tabellen finden Sie in der Azure Synapse Analytics-Dokumentation unter Verwenden externer Tabellen mit Synapse SQL.