适用于:✅Microsoft Fabric 中的仓库
Microsoft Fabric中的仓库提供内置的数据引入工具。 使用这些工具通过无代码或代码丰富的环境将数据大规模引入仓库。
选择数据引入工具
根据以下条件选择数据引入选项:
- 将 COPY (Transact-SQL) 语句用于代码丰富的数据引入操作。 它提供最高的数据引入吞吐量。 如果需要在 Transact-SQL 逻辑中添加数据引入,请使用它。
- 若要开始,请参阅 使用 COPY 语句引入数据。
- 仓库还支持传统
BULK INSERT语句,该语句是经典加载选项的COPY INTO同义词。 - Warehouse 中的
COPY语句支持来自 Azure 存储帐户和 OneLake 数据湖仓库文件夹的数据源。
- 使用 管道 实现无代码或低代码、可靠的数据引入工作流,这些工作流重复运行、按计划运行或涉及大量数据。
- 若要开始,请参阅 使用管道将数据引入仓库。
- 通过使用管道,可以协调可靠的工作流,以获取完整的提取、转换、加载(ETL)体验。 此体验包括有助于准备目标环境、运行自定义 Transact-SQL 语句、执行查找或将数据从源复制到目标的活动。
- 在引入之前,使用 数据流 进行无代码体验,允许自定义转换到源数据。
- 若要开始,请参阅 使用数据流引入数据。
- 这些转换包括(但不限于)更改数据类型、添加或删除列或者使用函数生成计算列。
- 将 T-SQL 引入 用于代码丰富的体验,以创建新表,或使用同一工作区或外部存储中的源数据更新现有表。
- 若要开始,请参阅 使用 Transact-SQL 将数据引入仓库。
- 使用 Transact-SQL 功能(如
INSERT...SELECT、SELECT INTO或CREATE TABLE AS SELECT (CTAS))从引用同一工作区中其他仓库、lakehouse 或镜像数据库的表读取数据。 还可以使用这些功能从引用外部Azure存储帐户中的文件的OPENROWSET函数读取数据。 - 还可以在 Fabric 工作区中的不同仓库之间编写跨数据库查询。
支持的数据格式和数据源
Microsoft Fabric中仓库的数据引入支持多种数据格式和源。 本文中概述的每个选项都包含其自己的受支持数据连接器类型和数据格式列表。
对于 T-SQL 引入,表数据源必须位于同一Microsoft Fabric工作区中,文件数据源必须位于Azure Data Lake或Azure Blob 存储中。 可以通过三部分命名法或使用 OPENROWSET 函数针对源数据来查询数据。 表数据源可以引用 Delta Lake 数据集,而 OPENROWSET可以引用 Azure Data Lake 或 Azure Blob 存储中的 Parquet、CSV 或 JSONL 文件。
例如,假设工作区有两个仓库,命名 Inventory 和 Sales。 查询(例如以下查询)在Inventory仓库中创建一个新表,该表的内容包括将Inventory仓库中的表与Sales仓库中的表联接后所得,以及包含客户信息的外部文件。
CREATE TABLE Inventory.dbo.RegionalSalesOrders
AS
SELECT
s.SalesOrders,
i.ProductName,
c.CustomerName
FROM Sales.dbo.SalesOrders s
JOIN Inventory.dbo.Products i
ON s.ProductID = i.ProductID
JOIN OPENROWSET( BULK 'abfss://<container>@<storage>.dfs.core.windows.net/<customer-file>.csv' ) AS c
ON s.CustomerID = c.CustomerID
WHERE s.Region = 'West region';
Note
读取数据 OPENROWSET 的速度可能比查询表中的数据要慢。 如果计划重复访问相同的外部数据,请考虑将其引入专用表以提高性能和查询效率。
COPY (Transact-SQL) 语句当前支持 CSV、JSONL 和 PARQUET 文件格式。 对于数据源,当前支持 Azure Data Lake Storage (ADLS) Gen2 和 Azure Blob 存储。
管道 和 数据流 支持各种数据源和数据格式。 有关详细信息,请参阅 管道 和 数据流。
最佳做法
Microsoft Fabric中的 Warehouse 中的 COPY 命令为 SQL 工作负荷提供简单、灵活、快速的接口,用于高吞吐量数据引入。 在当前版本中,它仅支持从外部存储帐户加载数据。
还可以使用 T-SQL 语言创建新表,然后将其插入其中,然后更新和删除数据行。 可以使用跨数据库查询从Microsoft Fabric工作区中的任何数据库插入数据。 如果要将数据从湖屋引入仓库,可以使用跨数据库查询执行此操作。 例如:
INSERT INTO MyWarehouseTable
SELECT * FROM MyLakehouse.dbo.MyLakehouseTable;
- 避免使用单例
INSERT语句引入数据,因为这种方法会导致查询和更新的性能不佳。 如果连续使用 singletonINSERT语句进行数据引入,请使用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 中提到的列更新统计信息。
Note
无论采用何种方式将数据摄取到数据仓库,数据摄取任务都会通过使用“V-Order”写入优化来优化其生成的“parquet”文件。 V-Order 将优化 parquet 文件,以便在 Microsoft Fabric 计算引擎(例如 Power BI、SQL、Spark 等)下实现瞬时读取。 仓库查询通常受益于此优化,因为查询的读取时间更快,同时仍确保 parquet 文件百分之百符合开源规范。 不要禁用 V 顺序,因为其可能会影响读取性能。 有关 V 顺序的详细信息,请参阅 了解和管理适用于仓库的 V 顺序。
有关Fabric Data Warehouse的数据引入的常见问题
加载压缩 CSV 文件时,COPY 命令的文件拆分指导是什么?
建议拆分大型 CSV 文件,尤其是在文件数量较少时,但请确保每个文件至少为 4 MB,以提高性能。
加载 Parquet 文件时,COPY 命令的文件拆分指导是什么?
请考虑拆分大型 Parquet 文件,尤其是如果文件数较少。
文件的数量和大小有限制吗?
文件的数量或大小没有限制。 但是,为了获得最佳性能,请使用至少 4 MB 的文件。
如果未指定凭据,COPY 命令将使用哪种身份验证方法?
默认情况下,COPY INTO使用正在执行的用户的Microsoft Entra ID。