HiveQL INNER JOIN

时间:2014-04-24 11:40:20

标签: sql join hive

我正在Hive中的两个表之间尝试一个简单的INNER JOIN。我有一个ORDERS表,另一个是LOG表。这是两者的结构:

ORDERS:

id_operacion string               
fecha string                
id_usuario string                
id_producto string                
unidades int                
id_bono string                
precio float            
precio_total float                
ip string

日志:

host STRING
identity STRING
user STRING
time STRING
request STRING
status STRING
size STRING
referer STRING
agent STRING

订单表中并非所有'ip'都有值,其中一些是null。

我想获得值order.id_usuario,order.id_producto,logs.host,logs.agent。在order.ip = log.host。

的情况下

我正在尝试此查询:

SELECT order.id_producto,order.id_usuario,log.host,log.agent
FROM order JOIN log ON order.ip=log.host;

我不知道为什么但是查询会使用日志表中的所有代理响应我,而不仅仅是那些与两个表的IP地址匹配的代理。

我希望我已经很好地解释了这个问题。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这听起来像是加入的问题。它可能与空值有关。它也可以是表格中的数据。试试这个?

SELECT order.id_producto,order.id_usuario,log.host,log.agent
FROM order 
JOIN log ON order.ip=log.host
WHERE order.ip is not null