Эквивалент Spark SQL для Split_Part()

#sql #apache-spark-sql #amazon-redshift

#sql #apache-spark-sql #амазонка-красное смещение

Вопрос:

Я пытаюсь получить эквивалент для

 split_part(split_part(to_id, '_', 1), '|', 3)   

в Spark SQL

Может ли кто-нибудь, пожалуйста, помочь

 SELECT to_id ,split(to_id,'_')[1] AS marketplace_id ,from_id ,split(split(to_id, '_')[0], '|')[2] AS asin --,split(to_id, '|')[2] AS asin FROM DDD  

Контекст:

 to_id = ASIN|CATALOG|B0896YZABL_7  expected = B0896YZABL  current output = |  

Ответ №1:

Вы должны избежать вертикального стержня | , как это \| .

Ниже приведен простой пример Scala, вы можете попробовать его в интерактивной оболочке Scala:

 val s = "ASIN|CATALOG|B0896YZABL_7" val result = s.split("\|") // Will be Array(ASIN, CATALOG, B0896YZABL_7) print(result.last) // Prints 'B0896YZABL_7'  

В вашем случае это должно быть:

 SELECT to_id ,split(to_id,'_')[1] AS marketplace_id ,from_id ,split(split(to_id, '_')[0], '\|')[2] AS asin --,split(to_id, '\|')[2] AS asin FROM DDD