【发布时间】:2020-05-26 23:05:15
【问题描述】:
我有两个表,我需要用最近的时间戳将它们连接起来,但我找不到简单的 SQL 方法。
示例数据:
table_1
+---------------------+------+
| timestamp | name |
+---------------------+------+
| 2020-02-11 14:50:00 | xxx |
| 2020-02-11 14:51:00 | yyy |
| 2020-02-11 14:52:00 | zzz |
+---------------------+------+
table_2
+---------------------+-------+
| timestamp | value |
+---------------------+-------+
| 2020-02-11 14:49:50 | 1 |
| 2020-02-11 14:49:58 | 2 |
| 2020-02-11 14:49:59 | 3 |
| 2020-02-11 14:50:50 | 11 |
| 2020-02-11 14:50:58 | 12 |
| 2020-02-11 14:50:59 | 13 |
| 2020-02-11 14:51:50 | 21 |
| 2020-02-11 14:51:58 | 22 |
| 2020-02-11 14:51:59 | 23 |
+---------------------+-------+
我需要让table_1 left join table_2 与最近的时间戳,条件是table_2 中的时间戳总是比table_1 中的小一点。有了这个逻辑,我期待得到这个结果表。
expected result
+---------------------+------+-------+
| timestamp | name | value |
+---------------------+------+-------+
| 2020-02-11 14:50:00 | xxx | 3 |
| 2020-02-11 14:51:00 | yyy | 13 |
| 2020-02-11 14:52:00 | zzz | 23 |
+---------------------+------+-------+
我是否可以使用 SQL 查询来完成它,即使它可能效率不高?否则,我正在考虑加载数据以触发数据框。我们在 spark 中实现了这种算法吗?
谢谢
【问题讨论】:
-
是的,您可以通过查询来完成。效率不是问题
-
谢谢,但是怎么做?我想不明白。你有例子吗?
-
请自行决定要使用什么环境(mysq 或apache-spark)和edit 相应的问题。这是两个不同的系统,具有不同的支持功能和不兼容的 SQL 方言。
标签: mysql sql dataframe apache-spark dataset