Azure DataFactory将字符串(年为2位)转换为日期
我目前正在Azure Data Factory中使用一组CSV日志文件,我需要处理这些文件并将其输入SQL表 问题在于,某些列包含时间戳,其中年份由2位数字表示(与完整的4位数字年份相反)。 例如,Azure DataFactory将字符串(年为2位)转换为日期,azure,datetime,azure-data-factory,azure-data-factory-2,azure-data-factory-pipeline,Azure,Datetime,Azure Data Factory,Azure Data Factory 2,Azure Data Factory Pipeline,我目前正在Azure Data Factory中使用一组CSV日志文件,我需要处理这些文件并将其输入SQL表 问题在于,某些列包含时间戳,其中年份由2位数字表示(与完整的4位数字年份相反)。 例如,01/03/17 22:10:33的日期格式为MM/dd/yy HH:MM:ss 如何将其转换为日期或将“20”添加到年份的值?(例如,01/03/17 22:10:33将变成01/03/2017 22:10:33)。这在代码中非常简单,但我不确定如何在Azure数据工厂的数据流中实现 编辑:正如@H
01/03/17 22:10:33
的日期格式为MM/dd/yy HH:MM:ss
如何将其转换为日期或将“20”添加到年份的值?(例如,01/03/17 22:10:33
将变成01/03/2017 22:10:33
)。这在代码中非常简单,但我不确定如何在Azure数据工厂的数据流中实现
编辑:正如@HimanshuSinha msft所提到的,在解析之前必须删除撇号才能工作。我在数据流中添加了一个额外的步骤:
toTimestamp(子字符串({Column Name},2,length({Column Name})-1),'MM/dd/yy hh:MM:ss')
,它成功了 ADF数据流完全支持Java标准日期/时间格式化程序。在您的情况下,您可以按原样转换为timestamp(),以获得排列的日期/时间组件,然后转换为您希望使用toString()实现的输出字符串,如下所示:
toString(toTimestamp('01/03/17 22:10:33','MM/dd/yy HH:MM:ss'),'MM/dd/yyyy HH:MM:ss')
更多详情:
这是一个对我来说是个拦路虎的把戏,但是试试这个-
选择所需的任何定义格式。我尝试使用
toTimestamp
函数,但结果仍然相同,列的值仍然显示为Null
。我在数据流上添加了一个步骤来添加新列,并输入了以下表达式toTimestamp({Start Date},“MM/dd/yy HH:MM:ss”)
在上面的示例中,开始日期有2个空格。你在格式化程序中说明了吗?是的。csv上的值也被撇号包围,比如'01/03/17 22:10:33'
,我甚至尝试将格式设置为'MM/dd/yy HH:MM:ss'
(引号之间)。我不知道发生了什么事。我目前尝试使用1和2个空格,以及带撇号和不带撇号-都不起作用你能从CSV文件中粘贴一个示例行吗?查看数据,我发现日期是单引号,这就是@MarkKromerMSFT建议不起作用的原因,我做了一个小测试,如果我们可以删除单引号,它将工作良好。我尝试了下面的表达,它确实有效,请务必让我们知道它是如何运作的。toTimestamp(子字符串(Somedate,2,长度(Somedate)-1),'MM/dd/yy hh:MM:ss')