【问题标题】:How to transform hh:mm:ss to total seconds in azure data factory如何在 azure 数据工厂中将 hh:mm:ss 转换为总秒数
【发布时间】:2021-12-01 13:55:26
【问题描述】:

在 Azure 数据工厂中,如何将“hh:mm:ss”转换为总秒数。

在“添加动态内容”部分,我想在 Azure 数据工厂中使用“@activity('dataflow').Duration”来获取我当前活动的持续时间。但是,我发现“@activity('dataflow').Duration”是“hh:mm:ss”格式,我想把它转换成总秒数。

例如,使用“@activity('dataflow').Duration”,我可以得到“00:01:02”。我该怎么做才能将其转换为总秒数 62?

“00:01:22”->“82”

“00:00:30”->“30”

“01:00:00”->“3600”

非常感谢!!!!!!

enter image description here

【问题讨论】:

  • ADF 为这类事情提供了一种强大的表达语言,formatDateTimeaddmul(用于乘法)和intstring 的组合用于转换应该可以帮助您那里。通读文档here 并试一试。准备好后发回您的尝试以及收到的任何错误消息!

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


【解决方案1】:

正如 Wbob 所说,您可以尝试使用如下表达式 -

就我而言,我有一个带有 hh:mm:ss 值的参数。我在下面给出的表达式中使用它。您可以将参数部分替换为数据流持续时间。

@string(
add(
add(
mul(mul(int(split(pipeline().parameters.time,':')[0]),60),60),
mul(int(split(pipeline().parameters.time,':')[1]),60)),
int(split(pipeline().parameters.time,':')[2])
))

基本上,我是根据 : 来划分时间部分并处理时间的每个部分。

hh: [0]
mm: [1]
ss: [2]

hh换算:hh6060mm换算:mm*60

终于把所有东西加起来了。

【讨论】:

    【解决方案2】:

    我想出了以下表达式:

    @string(
    add(
    add(
    mul(int(formatDateTime(item(), 'HH')), 3600 ),
    mul(int(formatDateTime(item(), 'mm')), 60 )
    ), int(formatDateTime(item(), 'ss'))
    )
    )
    

    它正在使用以下功能:

    • formatDateTime - 返回指定格式的时间戳
    • int - 返回字符串的整数版本
    • mul - 返回两个数字的乘积(也称为乘法)
    • add - 将两个数字相加
    • string - 返回值的字符串版本

    您应该花一些时间阅读以下文章并进行一些练习。我经常使用Set Variable 活动来调试复杂的表达式并构建它们,通常是从内到外:

    Azure 数据工厂和 Azure Synapse Analytics 中的表达式和函数 https://docs.microsoft.com/en-us/azure/data-factory/control-flow-expression-language-functions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-17
      • 1970-01-01
      • 2013-10-12
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 2015-09-29
      相关资源
      最近更新 更多