サンディープサマル:
val result = df.select($"seq_id", posexplode(array($"prod_id", $"prod_name")))
上記の例でposexplodeサイドアレイ内の列名の任意の配列をとりません()。列名をハードコーディングすることは必須です。ハードコードを削除して、動的に任意の数の列を追加する方法はありますか?
アレクサンドロスBiratsis:
あなたは、関数から見ることができるように宣言 array(cols: Column*): Column
私たちは、配列関数のパラメータとして、一つ以上のCOLを渡すことができます。これは、任意の文字列のリストから列のアレイを生成することによって、動的に行うことができます。
import org.apache.spark.sql.functions.{posexplode, col, array}
val cols = Seq("prod_id", "prod_name").map{col(_)}
val customArray = array(cols:_*)
df.select(customArray).show
これは、同封されますprod_id, prod_name
配列に、それは使用していますarray
あなたが以前と同様の機能を。