Соответствие шаблону для определения формата даты

Мой источник имеет разные форматы даты, как показано ниже, и я ищу алгоритм для определения шаблона исходной даты, опробованного в интеграции данных Pentaho с выбранным значением и нечеткими шагами.

Столбец даты (строка)
"20150210"
"20050822--"
"2014-02-May"
"20051509--"
"02-May-2014"
"2013-May-12"
"12DEC2013"
"15050815"
"May-02-2014"
"12312015"

Я знаю, что в PDI мы можем достичь шага JS, написав условия If для каждого шаблона, но это не очень хорошая идея, и этот подход делает преобразование мертвым при работе с огромными записями, ища эффективный способ поиска шаблона даты.

Я считаю, что это очень распространенная проблема во всех проектах ETL. Здесь я пытаюсь понять, как поставщики предприятий, такие как SAS Data Integration, Informatica, SSIS, обеспечивают простой способ решения.

Есть ли у нас какой-либо алгоритм для определения исходного шаблона. Если да, то какой?

Перечисленные выше форматы не ограничены.


person Naveen    schedule 12.10.2015    source источник
comment
01-02-05 ‹-- Какое сегодня число? Ответ таков: это полностью зависит от культуры автора. en-GB переведет это на Feb 1 2005. en-US идентифицируется как Jan 2 2005. В то время как ja-JP указал бы Feb 5 2001   -  person billinkc    schedule 12.10.2015


Ответы (1)


Нельзя просто определить «моновалентное» значение как формат для любого заданного ввода.

Считайте все следующие форматы полностью действительными:

  • MM-dd-yy
  • dd-MM-yy
  • yy-MM-dd

Как указано в комментарии @billinkc, как бы вы назвали 01-02-05 в этом случае?

Если вообще, вы будете решаемой, только если вы примете во внимание набор данных (например, вы знаете, что все следующие строки X имеют один и тот же формат даты). Затем вы можете рассматривать это как линейную задачу с некоторыми ограничениями, которые могут помочь вам определить формат даты. Даже в этом случае вы не можете гарантировать, что получите определенный ответ, просто увеличите вероятность того, что вы получите определенный ответ.

person Yuval Herziger    schedule 16.11.2015