3

spark SQLの新機能です。最近私はspark SQL文を実行する際に問題に直面しています。エラーを取得しています: '関連するスカラーサブクエリを集計する必要があります:グローバル制限1 n + - ローカル制限1 n SPARK SQLで

spark.sql("select f.ID as TID ,f.BldgID as TBldgID, f.LeaseID as TLeaseID, f.Period as TPeriod,coalesce((select f ChargeAmt from Fact_CMCharges f where f.BldgID=Fact_CMCharges.BldgID limit 1),0) as TChargeAmt1,f.ChargeAmt as TChargeAmt2,l.EFFDATE as TBreakDate from Fact_CMCharges f join CMRECC l on l.BLDGID=f.BldgID and l.LEASID=f.LeaseID and l.INCCAT=f.IncomeCat and date_format(l.EFFDATE,'D')<>1 and f.Period=EFFDateInt(l.EFFDATE) where f.ActualProjected='Lease' except(select * from TT1 t2 left semi join Fact_CMCharges f2 on t2.TID=f2.ID) ") .show() 

ここではすべてが合体部分を除いて完全に動作しています。私は考え出したが、私は今も それを解決することができませんでした合体(..)内側の文怒鳴るエラーを作成しているエラー:

pyspark.sql.utils.AnalysisException: u'Correlated scalar subqueries must be Aggregated: GlobalLimit 1\n+- LocalLimit 1\n 

任意のヘルプは高く評価されます。私はスパーク2.0を使用しています ありがとう

+0

解決策は見つかりましたか? – Gocht

+0

私が見つけたもの – Kalyan

+0

@Gotch 私がコンセプトを見つけたもの http://stackoverflow.com/questions/33933118/does-sparksql-support-subquery クエリはそれほど簡単な方法ではありません。私はいくつかの状況で私のために働いたが、ここで具体的なアイデアを取得していないいくつかの時間は 'クエリ...クエリの間にクエリを入れている – Kalyan

答えて

0

サブクエリは、(データではなく)定義によってサブクエリが1行だけを返すようにする必要があります。さもなければ、CatalystはSQL文を解析中にエラーを出します。

触媒が、データを見ずにSQL文を調べるだけで、サブクエリが単一の行しか返さない場合、この例外がスローされます。あなたは、サブクエリのみ次の集計関数のいずれかを使用することができ、単一の行が一致していることを確認しているので、触媒が幸せであれば

  • 平均
  • 最大

[ここで] [1]は、これと同様の制限事項の紹介です。

関連する問題