在 Azure Synapse / Datafactory 管道期间,我尝试“简单地”将日期时间保存为 CSV 文件中的字符串。在保存日期时间之前,我想对其进行格式化,例如“2021-04-13T00:00:00.000Z”,在“T”之后总是“00:00:00.000Z”。
在复制活动中,我使用 Azure 中的 formatDateTime 函数在源中添加一个新字段并格式化日期时间,但我无法产生我期望的结果。此外,我遇到了多个我不明白的输出。
这是我为调试所做的: 在复制活动“源”中,我添加了多个新字段,这些字段以不同的方式格式化 PipelineTriggerTime,具有不同的效果。我将这些值作为接收器写入 CSV 文件。
下表显示了输入、动态值、预期结果和实际结果。
管道()。触发时间 | 动态内容 | 预期产出 | 实际输出 | |
---|---|---|---|---|
1 | 2021-04-13T11:14:33.375Z | @formatDateTime(pipeline().TriggerTime, 'yyyy-MM-ddT00:00:00.000Z') | 2021-04-13T00:00:00.000Z | 2021 年 4 月 13 日 00:00:00 |
2 | 2021-04-13T11:14:33.375Z | @formatDateTime(pipeline().TriggerTime, 'yyyy-MM-dd hh:mm:ss') | 2021-04-13 11:14:33 | 2021-04-13 11:14:33 |
3 | 2021-04-13T11:14:33.375Z | @formatDateTime(pipeline().TriggerTime, 'yyyy-MM-ddTsomeText') | 2021-04-13TsomeText | 2021-04-13T33o14eTexA |
4 | 2021-04-13T11:14:33.375Z | @concat(formatDateTime(pipeline().TriggerTime, 'yyyy-MM-dd'), 'T00:00:00.000Z') | 2021-04-13T00:00:00.000Z | 2021 年 4 月 13 日 00:00:00 |
5 | 2021-04-13T11:14:33.375Z | @concat(formatDateTime(pipeline().TriggerTime, 'yyyy-MM-dd'), 'TsomeText') | 2021-04-13TsomeText | 2021-04-13TsomeText |
老实说,对我来说唯一不令人惊讶的输出是 2 和 5。
这可以解释吗?formatDateTime 函数应该返回一个“字符串”,但它似乎做了一些不同的事情(有时)。
任何其他想法,我如何达到我的目标,将字符串“2021-04-13T00:00:00.000Z”保存到 csv Azure 复制活动中的文件?
我正在使用 Synapse Analytics,但数据工厂的效果是相同的,因此我添加了后者以接触更多人。