Как преобразовать hh: mm: ss в общее количество секунд на фабрике данных Azure

#azure-data-factory #azure-data-factory-2 #dataflow #azure-data-factory-pipeline

#azure-data-factory #azure-data-factory-2 #поток данных #azure-data-factory-конвейер

Вопрос:

Что я могу сделать на фабрике данных Azure, чтобы преобразовать «hh: mm: ss» в общее количество секунд.

В части «Добавить динамический контент» я хочу использовать «@activity (‘поток данных’).Длительность» на фабрике данных Azure, чтобы получить продолжительность моей текущей активности. Однако я обнаружил, что «@activity (‘поток данных’).Длительность» находится в формате «чч: мм: сс», и я хочу преобразовать его в общее количество секунд.

Например, используя «@activity(‘поток данных’).Продолжительность», я могу получить «00: 01:02». Что я могу сделать, чтобы преобразовать его в общее количество секунд 62?

«00:01:22» -> «82»

«00:00:30» -> «30»

«01:00:00» -> «3600»

Большое спасибо!!!!!

введите описание изображения здесь

Комментарии:

1. У ADF есть способный язык выражений для такого рода вещей, комбинация formatDateTime , add , mul (для умножения) и int и string для преобразования должна привести вас к этому. Ознакомьтесь с документами здесь и попробуйте это сделать. Опубликуйте свои попытки, когда будете готовы, и любые сообщения об ошибках, которые вы получите!

Ответ №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]
 

преобразование чч: чч 60 60 мм преобразование: мм * 60

наконец, сложите все.

Ответ №2:

Я придумал следующее выражение:

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

Он использует следующие функции:

  • FormatDateTime — возвращает временную метку в указанном формате
  • int — возвращает целочисленную версию строки
  • mul — возвращает произведение двух чисел (также известное как умножение)
  • добавить — сложить два числа вместе
  • строка — возвращает строковую версию значения

Вам следует потратить некоторое время на изучение следующей статьи и немного попрактиковаться. Я часто использую заданную переменную activity для отладки сложных выражений и их создания, обычно изнутри:

Выражения и функции на фабрике данных Azure и в аналитике Azure Synapse
https://docs.microsoft.com/en-us/azure/data-factory/control-flow-expression-language-functions