2016-03-11 33 views
5

Tôi cần tham gia tableA với bảngB trên employee_id và cal_date từ bảng A cần giữa ngày bắt đầu và ngày kết thúc từ bảng B. Tôi đã chạy bên dưới truy vấn và nhận được thông báo lỗi dưới đây hãy giúp tôi sửa và truy vấn. Cảm ơn bạn vì sự giúp đỡ của bạn!Tham gia bảng trên phạm vi ngày trong Hive

Cả bí danh trái và phải gặp phải trong JOIN 'date_start'.

select a.*, b.skill_group 
from tableA a 
    left join tableB b 
    on a.employee_id= b.employee_id 
    and a.cal_date >= b.date_start 
    and a.cal_date <= b.date_end 
+0

sử dụng 'a.cal_date giữa b.date_start và b.date_end' –

+0

Cảm ơn bạn đã nhập. Tôi đã cho tôi lỗi tương tự với cú pháp của bạn. Cả hai bí danh bên trái và bên phải gặp phải trong JOIN 'date_end' – Mixer

Trả lời

3

RTFM - trích dẫn LanguageManual Joins

Hive không hỗ trợ điều kiện tham gia mà không phải là điều kiện bình đẳng vì nó là rất khó khăn để diễn tả điều kiện như một bản đồ/giảm công việc.

Bạn có thể thử di chuyển bộ lọc GIỮA sang một mệnh đề WHERE, dẫn đến việc tham gia một phần-cartesian tệ hại, sau đó là dọn dẹp sau xử lý. Kinh quá. Tùy thuộc vào cardinality thực tế của bảng "nhóm kỹ năng" của bạn, nó có thể hoạt động nhanh - hoặc mất cả ngày.

Các vấn đề liên quan