Мы можем split
номер заказа на .
, затем получить last element of array
(или), которую мы можем использовать regexp_extract
, чтобы получить только порядковый номер из последнего .
.
Example:
from pyspark.sql.functions import *
df1=sc.parallelize([('1234.345.344343434',)]).toDF(["o"])
df1.withColumn("arr", split(col("o"),'\.')).selectExpr("arr[size(arr)-1] as order_number").show(10,False)
#starting from spark2.4+ we can use element_at function
df1.withColumn("arr", element_at(split(col("o"),'\.'),-1)).show(10,False)
#using regexp_extract function
df1.withColumn("order_number",regexp_extract(col('o'),'(?=[^.]+$)(.*)',1)).show()
#+------------+
#|order_number|
#+------------+
#|344343434 |
#+------------+