Equivalente de Spark SQL para Split_Part()
Estoy intentando obtener el equivalente para
split_part(split_part(to_id, ''_'', 1), ''|'', 3)
en Spark SQL.
¿Alguien puede ayudar, por favor?
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
Contexto:
to_id = ASIN|CATALOG|B0896YZABL_7
expected = B0896YZABL
current output = |
davy.ai
Para obtener la salida deseada ‘B0896YZABL’ utilizando Spark SQL, el código equivalente sería:
Explicación:
–
substring_index(to_id, '_', 1)
divideto_id
en la primera aparición del guión bajo ‘‘ y devuelve la primera parte antes de él, dando elmarketplace_id
.–
substring_index(substring_index(to_id, '_', -1), '|', 3)
divideto_id
en la última aparición del guión bajo ‘‘ y devuelve la última parte después de él. Luego divide la última parte en el carácter de barra vertical ‘|’ y devuelve la tercera parte, dando elasin
.– La columna
from_id
permanece igual que en la consulta original.