2016-09-23 24 views
0

ハイブクエリで左結合を試みていますが、動作していないようです。それだけで、左の表から私の列を返します。ハイブクエリが正常に動作しない

create table mb.spt_new_var as select distinct customer_id ,target from mb.spt_201603 A 
    left outer join mb.temp B 
    on (A.customer_id=B.cust_id); 

私はテーブルAからいくつかのランダムなCUSTOMER_IDに基づいて、テーブルBからいくつかのレコードを選択しようと、それはいくつかのレコードを返します。しかし、テーブルAの左結合を試すと、テーブルAからの列のみが返されます。両方のIDのデータ型は同じ(int)です。これの背後にある可能性のある理由は何でしょうか?

サンプル表A:

Customer_account_id target 
12356    1 
34245    0 
12356    1 
....    .. 

サンプルテーブルB:表Bは、いくつかの30メートルのレコードを有している

Cust_id col1 col2 col3 
12356  .. 
12567  .. 
24426  .. 
... 

表Aは、いくつか1メートルのレコードを有しています。テーブルAとテーブルBにIDが重複する可能性があります。

+0

あなたの質問を編集して、サンプルデータを提供してください。あなたが得ている結果(そしてあなたが期待するもの)。 '左の結合 'についてのあなたの記述は、それが働くはずのように聞こえる。 –

答えて

0

私は少し混乱しています。ハイブは、クエリで指定した列を返している:

select distinct a.customer_id, a.target 
from mb.spt_201603 a left outer join 
    mb.temp b 
    on a.customer_id = b.cust_id; 

2番目のテーブルから列をしたい場合は、あなたがそれらを選択する必要があります。

select distinct a.customer_id, a.target, b.col1, b.col2 
from mb.spt_201603 a left outer join 
    mb.temp b 
    on a.customer_id = b.cust_id; 
+0

私は、a、customer_id、a.target、b。*を試していますが、TOK_ALLCOLREFは現在のコンテキストではサポートされていません – muni

+0

他のデータベースでは、テーブルAから何かを選択してから左ジョインを行います。そのことだけでなく、b.colsも指定する必要がありました。ありがとう! – muni

関連する問題