AWS Athena - Как изменить формат строки даты - PullRequest
1 голос
/ 09 апреля 2019

У меня есть две таблицы в базе данных в AWS Athena, к которым я хочу присоединиться.

Я хочу объединить их в несколько столбцов, один из которых - дата.

Однако в одном наборе данных строка даты кодируется для одного значения месяцев, кодируется как

 "08/31/2018"

В то время как другой кодировал бы его как

 "8/31/2018"

Есть ли способ сделать их одинаковыми?

Я не уверен, что проще добавить дополнительный 0 к строкам, в которых отсутствует лишний 0, или объединить строки, которые имеют дополнительные 0.

Исходя из того, что я исследовал, я думаю, что мне придется использовать функции CASE и CONCAT.

Обе таблицы были загружены в базу данных из файла CSV, а переменные представлены в строковом формате.

Я попытался изменить значения вручную в файле CSV, попытался запустить сценарий R для одной из таблиц, чтобы форматировать дату таким же образом, а также попытался повторно загрузить таблицы в базу данных на ту же дату формат.

Однако независимо от того, что я делаю, когда он загружается в базу данных, даже если они имеют одинаковый тип даты, он всегда загружает их в разных форматах.

Один с дополнительным 0, а другой без него.

Последнее, что я не пробовал, - это запрос SQL.

Однако я не очень хорошо разбираюсь в Афинах, и мне трудно форматировать этот запрос.

Я знаю, что это довольно расплывчато, поэтому, пожалуйста, попросите у меня дополнительную информацию, если вам нужно.

Если бы кто-то мог помочь мне начать этот запрос, я был бы благодарен.

Спасибо за помощь.

Вот запрос на изменение даты в Афине.

  date_parse(table.date_variable,'%m/%d/%Y')

Хотя таблицы Athena неизменны после создания.

1 Ответ

1 голос
/ 09 апреля 2019

Вы можете преобразовать значение в дату, используя date_parse(). Итак, это должно работать:

date_parse(t1.datecol, '%m/%d/%Y') = str_to_date(t2.datecol, '%m/%d/%Y')

Сказав это, вы должны исправить модель данных. Хранить даты как даты не как строки ! Тогда вы можете использовать равенство, и все будет лучше.

...