Я получаю данные из остальных API в формате JSON и имею сценарий, в котором столбец может иметь несколько форматов даты. Текущий формат даты может быть либо 2011-02-12T01:00:00
, либо 2020-04-15T20:44:57.38
, либо может быть null
, либо каким-то другим.
Я хочу проанализировать его с помощью выражения и попытаться захватить полную строку даты. Следующее выражение, похоже, работает нормально, однако оно усекает миллисекундную часть и возвращает значение только до секунды.
iif(isnull(%date_fields%),'\N',
to_char(To_date(to_char(%date_fields%),'MM/DD/YYYY HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS'))
Но когда я попробовал это с миллисекундами, используя выражение ниже:
iif(isnull(%date_fields%),'\N',
to_char(To_date(to_char(%date_fields%),'MM/DD/YYYY HH24:MI:SS.MS'),'YYYY-MM-DD HH24:MI:SS.MS'))
Выдает ошибку:
TT_11132 Transformation [Expression3] had an error evaluating output column [JobStartDate_out].
Error message is [<<Expression Error>> [TO_DATE]: invalid string for converting to Date
... t:TO_DATE(u:TO_CHAR(t:<02/12/2011 01:00:00>,u:'MM/DD/YYYY HH24:MI:SS'),u:'MM/DD/YYYY HH24:MI:SS.MS')].
Я искал несколько вариантов, используя ниже, но получаю ошибку синтаксического анализа.
DECODE (TRUE,
iff(isnull(%date_milli%),
'\N',
is_date(To_date(to_char(%date_milli%),'MM/DD/YYYY HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS'),
is_date(To_date(to_char(%date_milli%),'MM/DD/YYYY HH24:MI:SS.MS'),'YYYY-MM-DD HH24:MI:SS.MS'),
ERROR('NOT A VALID DATE')))
Каким может быть возможное решение для обработки нескольких форматов даты в Informatica? Здесь формат даты JSON представляет собой строку, и я сопоставляю ее с типом даты/времени и использую поля вывода Marco для объединения нескольких похожих столбцов.