gpt4 book ai didi

azure - 具有不同 header 的文件用于复制 azure dwh 表中的数据

转载 作者:行者123 更新时间:2023-12-03 01:38:05 24 4
gpt4 key购买 nike

我是 Azure 数据仓库和 Azure 数据工厂 V2 的新手。

我有一个文件夹,其中有 10 个文件,位于 azure blob 中,每个文件都有不同的 header ,但所有文件中都有 5 个共同的 header 。

我尝试过的事情

为文件创建了 10 个链接服务器,并使用复制数据任务将数据移动到特定表。但我只需要这些表中的 5 列

问题

有什么方法可以让我拥有一个包含 5 列的表格和一个动态文件连接来从 5 个文件加载数据。

示例:文件 1:10 个 header 文件2:11个 header 文件3:7个 header 。。。。File10:15 个 header

这些文件中共有 5 列,并且数据必须加载到具有 5 列的公共(public)表中。

最佳答案

当您使用 Polybase 在 Azure SQL 数据仓库中创建外部表时,它们可以指向单个文件或一组文件,只要它们位于同一文件夹中且格式相同即可。

单个文件

WTIH (
DATA_SOURCE = yourDataSource,
LOCATION = N'/input/file1.txt',
FILE_FORMAT = yourFileFormat,
...
etc

文件夹

WTIH (
DATA_SOURCE = yourDataSource,
LOCATION = N'/input/',
FILE_FORMAT = yourFileFormat,
...
etc

所以你可以做的是为每个文件创建一个外部表。外部表只是元数据结构,数据实际上并不存在于数据库中。这些表必须包含每个表的所有列。然后在五个表上创建一个 UNION 语句,仅选择五列,并使用 CTAS 将数据导入数据库:

CREATE TABLE dbo.yourTable
WITH
(
DISTRIBUTION = ROUND_ROBIN,
CLUSTERED COLUMNSTORE INDEX
)
AS
SELECT col1, col2, col3, col4, col5
FROM externalTable1

UNION ALL

SELECT col1, col2, col3, col4, col5
FROM externalTable2

UNION ALL

SELECT col1, col2, col3, col4, col5
FROM externalTable3

etc
....

我可能不会使用数据工厂,因为 Polybase 可以为您完成大部分工作。

关于azure - 具有不同 header 的文件用于复制 azure dwh 表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56335756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com