2016-08-02 5 views
0

私はこのようなクエリがあります。"INSERT INTO"出力テーブル?

select hour, count(*) 
from table 
group by hour 

私はリターンが見えるようにしたい:

hour count 
8  1 
9  0 
10 3 

しかし、同じよう代わりに、それはなります。これが原因であり

hour count 
8  1 
10 3 

tableのエントリがありませんでした。私が考えることのできる唯一の解決策は、insert intoステートメントを使用してクエリをラップしています。したがって、次のようなものがあります:

しかし、これはSpark SQLでは適切な構文ではありません。

データベースにそのテーブルを保存せずにクエリの結果として生成されるテーブルに挿入することはできますか?私が達成したいことを達成する別の方法がありますか?このような

+0

どのように組合の。時間単位で時間、カウント(*)を選択します。時間単位の組合選択で9,0、 – Kostya

+0

'org.apache.spark.sql.AnalysisException: 'union'の近くで 'select'にEOFがありません。 line 28 pos 0' –

+0

http://stackoverflow.com/a/1271845/5308100この回答を参照してください。私は信じなければならないトリックをする必要があります。 – Mark

答えて

0

何かが任意のデータベースエンジンで動作します:

select hour, sum(records) totalRecords 
from (
select 0 hour, 0 records 
from table 
union 
select 1 hour, 0 records 
from table 
... 
union 
select 23 hour, 0 records 
from table 
union 
select hour, count(*) records 
from table 
group by hour 
) derivedTable 

これは当然の前提とし、その時間は、一日の時間を表しています。