#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