【问题标题】:String function on filenames and adding as additional column文件名上的字符串函数并作为附加列添加
【发布时间】:2020-07-30 18:06:56
【问题描述】:

我在 blob 存储中有 CSV 文件,文件名由下划线分隔,例如 100001_1036_1595841882.csv。我想将这些 CSV 推送到 Azure Synapse,但为文件名中的每个分隔字段添加了列。

我已经尝试在复制活动中使用新的“附加列”功能,但不知何故我无法将字符串函数与$$FILEPATH 一起使用(见下图)。单独使用$$FILEPATH 就可以了。

【问题讨论】:

  • 您可以将文件名推送到 Synapse 中,然后使用 STRING_SPLIT 在 ADF 中使用存储过程任务来拆分它们。

标签: azure-data-factory azure-data-factory-2


【解决方案1】:

您可以使用复制活动来执行此操作,但您必须采取不同的方法,然后使用 $$FILEPATH 变量,该变量无法使用“添加动态内容”公式构建器进行操作。

如果您将文件名作为参数传递给管道,则可以像往常一样对其进行操作。例如,如果你有一个基于事件的触发器,你可以从那里提取文件名。

在上面的屏幕截图中,您可以看到我是如何使用@split(pipeline().parameters.fileName, '_')[0] 函数提取文件名的不同部分的。我对每个部分都这样做,并添加$$FILEPATH 以获取完整的文件名(您当然可以使用@pipeline().parameters.fileName 中的值)。对于最后一部分,我还删除了文件扩展名。

当您在源和接收器之间进行映射时,附加列将显示为源数据集中的任何列。

一旦管道执行完成,SQL 表将包含所有相关数据

【讨论】:

  • 谢谢!我没有完全遵循这个答案,但它确实帮助我理解了一些事情。
  • 太棒了!您会考虑按原样接受答案,还是认为缺少某些内容可以更好地回答您的问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2019-06-07
  • 2011-04-03
  • 2023-01-19
相关资源
最近更新 更多