Azure 数据工厂中的 Parquet 文件名

Ang*_*der 0 parquet azure-data-factory

我正在使用 Azure 数据工厂的复制活动将数据从 Oracle DB 复制到 ADLS。此副本的结果是一个 parquet 文件,其中包含与我复制的表相同的数据,但生成的 parquet 文件的名称如下所示:

data_32ecaf24-00fd-42d4-9bcb-8bb6780ae152_7742c97c-4a89-4133-93ea-af2eb7b7083f.parquet
Run Code Online (Sandbox Code Playgroud)

我需要这个名字像这样存储:

TableName-Timestamp.parquet

如何使用 Azure 数据工厂做到这一点?

另一个问题:有没有办法在写入此文件时添加层次结构?例如,我使用相同的管道来写入多个表,并且我想为每个表创建一个新文件夹。如果我为每个要写入的表创建一个新的数据集,我就可以做到这一点,但我想知道是否有办法自动执行此操作(使用动态内容)。

提前致谢。

Leo*_*Yue 5

您可以设置管道参数来实现它。

这是我尝试将数据从 Azure SQL 数据库复制到 ADLS 的示例,它也应该适用于 Oracle 到 ADLS。

设置管道参数:设置需要复制到ADLS的Azure SQL/Oracle表名:

在此输入图像描述

源数据集:

添加动态内容设置表名:

在此输入图像描述

来源:

添加动态内容:使用管道参数设置表名: 在此输入图像描述

接收器数据集:

添加动态内容以设置 Parquet 文件名:

在此输入图像描述

下沉:

添加动态内容以使用管道参数设置 Parquet 文件名:

格式:表名-时间戳.parquet:

@concat(pipeline().parameters.tablename,'-',utcnow())
Run Code Online (Sandbox Code Playgroud)

然后执行管道,您将获得 Parquet 文件,如下所示TableName-Timestamp.parquet

关于你的另一个问题:

您可以为每个表添加动态内容集文件夹名称,只需按照以下步骤操作:

在此输入图像描述

例如,如果我们复制表“test”,我们将得到的结果:

container/test/test-2020-04-20T02:01:36.3679489Z.parquet
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。