載入暫存表格

已完成

載入資料倉儲最常見的模式之一是將資料從來源系統傳輸到資料湖中的檔案,將檔案資料內嵌到暫存資料表,然後使用 SQL 陳述式來將資料從暫存表格載入維度和事實資料表。 通常,資料載入會以定期批次程序來執行,其中插入和更新到資料倉儲會定期 (例如,每日、每週或每月) 進行協調。

建立暫存資料表

許多井然有序的倉儲都有用於暫存資料庫的標準結構,並甚至可能會使用特定的結構描述來暫存資料。 下列程式碼範例會為最終將載入維度資料表的產品資料建立暫存資料表:

注意

此範例會在預設 dbo 結構描述中建立暫存表格。 您也可以為具有有意義名稱的暫存表格建立個別的結構描述,例如暫存,讓架構設計師和使用者了解結構描述的目的。

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
);

使用 COPY 命令

您可以如下列範例所示,使用 COPY 陳述式,從資料湖載入資料:

注意

因為暫存表格的高效能輸送量,使用 COPY 命令通常是載入暫存表格的建議方法。

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

提示

若要深入了解 COPY 陳述式,請參閱 Transact-SQL 文件中的 COPY (Transact-SQL)

使用外部資料表

在某些案例中,如果要載入的資料儲存在具有適當結構的檔案中,建立參考檔案位置的外部資料表會更有效率。 如此一來,就可以直接從來源檔案讀取資料,而不需載入關聯式存放區。 下列範例示範如何建立外部資料表,以參考與 Azure Synapse Analytics 工作區相關聯之資料湖中的檔案:

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

提示

如需使用外部資料表的詳細資訊,請參閱 Azure Synapse Analytics 文件中的搭配 Synapse SQL 使用外部資料表