メインコンテンツまでスキップ

シャッフル

指定された配列のランダムな順列を生成します。シャッフル関数は非決定論的であるため、出力配列の順序は実行ごとに異なる場合があります。

構文

Python
from pyspark.sql import functions as sf

sf.shuffle(col, seed=None)

パラメーター

パラメーター

Type

説明

col

pyspark.sql.Column または文字列

シャッフルする列または式の名前。

seed

pyspark.sql.Column または int(オプション)

乱数ジェネレータのシード値。

戻り値

pyspark.sql.Column: ランダムな順序で要素の配列を含む新しい列。

例1 : 単純な配列のシャッフル

Python
import pyspark.sql.functions as sf
df = spark.sql("SELECT ARRAY(1, 20, 3, 5) AS data")
df.select("*", sf.shuffle(df.data, sf.lit(123))).show()
Output
+-------------+-------------+
| data|shuffle(data)|
+-------------+-------------+
|[1, 20, 3, 5]|[5, 1, 20, 3]|
+-------------+-------------+

例2 : null値を含む配列のシャッフル

Python
import pyspark.sql.functions as sf
df = spark.sql("SELECT ARRAY(1, 20, NULL, 5) AS data")
df.select("*", sf.shuffle(sf.col("data"), 234)).show()
Output
+----------------+----------------+
| data| shuffle(data)|
+----------------+----------------+
|[1, 20, NULL, 5]|[NULL, 5, 20, 1]|
+----------------+----------------+

例3 : 重複した値を持つ配列をシャッフルする

Python
import pyspark.sql.functions as sf
df = spark.sql("SELECT ARRAY(1, 2, 2, 3, 3, 3) AS data")
df.select("*", sf.shuffle("data", 345)).show()
Output
+------------------+------------------+
| data| shuffle(data)|
+------------------+------------------+
|[1, 2, 2, 3, 3, 3]|[2, 3, 3, 1, 2, 3]|
+------------------+------------------+