將資料內嵌至倉儲
適用於✅:Microsoft Fabric 的倉儲
Microsoft Fabric 中的倉儲提供內建的資料擷取工具,可讓使用者使用無程式碼或程式碼豐富的體驗,大規模將資料內嵌至倉儲。
資料擷取選項
您可以使用下列其中一個選項,將資料內嵌至倉儲:
- COPY (Transact-SQL):COPY 陳述式提供從外部 Azure 儲存體帳戶擷取的彈性、高輸送量資料。 您可以在 Transact-SQL 程式碼中使用 COPY 陳述式作為現有 ETL/ELT 邏輯的一部分。
- 資料管線:管線會為資料擷取提供無程式碼或低程式碼體驗。 使用管線,您可以協調強固的工作流程,以取得完整的擷取、轉換和載入 (ETL) 體驗,包括協助準備目的地環境、執行自訂 Transact-SQL 陳述式、執行查閱或將資料從來源複製到目的地等活動。
- 資料流程:資料管線的替代方案,資料流程可以使用無程式碼體驗輕鬆進行資料準備、清理和轉換。
- 跨倉儲擷取:也可以從工作區來源擷取資料。 當需要建立具有不同資料表子集的新資料表,或是由於在倉儲和 Lakehouse 中聯結了不同資料表,可能需要此案例。 針對跨倉儲擷取,除了所述的選項之外,Transact-SQL 功能 (例如 INSERT...SELECT、SELECT INTO 或 CREATE TABLE AS SELECT (CTAS)) 會在相同的工作區內跨倉儲運作。
決定要使用的資料擷取工具
若要決定要使用的資料擷取選項,您可以使用下列準則:
- 針對程式碼豐富的資料擷取作業、可能的最高資料擷取輸送量,或當您需要將資料擷取新增為 Transact-SQL 邏輯的一部分時,使用 COPY (Transact-SQL) 陳述式。 如需語法,請參閱 COPY INTO (Transact-SQL)。
- 針對無程式碼或低程式碼、強固的資料擷取工作流程,使用資料管線,這些工作流程會重複執行、排程或涉及大量資料。 如需詳細資訊,請參閱使用資料管線內嵌資料。
- 在內嵌資料之前,使用資料流程獲得無程式碼體驗,以允許自訂轉換為來源資料。 這些轉換包括 (但不限於) 變更資料類型、新增或移除資料行,或使用函式來產生計算結果資料行。 如需詳細資訊,請參閱資料流程。
- 使用跨倉儲擷取獲得程式碼豐富體驗,以在相同的工作區內建立包含來源資料的新資料表。 如需詳細資訊,請參閱使用 Transact-SQL 擷取資料及寫入跨資料庫查詢。
注意
Warehouse 中的 COPY 陳述式僅支援 Azure 儲存體帳戶上的資料來源,目前不支援 OneLake 來源。
支援的資料格式和來源
Microsoft Fabric 的倉儲的資料擷取會提供大量資料格式和來源,以供您使用。 概述的每個選項均包含其自己的支援資料連接器類型和資料格式清單。
針對跨倉儲擷取,資料來源必須位於相同的 Microsoft Fabric 工作區內。 可以使用來源資料的三部分命名來執行查詢。
作為範例,假設工作區中有兩個名為 Inventory 和 Sales 的倉儲。 例如,下列查詢會在 Inventory 倉儲中建立新的資料表,其中包含 Inventory 倉儲中資料表的內容,並會與 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 Storage (ADLS) Gen2 和 Azure Blob 儲存體。
資料管線和資料流程支援各種不同的資料來源和資料格式。 如需詳細資訊,請參閱資料管線及資料流程。
最佳作法
Microsoft Fabric 的倉儲中的 COPY 命令功能會使用簡單、彈性且快速的介面,來為 SQL 工作負載進行高輸送量資料擷取。 在目前的版本中,我們僅支援從外部儲存體帳戶載入資料。
您也可以使用 TSQL 來建立新的資料表,然後插入其中,再然後更新和刪除資料列。 可以使用跨資料庫查詢,從 Microsoft Fabric 工作區內的任何資料庫插入資料。 如果您想要將資料從 Lakehouse 內嵌至倉儲,您可以使用跨資料庫查詢來執行。 例如:
INSERT INTO MyWarehouseTable
SELECT * FROM MyLakehouse.dbo.MyLakehouseTable;
- 避免使用 singleton INSERT 陳述式內嵌資料,因為這樣會導致查詢和更新的效能不佳。 如果 singleton INSERT 陳述式連續用於資料擷取,建議您使用 CREATE TABLE AS SELECT (CTAS) 或 INSERT...SELECT 模式建立新的資料表,卸除原始資料表,然後從您使用 CREATE TABLE AS SELECT (CTAS) 建立的資料表重新建立資料表。
- 卸除現有的資料表會影響您的語意模型,包括您可能對語意模型做出的任何自訂量值或自訂。
- 使用檔案上的外部資料時,我們建議檔案大小至少為 4 MB。
- 對於大型的壓縮 CSV 檔案,請考慮將您的檔案分割成多個檔案。
- Azure Data Lake Storage (ADLS) Gen2 可提供比 Azure Blob 儲存體 (舊版) 更為優異的效能。 盡可能考慮使用 ADLS Gen2 帳戶。
- 針對經常執行的管線,考慮將 Azure 儲存體帳戶與可同時存取相同檔案的其他服務隔離。
- 明確交易可讓您將多個資料變更分組在一起,以便僅在交易完全提交時讀取一或多個資料表時,才會顯示這些變更。 如有任何變更失敗,您也可以復原交易。
- 如果 SELECT 位於交易內,且之前有資料插入,則復原後自動產生的統計資料可能會不正確。 不正確的統計資料可能會導致查詢計劃和執行時間未最佳化。 如果您在大量 INSERT 之後復原與 SELECT 的交易,請更新 SELECT 中提及的資料行的統計資料。
注意
無論您如何將資料內嵌至倉儲中,資料擷取工作產生的 Parquet 檔案都會使用 V 順序寫入最佳化進行最佳化。 V 順序可最佳化 Parquet 檔案,進而在 Microsoft Fabric 計算引擎 (例如 Power BI、SQL、Spark 等) 下實現如閃電般迅速的讀取。 藉助此最佳化,倉儲查詢通常受益於更快的查詢讀取時間,但仍可確保 Parquet 檔案完全符合其開放原始碼規格。 與網狀架構 資料工程師 不同,V 順序是無法停用網狀架構數據倉儲中的全域設定。 如需有關 V 順序的詳細資訊,請參閱了解和管理 Warehouse 的 V 順序。