Her ikisinin de tercih ettiği bir filmin, bir .user_id ve b.user_id sayısını döndüren bir HIVE sorgusu yazmayı deniyorum. Sorgumu çalıştırdığımda a.user_id, b.user_id, count ve film setlerini alıyorum. Ayrıca b.user_id, a.user_id, count ve film setlerini de alıyorum.Filtre Sorguda Eşleme Tersine Eşleştirme
Sorgum, sorgumu yalnızca a.user_id, b.user_id sayısı ve film grubuyla nasıl sınırlandıracağım sorusudur.
Zaten ON(a.movie_id = b.movie_id AND a.user_id < b.user_id)
SELECT a.user_id, b.user_id, count(*) AS num, collect_set(m.movie_title)
FROM ratings a
JOIN ratings b
ON (a.movie_id = b.movie_id)
JOIN movies m
ON (a.movie_id = m.movie_id AND b.movie_id = m.movie_id)
WHERE (a.user_id <> b.user_id)
GROUP BY a.user_id, b.user_id;
ORDER BY num DESC;
hattı 4 chaning tarafından Remove reverse duplicates from an SQL query önerilen bir çözüm çalıştılar Güncel Çıktı: filmleri
B, A
A, B, 25, liste, 25, filmlerin listesi
İstenen çıktı:
A, B, film
Ve neden değil Önerilen çözüm çalışır? –
Bunun sebebi, ben bir öz birleştirme yapıyorum ve kullanıcı deyimine kendi kendine katılmaya başlarken, buradaki ifadeyi değiştirdiğinizde düşünüyorum. Örneğin, dosya boyutu 172.9kb idi ve dosya boyutunun değiştirilmesi 17.8MB oldu. Çıkışı kontrol ettiğimde, eşleşen filmlerin sayısı 6-138 aralığındaydı ve şimdi 300.000 büyüklüğündeler. –