parquet - Azure 数据工厂中的 Parquet 文件名
问题描述
我正在使用 Azure 数据工厂的复制活动将数据从 Oracle DB 复制到 ADLS。此副本的结果是一个 parquet 文件,其中包含我复制的表的相同数据,但此结果 parquet 文件的名称如下:
data_32ecaf24-00fd-42d4-9bcb-8bb6780ae152_7742c97c-4a89-4133-93ea-af2eb7b7083f.parquet
我需要这个名字是这样存储的:
TableName-Timestamp.parquet
如何使用 Azure 数据工厂做到这一点?
另一个问题:有没有办法在编写这个文件时添加层次结构?例如,我使用相同的管道来写入多个表,并且我想为每个表创建一个新文件夹。如果我为每个要写入的表创建一个新的数据集,我可以做到这一点,但我想知道是否有办法自动做到这一点(使用动态内容)。
提前致谢。
解决方案
您可以设置一个管道参数来实现它。
这是我尝试将数据从 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
希望这可以帮助。
推荐阅读
- javascript - SVG图标上的Onlick可以是路径或svg,如何只制作SVG?
- oop - “严格继承”的例子
- amazon-web-services - 即使 docker 容器正在运行,也无法访问 AWS EC2 实例
- php - 有没有办法根据产品名称在类别页面上隐藏产品?
- python - BeautifulSoup 元素输出到列表
- vue.js - 将 Vuetify 导航抽屉切换到迷你,然后是临时的
- swift - 有没有办法获取作为 XCUIElement 的选择轮的字符串值?
- javascript - 在 iFrame 中创建链接
- python - 如何检查字符串列表是否存在任何元组
- java - Linux 上的 JVM 中如何初始化默认字符集