azure-data-factory - 如何获取 Azure 数据工厂中的分区总数?
问题描述
我正在尝试按模式设置拆分文件名,但我不知道如何获取分区总数。
我要查找的文件的名称是my_file_name_pattern_[n]of[N].txt
分区由键列动态设置。
我怎样才能得到[N]
?
解决方案
好吧,我得到了微软的答复:
我们正在向 AzDF 添加一个新的“缓存查找”功能,该功能基于现有的查找/接收器转换,例如,我们可以访问聚合的输出并在数据流的另一个转换中使用该值。
更新!
现在我们可以在数据流中设置值,而无需使用接收器在 Blob 存储中加载文件并使用额外的活动来读取它。检查Cached lookup
文档:
在Sink
我们可以选择Cache
而不是数据集...
然后我们可以在任何其他活动中使用该值:
喜欢mySinkName#outputs()[myRowNumber].yColumnName
缓存查找之前的解决方法
在发布此新功能时。我得到了一种使用As data in column
opt 而不是Pattern
命名文件的方法,这里是解决方案:
在数据流中,我有两个来源:
- Source1:从计算中获取分区数。输出将处于
Select
具有一个值的转换中:
| partitions |
| 3 |
- 来源2:
- 连接到
Synapse/Hive
要拆分为多个文件的表 ( ) - 添加从, 列名
Surrogate Key
开始的转换1
SK
- 连接到
- 添加
Union
转换并使用Custom (cross)
连接,在条件下使用true()
- 添加 a
Derived column
以获取用于拆分文件的键列partition_number
=mod(SK, partitions) + 1
- 添加另一个
Derived column
以获得列files names
=concat($target_folder, '/', $fileName, '_', toString(partition_number), 'of', toString(partitions), '.', $extension)
5.1。选项中的Optimize
使用partition_number
中列Key
- 在选项卡集中添加一个
Sink
to and并使用列ADLS
setting
As data in column
file_name
Column with file name
6.1。在Mapping
选项卡中用于rule-based mapping
忽略流中创建的临时列。- 输入列:!in(['SK','partition_number','partitions','file_names'], name)
- 输出列:$$
注意:在工作中,我们有一个自定义的 AzDF,并且我们的一些活动被锁定或禁用。这就是为什么这种解决方法而不是在管道级别使用
SP
and的原因。Lookup
此外,我不喜欢以任何分隔格式在 ADLS 中保存一些数据,然后将其与查找活动一起使用以提取值并设置一些参数……这似乎是一个简单解决方案的步骤。
推荐阅读
- java - 无法理解泛型和继承
- javascript - 将 HTML 输入标记文件数据发布到另一个输入标记文件并在 Django 视图中检索
- java - java.lang.NoClassDefFoundError: com.google.maps.GeoApiContext$Builder
- reactjs - 输入 sth 并删除后,输入字段始终为零
- swift - 为什么 SwiftUI 中的 .gesture() 不能用于我的整个模态视图?
- php - 如何限制访问 url?
- linux - 当 IT 不允许您在 Windows 工作站上安装任何东西时,如何为 React 设置开发环境
- nuxt.js - 为什么在上传到主机 nuxtjs 时输入中会丢失 type="text"?
- sql-server - Kafka-Connect For MSSQL 无效值 java.sql.SQLException:找不到合适的驱动程序进行配置
- reactjs - 每次击键后反应输入失去焦点