#mysql #apache-spark-sql
Вопрос:
Я должен написать сложный запрос, в котором у меня есть три столбца в основном файле, который состоит из оценок в виде строки, и мне нужно применить поиск из отдельного файла и присвоить значение каждому рейтингу, а затем применить нижеприведенную логику
- Посмотрите (номера рейтингов) в описании каждого рейтинга и получите значение индекса рейтинга для Fitch, Moody, S_P
- Если доступны все рейтинговые индексы, возьмите медиану значения
- Если доступно какое-либо значение индекса рейтинга 2, выберите более низкий рейтинг (чем выше индекс, тем ниже значение рейтинга).
- Если доступно только значение индекса рейтинга, по умолчанию используется то же самое
- Если оценки недоступны, отметьте как «»N/R»»
- С помощью значения индекса рейтинга посмотрите на числовой файл рейтинга и сопоставьте описание рейтинга»
Мне удалось создать таблицу, в которой я могу получить оценки, но не могу рассчитать медиану значения. требуется помощь в этом.
запрос, который я написал, это :
spark.sql("with Fitch AS (select s1.SecurityID, s1.FitchDescription, s2.RtgMapIndx FitchRating from SMFSTAT s1 join RATINGNUM s2 on s1.FitchDescription=s2.RtgMapClean),Moody AS (select s1.SecurityID, s1.MoodyDescription, s2.RtgMapIndx MoodyRating from SMFSTAT s1 join RATINGNUM s2 on s1.MoodyDescription=s2.RtgMapClean),S_P AS (select s1.SecurityID, s1.S_PDescription, s2.RtgMapIndx S_PRating from SMFSTAT s1 join RATINGNUM s2 on s1.S_PDescription=s2.RtgMapClean),lookup AS (select Fitch.SecurityID, FitchDescription, FitchRating, MoodyDescription, MoodyRating, S_PDescription, S_PRating from Fitch left join Moody on Fitch.SecurityID = Moody.SecurityID left join S_P on S_P.SecurityID = Fitch.SecurityID) select lookup.*,case when FitchRating is not null and MoodyRating is not null and S_PRating is not null then 'MedianValue' when MoodyRating is null and S_PRating is not null and FitchRating is not null then LEAST(FitchRating,S_PRating) when MoodyRating is not null and S_PRating is not null and FitchRating is null then LEAST(MoodyRating,S_PRating) when MoodyRating is not null and S_PRating is null and FitchRating is not null then LEAST(FitchRating,MoodyRating) when FitchRating is NULL and MoodyRating is NULL and S_PRating is NULL then 'N/R' When FitchRating is NULL and MoodyRating is NULL and S_PRating is not Null then S_PRating When FitchRating is Null and MoodyRating is not null and S_PRating is null then MoodyRating else FitchRating end as Rating from lookup")
нужна помощь в расчете медианы.
---------- ---------------- ----------- ---------------- ----------- -------------- --------- -----------
|SecurityID|FitchDescription|FitchRating|MoodyDescription|MoodyRating|S_PDescription|S_PRating| Rating|
---------- ---------------- ----------- ---------------- ----------- -------------- --------- -----------
| 114259AP9| A-| 7| Baa1| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|
| 114259AP9| A-| 7| Baa1| 8| BBB | 8|MedianValue|