![](/img/trans.png)
[英]Retrieval of max date group by other column in spark-sql with scala
[英]Unpivot in spark-sql/Scala column names are numbers
我已經嘗試了內置堆棧 function 在這篇文章Unpivot in spark-sql/pyspark for Scala 中描述,並且對於使用包含字母的代碼標識的每個列都可以正常工作,但在代碼只是數字的那些列中則不行.
我有一個看起來像這樣的 dataframe df
我按照鏈接答案中的說明申請:
val result = df.select($"Id", expr("stack(3, '00C', 00C, '0R5', 0R5, '234', 234)"))
結果就是這個
我想要的是第 234 行的值應該是 0。
因為234是數字 & 在 SQL 中,如果您是 select 任何數字,它將返回與值相同的數字,您需要告訴編譯器 234 是列名而不是數字,要做到這一點,您必須在數字周圍使用反引號 (`) 即`234 ` .
檢查下面的代碼。
scala> val df = Seq(("xyz",0,1,0)).toDF("Id","00C","0R5","234")
df: org.apache.spark.sql.DataFrame = [Id: string, 00C: int ... 2 more fields]
scala> df.select($"Id", expr("stack(3, '00C', 00C, '0R5', 0R5, '234',`234`)")).show(false)
+---+----+----+
|Id |col0|col1|
+---+----+----+
|xyz|00C |0 |
|xyz|0R5 |1 |
|xyz|234 |0 |
+---+----+----+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.