You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Data Factory中将as_of_date字段转为yyyy-MM-dd格式

解决方法

一、直接修改Copy活动的参数表达式(快速实现)

你现在的参数表达式直接拼接了原始的as_of_date字符串,只需在拼接前将其转换为yyyy-MM-dd格式即可。因为源数据是yyyyMMdd格式的字符串,先通过parseDateTime将其解析为日期对象,再用formatDateTime输出目标格式。

修改后的代码如下:

@concat('XYZ_',
    pipeline().parameters.TableName,
    '_',
    formatDateTime(parseDateTime(activity('Lookup1').output.firstRow.as_of_date, 'yyyyMMdd'), 'yyyy-MM-dd'),
    '_',
    formatDateTime(utcNow(),'yyyyMMddhhmmss'),'.txt'
    )
  • parseDateTime(activity('Lookup1').output.firstRow.as_of_date, 'yyyyMMdd'):把yyyyMMdd格式的字符串解析为日期对象
  • formatDateTime(..., 'yyyy-MM-dd'):将日期对象格式化为yyyy-MM-dd的字符串

二、利用Lookup活动的「类型转换设置」实现

这种方式会把Lookup返回的as_of_date直接转成Date类型,后续使用时直接格式化即可,步骤如下:

  1. 打开Lookup活动的「源」配置面板,找到「类型转换」选项
  2. 添加一条转换规则:
    • 字段名:as_of_date
    • 源数据类型:String
    • 目标数据类型:Date
    • 输入格式:yyyyMMdd
  3. 保存配置后,Lookup输出的as_of_date就会是Date类型,此时Copy活动的参数可以修改为:
@concat('XYZ_',
    pipeline().parameters.TableName,
    '_',
    formatDateTime(activity('Lookup1').output.firstRow.as_of_date, 'yyyy-MM-dd'),
    '_',
    formatDateTime(utcNow(),'yyyyMMddhhmmss'),'.txt'
    )

这种方式的好处是把日期格式的处理统一在Lookup环节,后续使用时无需重复解析字符串。

三、针对Copy活动预览源的处理

如果as_of_date来自Copy活动的源数据(而非Lookup),因为源格式同样是yyyyMMdd字符串,处理逻辑和上面一致:

  • 若在Sink文件名中使用,直接用parseDateTime+formatDateTime转换:
    @concat('XYZ_',
        pipeline().parameters.TableName,
        '_',
        formatDateTime(parseDateTime(item().as_of_date, 'yyyyMMdd'), 'yyyy-MM-dd'),
        '_',
        formatDateTime(utcNow(),'yyyyMMddhhmmss'),'.txt'
        )
    
  • 若在数据映射中需要转换格式,可在Copy活动的「映射」面板里给as_of_date字段设置类型转换,指定源格式yyyyMMdd,目标格式yyyy-MM-dd。

内容的提问来源于stack exchange,提问作者Patterson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:07:24