У меня есть таблица, состоящая из 100 столбцов, два из которых — dt и tm, которые являются разделами. выглядит примерно так:
-------------------
| dt tm |
-------------------
| 2022/01/01 10 |
| 2022/01/02 15 |
| 2022/01/03 03 |
| 2022/01/04 20 |
-------------------
Я хочу иметь возможность добавить еще один столбец, который будет служить отметкой времени, основанной на «конкатации» dt и tm. То есть:
--------------------------------------------
| dt tm timestamp |
--------------------------------------------
| 2022/01/01 10 2022/01/01 10:00:00 |
| 2022/01/02 15 2022/01/02 15:00:00 |
| 2022/01/03 03 2022/01/03 03:00:00 |
| 2022/01/04 20 2022/01/04 20:00:00 |
--------------------------------------------
Таблица создается с помощью Glue и обновляется каждые пару часов с помощью сканера.
До сих пор я пытался использовать функцию ALTER TABLE ADD COLUMNS
, но не смог с ней справиться, так как не могу добавить ничего, кроме имени нового столбца и его типа. Мне нужно добавить столбец, который вычисляется для каждой новой добавленной строки.
Это возможно?
Ценим любую помощь!
Честно говоря, вместо того, чтобы добавлять еще один столбец, я бы порекомендовал вам создать представление на столе с дополнительным столбцом.
Таким образом, всякий раз, когда данные добавляются в исходную таблицу, в дополнительных столбцах будут данные, которые вы ожидаете. Не нужно будет «заполнять» дополнительный столбец.
Если ваши поля TEXT, вы можете использовать:
CREATE VIEW my_view AS
SELECT
*,
dt || ' ' || tm || ':00:00' as timestamp
FROM table
Если вашими полями являются DATE и INT, и вы хотите вывести TIMESTAMP, используйте:
CREATE VIEW my_view AS
SELECT
*,
CAST(dt as TIMESTAMP) + tm * interval '1' hour as timestamp
FROM table
Затем вы можете получить доступ к таблице, используя имя представления, например:
SELECT * FROM my_view
WHERE timestamp < '2022-01-01'
Спасибо за развернутый ответ! воспользуюсь твоей идеей
Являются ли эти поля текстовыми или они хранятся как DATE и INT? И вы хотите, чтобы новое поле было TEXT или TIMESTAMP? Косая черта в датах не похожа на обычный вывод даты из Athena.