JOIN语句
实时计算的JOIN和传统批处理JOIN的语义一致,都用于将两张表关联起来。区别为实时计算关联的是两张动态表,关联的结果也会动态更新,以保证最终结果和批处理结果一致。
语法
tableReference [, tableReference ]* | tableexpression
[ LEFT ] JOIN tableexpression [ joinCondition ];
- tableReference:表名称。
- tableexpression:表达式。
- joinCondition:JOIN条件。
注意事项
- 只支持等值连接,不支持非等值连接。
- 只支持INNER JOIN和LEFT OUTER JOIN两种JOIN方式。
Orders JOIN Products表的数据示例
测试数据
表 1. Orders
rowtime | productId | orderId | units |
---|---|---|---|
10:17:00 |
30 | 5 | 4 |
10:17:05 |
10 | 6 | 1 |
10:18:05 |
20 | 7 | 2 |
10:18:07 |
30 | 8 | 20 |
11:02:00 |
10 | 9 | 6 |
11:04:00 |
10 | 10 | 1 |
11:09:30 |
40 | 11 | 12 |
11:24:11 |
10 | 12 | 4 |
表 2. Products
productId | name | unitPrice |
---|---|---|
30 | Cheese | 17 |
10 | Beer | 0.25 |
20 | Wine | 6 |
30 | Cheese | 17 |
10 | Beer | 0.25 |
10 | Beer | 0.25 |
40 | Bread | 100 |
10 | Beer | 0.25 |
测试语句
SELECT o.rowtime, o.productId, o.orderId, o.units,p.name, p.unitPrice
FROM Orders AS o
JOIN Products AS p
ON o.productId = p.productId;
测试结果
o.rowtime | o.productId | o.orderId | o.units | p.name | p.unitPrice |
---|---|---|---|---|---|
10:17:00 |
30 | 5 | 4 | Cheese | 17 |
10:17:05 |
10 | 6 | 1 | Beer | 0.25 |
10:18:05 |
20 | 7 | 2 | Wine | 6 |
10:18:07 |
30 | 8 | 20 | Cheese | 17 |
11:02:00 |
10 | 9 | 6 | Beer | 0.25 |
11:04:00 |
10 | 10 | 1 | Beer | 0.25 |
11:09:30 |
40 | 11 | 12 | Bread | 100 |
11:24:11 |
10 | 12 | 4 | Beer | 0.25 |
datahub_stream1 JOIN datahub_stream2表的数据示例
测试数据
表 3. datahub_stream1
a(BIGINT) | b(BIGINT) | c(VARCHAR) |
---|---|---|
0 | 10 | test11 |
1 | 10 | test21 |
表 4. datahub_stream2
a(BIGINT) | b(BIGINT) | c(VARCHAR) |
---|