2017-12-26 8 views
0

私はSQLとApache Sparkの学習を始めました。Apache Spark:成功率の問い合わせ

Sparkの内部にSQLテーブルをインポートしました。

今、「はい」にする必要があるフィールドに基づいて成功率を見つける必要があります。

ので、私は「はい」として特定のフィールドを持っている行の数で割った行の合計数を見つける必要がある

私は別に結果を見つけることができたが、これらの2つのクエリを結合する方法を知りませんでした。

sqlContext.sql("select count(*) from customers") 

res51: org.apache.spark.sql.DataFrame = [_c0: bigint] 

sqlContext.sql("select count(*) from customers where custSub = 'yes'") 

res52: org.apache.spark.sql.DataFrame = [_c0: bigint] 

私は単一のクエリを使用して結果を見つけることができますか私は、個々のクエリの結果を格納した後、任意の操作を実行する必要があります。

これで私を助けてもらえますか?

答えて

0

これを行うには、条件付き集計を使用できます。ここで

sqlContext.sql("""select count(case when custSub = 'yes' then 1 end)/count(*) 
        from customers 
       """) 
+0

これはうまくいきました。ありがとうございました –

0

avg()を使用率を取得するためのちょっといいトリックです:

select avg(case when custSub = 'yes' then 1.0 else 0.0 end) as rate 
from customers;