Как получить количество миллисекунд с начала эпохи в ADF

#azure #azure-data-factory #azure-data-factory-2

#azure #azure-data-factory #azure-data-factory-2

Вопрос:

Я изо всех сил пытаюсь получить временную метку Unix для текущего времени в ADF. В принципе, мне нужно количество миллисекунд (мс) с момента эпохи. Я пытался использовать встроенную функцию ticks в ADF, но это не то, что мне нужно. Также документация по тикам не совсем понятна. В нем говорится, что функция возвращает количество тиков с момента указанной метки времени. 1 тик = 100 наносекунд и 1000000 наносекунд = 1 мс. Поэтому, учитывая это, я использовал следующее выражение в заданной переменной activity:-

 @{ div(ticks('1970-01-01T00:00:00.0000000Z'),10000)   }
  

Таким образом, ожидается, что всякий раз, когда я его запускаю, он должен давать мне количество миллисекунд с момента начала эпохи (до момента выполнения) — так что по этому определению каждый раз, когда я его запускаю, он должен возвращать мне другое значение. Но он возвращает фиксированное значение 62135568000000 каждый раз, когда я его запускаю. Так что либо документация неверна, либо она на самом деле не вычисляет то, что мне действительно нужно.

Ответ №1:

Функция ticks() возвращает количество тиков из ‘0001-01-01T00:00:00.0000000Z’ в параметр ticks(), а не из ‘1970-01-01T00:00:00.0000000Z’.Вот почему вы всегда получаете фиксированное значение 62135568000000.

Я пробовал @{ticks('0001-01-01T00:00:00.0000000Z')} , результат равен 0.

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

Итак, если вы хотите получить ms от ‘1970-01-01T00: 00: 00.0000000Z’ до текущего времени, вы можете попробовать это : @{div(sub(ticks(utcnow()),ticks('1970-01-01T00:00:00.0000000Z')),10000)} .