【发布时间】:2022-07-28 02:57:08
【问题描述】:
我创建了一个名为 old_ticket_df 的 Spark SQL 临时视图。在临时视图old_ticket_df 我有一个似乎有空格的“批准者”列。我尝试使用trim() 删除空格,但似乎没有效果。如果我尝试使用 trim(BOTH '\t' from approver) 删除空格,它似乎会删除空格。
我从下面的compare_query 创建了一个名为compare_df 的Spark 数据框,我将两个示例合并在一起,将trim 函数的两个不同版本应用于相同的字段和值。代码的输出如下。
有人可以告诉我 Spark SQL 中的 TRIM(approver) 和 TRIM(BOTH '\t' FROM approver) 有什么区别吗?
代码:
compare_query="""
select * from (
select 'ver1' as data_source, TRIM(BOTH '\t' FROM approver) as approver
from old_ticket_df
where ticketid='xxxxx'
and ticketlineid='yyyyyyy'
and storeid='00'
and dateclosed='2020-06-06'
union
select 'ver2' as data_source, TRIM(approver) as approver
from old_ticket_df
where ticketid='xxxxx'
and ticketlineid='yyyyyyy'
and storeid='00'
and dateclosed='2020-06-06'
)
"""
compare_df=spark.sql(compare_query)
compare_df.show(truncate=False)
输出:
+-----------+------------------------+
|data_source|approver |
+-----------+------------------------+
|ver2 |user1@GMAIL.COM |
|ver1 |user1@GMAIL.COM |
+-----------+------------------------+
【问题讨论】:
-
trim(str) - Removes the leading and trailing space characters from str.trim(BOTH trimStr FROM str) - Remove the leading and trailing trimStr characters from str---- 所以默认情况下修剪会删除空格,而您可以使用两者自定义输入修剪字符串。此处的文档:spark.apache.org/docs/2.3.0/api/sql/index.html#trim
标签: dataframe apache-spark pyspark apache-spark-sql trim