將資料內嵌至倉儲

適用於: Microsoft Fabric 中的倉儲

Microsoft Fabric 中的倉儲提供內建的數據擷取工具,可讓使用者使用無程式代碼或程式代碼豐富的體驗大規模將數據內嵌至倉儲。

數據擷取選項

您可以使用下列其中一個選項將資料內嵌至倉儲:

  • COPY (Transact-SQL):COPY 語句提供從外部 Azure 儲存器帳戶擷取的彈性、高輸送量數據。 您可以在 Transact-SQL 程式代碼中使用 COPY 語句作為現有 ETL/ELT 邏輯的一部分。
  • 數據管線:管線提供無程式代碼或低程式代碼體驗來擷取數據。 使用管線,您可以協調健全的工作流程,以取得完整的擷取、轉換、載入 (ETL) 體驗,包括協助準備目的地環境、執行自定義 Transact-SQL 語句、執行查閱,或將數據從來源複製到目的地。
  • 數據流:數據流是管線的替代方案,可使用無程式代碼體驗輕鬆準備、清除和轉換數據。
  • 跨倉儲擷取:也可以從工作區來源擷取數據。 當需要建立具有不同數據表子集的新數據表,或在倉儲和 Lakehouse 中聯結不同數據表時,可能需要此案例。 針對跨倉儲擷取,除了所述的選項之外,Transact-SQL 功能,例如 INSERT...SELECTSELECT INTOCREATE TABLE AS SELECT (CTAS) 會在 相同的工作區內跨倉儲運作。

決定要使用的數據擷取工具

若要決定要使用的數據擷取選項,您可以使用下列準則:

  • 針對程式代碼豐富的數據擷取作業、可能的最高數據擷取輸送量,或當您需要加入數據擷取做為 Transact-SQL 邏輯的一部分時,請使用 COPY (Transact-SQL) 語句。 如需語法,請參閱 COPY INTO (Transact-SQL)
  • 針對無程式代碼或低程式碼、強固的數據擷取工作流程使用 數據管線 ,這些工作流程會重複執行、排程或牽涉到大量數據。 如需詳細資訊,請參閱 使用數據管線擷取數據。
  • 在擷取數據之前,使用 數據流 進行無程式代碼體驗,以允許自定義轉換原始碼數據。 這些轉換包括變更數據類型、新增或移除數據行,或使用函式來產生匯出數據行。 如需詳細資訊,請參閱 數據流
  • 針對程式代碼豐富的體驗使用 跨倉儲擷取 ,以在相同的工作區內建立具有源數據的新數據表。 如需詳細資訊,請參閱 使用 Transact-SQL 擷取數據及 寫入跨資料庫查詢

注意

Warehouse 中的 COPY 語句僅支援 Azure 儲存器帳戶上的數據源,使用對共用存取簽章(SAS)、儲存體 帳戶密鑰 (SAK) 或具有公用存取權的帳戶進行驗證。 如需其他限制,請參閱 COPY(Transact-SQL)。

支援的數據格式和來源

Microsoft Fabric 中 Warehouse 的數據擷取提供大量的數據格式和來源,可供您使用。 概述的每個選項都包含它自己的支援資料連接器類型和數據格式清單。

若要 進行跨倉儲擷取,數據源必須位於相同的 Microsoft Fabric 工作區內。 您可以使用源資料的三部分命名來執行查詢。

例如,假設工作區中有兩個名為 Inventory 和 Sales 的倉儲。 查詢,例如下列查詢會在清查倉儲中建立新的數據表,其中包含庫存倉儲中數據表的內容,並聯結至 Sales 倉儲中的數據表:

CREATE TABLE Inventory.dbo.RegionalSalesOrders
AS
SELECT s.SalesOrders, i.ProductName
FROM Sales.dbo.SalesOrders s
JOIN Inventory.dbo.Products i
WHERE s.ProductID = i.ProductID
    AND s.Region = 'West region'

COPY (Transact-SQL) 語句目前支援 PARQUET 和 CSV 檔案格式。 針對數據源,目前支援 Azure Data Lake 儲存體 (ADLS) Gen2 和 Azure Blob 儲存體。

數據管線數據流 支援各種不同的數據源和數據格式。 如需詳細資訊,請參閱 數據管線數據流

最佳作法

Microsoft Fabric 中 Warehouse 中的 COPY 命令功能會使用簡單、彈性且快速的介面,來擷取 SQL 工作負載的高輸送量數據擷取。 在目前的版本中,我們僅支援從外部記憶體帳戶載入數據。

您也可以使用 TSQL 來建立新的資料表,然後插入其中,然後更新和刪除資料列。 您可以使用跨資料庫查詢,從 Microsoft Fabric 工作區中的任何資料庫插入數據。 如果您想要將數據從 Lakehouse 擷取到倉儲,您可以使用跨資料庫查詢來執行此作業。 例如:

INSERT INTO MyWarehouseTable
SELECT * FROM MyLakehouse.dbo.MyLakehouseTable;
  • 避免使用單一 INSERT 語句擷取數據,因為這樣會導致查詢和更新的效能不佳。 如果單一 INSERT 語句連續用於數據擷取,建議您使用 CREATE TABLE AS SELECT 或INSERT 來建立新的數據表...SELECT 模式、卸除原始數據表,然後從您使用 CREATE TABLE AS SELECT (CTAS) 建立的數據表重新建立數據表。
    • 卸除現有的數據表會影響您的語意模型,包括您可能對語意模型所做的任何自定義量值或自定義。
  • 使用檔案上的外部數據時,建議檔案大小至少為4 MB。
  • 對於大型壓縮的 CSV 檔案,請考慮將您的檔案分割成多個檔案。
  • Azure Data Lake 儲存體 (ADLS) Gen2 提供比 Azure Blob 儲存體 更好的效能(舊版)。 請考慮盡可能使用 ADLS Gen2 帳戶。
  • 針對經常執行的管線,請考慮將 Azure 記憶體帳戶與可同時存取相同檔案的其他服務隔離。
  • 明確交易可讓您將多個數據變更分組在一起,以便只有在交易完全認可時讀取一或多個數據表時,才會顯示這些變更。 如果有任何變更失敗,您也可以復原交易。
  • 如果 SELECT 位於交易內,且前面有數據插入, 則自動產生的統計數據 在回復之後可能會不正確。 不正確的統計數據可能會導致未優化查詢計劃和運行時間。 如果您在大型 INSERT 之後回復與SELECT 的交易,請 更新 SELECT 中所提及數據行的統計數據

注意

無論您如何將數據內嵌到倉儲中,數據擷取工作所產生的 parquet 檔案都會使用 V 順序寫入優化進行優化。 V 順序會將 parquet 檔案優化,以在 Microsoft Fabric 計算引擎下啟用閃電快速讀取,例如 Power BI、SQL、Spark 等。 倉儲查詢通常受益於此優化查詢的較快讀取時間,但仍確保 parquet 檔案符合其開放原始碼規格的 100%。 不同於 Fabric 資料工程師 ing,V-Order 是 Synapse 數據倉儲中無法停用的全域設定。