首页 > 解决方案 > Azure 数据工厂中的 Parquet 文件名

问题描述

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

data_32ecaf24-00fd-42d4-9bcb-8bb6780ae152_7742c97c-4a89-4133-93ea-af2eb7b7083f.parquet

我需要这个名字是这样存储的:

TableName-Timestamp.parquet

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

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

提前致谢。

标签: parquetazure-data-factory

解决方案


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

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

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

在此处输入图像描述

源数据集:

添加动态内容以设置表名:

在此处输入图像描述

来源:

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

接收器数据集:

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

在此处输入图像描述

下沉:

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

格式:TableName-Timestamp.parquet:

@concat(pipeline().parameters.tablename,'-',utcnow())

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

关于你的另一个问题:

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

在此处输入图像描述

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

container/test/test-2020-04-20T02:01:36.3679489Z.parquet

希望这可以帮助。


推荐阅读