Запрос данных отметки времени в Athena при изменении формата отметки времени в базовых файлах JSON

Я запрашиваю данные в AWS Athena из файлов JSON, хранящихся в S3. Я загрузил все файлы JSON в Athena с помощью AWS Glue, и пока он работает отлично. Однако форматирование метки времени изменилось в файлах JSON с

2018-03-23 15:00:30.998

к

2018-08-29T07:59:50.568Z

Таким образом, в таблице появляются такие записи

2018-08-29T07:59:42.803Z
2018-08-29T07:59:42.802Z
2018-08-29T07:59:32.500Z
2018-03-23 15:03:43.232
2018-03-23 15:03:44.697
2018-03-23 15:04:11.951

Это приводит к ошибкам синтаксического анализа, когда я пытаюсь выполнить запросы к полной БД.

Как разместить это в AWS Glue (или Athena), чтобы не разделять данные при запросе? Я пробовал изучать специальные классификаторы, но не знаю, как их использовать в данном конкретном случае.

Заранее спасибо.

Можете ли вы сопоставить свои значения временных меток как varchar? Затем вы сможете явно проанализировать их в SQL (или определить VIEW, который это делает), используя оператор CASE, проверяя, в каком формате находится конкретное значение.

Piotr Findeisen 29.08.2018 16:18

Кажется, это тоже работает. Но вместо этого я фактически объединил данные.

Artem 29.08.2018 17:23
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
1 980
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

К сожалению, вам нужно унифицировать данные. Если вы решите использовать формат «2018-08-29T07: 59: 50.568Z», вы можете прочитать такие данные с помощью библиотеки org.apache.hive.hcatalog.data.JsonSerDe со следующим свойством serde: 'timestamp.formats' = ' гггг-ММ-дд \ 'Т \' ЧЧ: мм: сс.СССЗ '

Я не совсем уверен, что вы имеете в виду под «единством данных»?

Artem 29.08.2018 14:44

Как вы упомянули, у вас есть столбец меток времени с двумя форматами (2018-08-29T07: 59: 42.803Z и 2018-03-23 ​​15: 03: 44.697). Вы должны унифицировать данные и использовать только один формат.

j.b.gorski 29.08.2018 14:46

Другие вопросы по теме