2017-10-10 12 views
0

私はsparkで次のスキーマを持っており、それを平坦化したいと考えています。それを行う方法についてのsparkでネストされた構造体を平坦化する方法

IF type == A THEN add new column with after_values.id 
IF type == B THEN add new column with before_values.id 
IF type == C THEN add new column with values.id 

任意の提案:

root 
|-- binlog_read_timestamp: string (nullable = true) 
|-- row: struct (nullable = true) 
| |-- after_values: struct (nullable = true) 
| | |-- id: long (nullable = true) 
| |-- before_values: struct (nullable = true) 
| | |-- id: long (nullable = true) 
| |-- values: struct (nullable = true) 
| | |-- id: long (nullable = true) 
|-- schema: string (nullable = true) 
|-- table: string (nullable = true) 
|-- type: string (nullable = true) 

は、だから私は、次のことをしたい、typeの値に依存しますか?ありがとう!

+0

を試してみてください。 – Chengzhi

答えて

2

はダウン投票のための任意のコメントは感謝されるだろう

from pyspark.sql.functions import * 

df.withColumn("new_column", 
    when(col("type") == "A", col("after_values.id")) \ 
    .when(col("type") == "B", col("before_values.id")) \ 
    .when(col("type") == "C", col("values.id"))) 
関連する問題