Я использую Java язык. У меня ниже запрос в моем коде:
public static String GET_E_BCHGS = "SELECT BCL.* "
+"FROM (SELECT * "
+"FROM (SELECT (SELECT BILLABLE_CHG_ID "
+"FROM BC "
+"WHERE BC.BILLABLE_CHG_STAT = 10 "
+"AND BC.FEED_SOURCE_FLG = 'TFM' "
+" AND BC.SA_ID = S.SA_ID AND (EXISTS (SELECT 1 "
+"FROM BCC "
+"WHERE BCC.BILLABLE_CHG_ID = BC.BILLABLE_CHG_ID "
+"AND BCC.CHAR_TYPE_CD = 'AGG_CRTA' "
+"AND BCC.ADHOC_CHAR_VAL = S.SID) "
+"OR "
+"(BC.PRICEITEM_CD = S.FIN_PRICEITEM_CD "
+"AND BC.TOU_CD =S.TOU_CD "
+"AND BC.START_DT =S.BCHG_START_DT "
+"AND BC.END_DT =S.BCHG_END_DT "
+"AND BC.PRICE_ASGN_ID= S.PRICE_ASGN_ID "
+"AND BC.PRICEITEM_PARM_GRP_ID = S.PRICEITEM_PARM_GRP_ID "
+"AND BC.AGG_PARM_GRP_ID = S.AGG_PARM_GRP_ID) "
+") AND NOT EXISTS (SELECT 1 "
+"FROM C, BS "
+"WHERE BS.bseg_id = C.bseg_id "
+"AND C.billable_chg_id = BC.BILLABLE_CHG_ID "
+"AND BS.bseg_stat_flg not in (10,60))) "
+"AS BILLABLE_CHG_ID "
+"FROM S "
+"WHERE SID >= '2100000000063000004222017020100018243020717805750011' "
+"AND SID <= null "
+"AND "
+"STATUS = ' ' "
+"AND TXN_RATING_CRITERIA ='RITA') "
+"WHERE BILLABLE_CHG_ID <> ' ' "
+"GROUP BY BILLABLE_CHG_ID) F, BCL "
+"WHERE F.BILLABLE_CHG_ID = BCL.BILLABLE_CHG_ID "
+"ORDER BY BCL.BILLABLE_CHG_ID, LINE_SEQ";
Я пытаюсь использовать то же самое в Spark SQL, ниже приведен код для того же:
Dataset<Row> bc = sparkSession.read().format("jdbc").option("url",connection ).option("dbtable", "B_CHG").load();
bc.createOrReplaceTempView("BC");
Dataset<Row> bcc = sparkSession.read().format("jdbc").option("url",connection ).option("dbtable", "B_CHG_CHAR").load();
bcc.createOrReplaceTempView("BCC");
Dataset<Row> c = sparkSession.read().format("jdbc").option("url",connection ).option("dbtable", "B_CALC").load();
c.createOrReplaceTempView("C");
Dataset<Row> bs = sparkSession.read().format("jdbc").option("url",connection ).option("dbtable", "BSEG").load();
bs.createOrReplaceTempView("BS");
Dataset<Row> s = sparkSession.read().format("jdbc").option("url",connection ).option("dbtable", "TXN_DTL_P_SUMMARY").load();
s.createOrReplaceTempView("S");
Dataset<Row> bcl = sparkSession.read().format("jdbc").option("url",connection ).option("dbtable", "B_CHG_L").load();
bcl.createOrReplaceTempView("BCL");
Dataset<Row> existingBchgsDS = sparkSession.sql(SQQueries.GET_E_BCHGS);
existingBchgsDS.show();
во время выполнения этого кода я получаю указанную ниже ошибку:
Exception in thread "main" org.apache.spark.sql.AnalysisException: cannot resolve '`S.SID`' given input columns: [bcc.CHAR_VAL_FK4, bcc.CHAR_VAL_FK2, bcc.CHAR_VAL_FK5, bcc.BILLABLE_CHG_ID, bcc.ADHOC_CHAR_VAL, bcc.CHAR_VAL_FK3, bcc.CHAR_TYPE_CD, bcc.SRCH_CHAR_VAL, bcc.CHAR_VAL_FK1, bcc.CHAR_VAL, bcc.VERSION, bcc.EFFDT]; line 1 pos 297;
'Sort ['BCL.BILLABLE_CHG_ID ASC NULLS FIRST, 'LINE_SEQ ASC NULLS FIRST], true.........
//more lines of error
Я хочу понять:
- что не так с этим запросом?Тот же запрос выполняется корректно на сервере SQL.
Поддерживаются ли такие запросы Spark SQL?
или
. Есть ли другой способпиши же?
Spark Версия: 2.3.0