我創建了一個名為old_ticket_df. 在臨時視圖old_ticket_df中,我有一列“批準者”,它似乎有空格。我曾嘗試使用 洗掉空格trim(),但似乎沒有效果。如果我嘗試使用它來洗掉空格,trim(BOTH '\t' from approver)它似乎會洗掉空格。
compare_df我創建了一個從下面呼叫的 Spark 資料框compare_query,其中我將兩個示例聯合在一起,將trim函式的兩個不同版本應用于相同的欄位和值。代碼的輸出如下。
TRIM(approver)有人可以告訴我 Spark SQL和TRIM(BOTH '\t' FROM approver)Spark SQL之間有什么區別嗎?
代碼:
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 |[email protected] |
|ver1 |[email protected] |
----------- ------------------------
uj5u.com熱心網友回復:
trim(str)僅洗掉空格字符。
trim(BOTH trimStr FROM str)洗掉您在 中指定的字符trimStr。
Spark 的trim檔案
例子:
df = spark.createDataFrame([(' SPACES ', ), ('\tTABS\t', )], ['str'])
df.createOrReplaceTempView("sql_df")
spark.sql("""
SELECT str,
TRIM(str) as trim,
TRIM(BOTH '\t' FROM str) as trim_both_tab,
TRIM(BOTH ' \t' FROM str) as trim_both_tab_space
FROM sql_df
""").show()
# -------- -------- ------------- -------------------
#| str| trim|trim_both_tab|trim_both_tab_space|
# -------- -------- ------------- -------------------
#| SPACES | SPACES| SPACES | SPACES|
#|\tTABS\t|\tTABS\t| TABS| TABS|
# -------- -------- ------------- -------------------
- 列
str是原始值“空格”(具有周圍的空格字符)和值“\tTABS\t”(具有周圍的制表符)。 - 列
trim顯示 的結果trim(str)。空格字符被修剪,但制表符仍然存在。 - 列
trim_both_tab顯示 的結果TRIM(BOTH '\t' FROM str)。制表符被修剪,但空格字符仍然存在。 - 列
trim_both_tab_space顯示 的結果TRIM(BOTH ' \t' FROM str)。空格和制表符都被洗掉了,因為它們都被提供了。
在您的情況下,TRIM(approver)僅洗掉了空格,因此ver2您仍然有剩余的制表符。雖然TRIM(BOTH '\t' FROM approver)只洗掉了標簽,但不影響空格。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/455000.html
標籤:阿帕奇火花 pyspark apache-spark-sql 修剪
上一篇:對嵌套在陣列中的結構元素進行排序
