Split_Part() 的 Spark SQL 等效项
Posted
技术标签:
【中文标题】Split_Part() 的 Spark SQL 等效项【英文标题】:Spark SQL equivalent for Split_Part() 【发布时间】:2021-12-07 16:31:45 【问题描述】:我正在尝试获得等价物
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 shell 中尝试:
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
【讨论】:
以上是关于Split_Part() 的 Spark SQL 等效项的主要内容,如果未能解决你的问题,请参考以下文章