在 Athena 中添加一个由两个现有列组成的列

Add a column consisting of two existing columns in Athena

我有一个table,由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      |
--------------------------------------------

table 使用 Glue 创建并使用爬虫每隔几个小时更新一次。

到目前为止,我尝试使用 ALTER TABLE ADD COLUMNS 函数但无法解决问题,因为除了新列的名称及其类型之外我无法添加任何内容。我需要的是添加一个为每个添加的新行计算的列。 那可能吗? 感谢任何帮助!

坦率地说,与其添加另一列,我建议您在具有附加列的 table 上创建一个视图。

这样,无论何时在原始 table 中添加数据,额外的列都会包含您期望的数据。不需要 'populate' 附加列。

如果您的字段是文本,您可以使用:

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

然后您可以使用视图名称访问 table,例如:

SELECT * FROM my_view
WHERE timestamp < '2022-01-01'