0
ここに私の質問を示す例があります。Spark SQL:PARTITION BYウィンドウ関数のCURRENT ROWを除外
この例では、各ユーザーが購入した他の製品の一覧を収集し、それを新しい列としてトランザクションテーブルに追加します。また、任意の列の「good_bad」をフィルタリングしています。
Spark SQLがPARTITION BYウィンドウ関数のCURRENT ROWを含まないことをサポートしているかどうかを知りたいと思います。
たとえば、トランザクション1は、other_purchases = [prod1, prod2, prod3]
ではなく、other_purchases = [prod2, prod3]
になります。
df = spark.createDataFrame([
(1, "user1", "prod1", "good"),
(2, "user1", "prod2", "good"),
(3, "user1", "prod3", "good"),
(4, "user2", "prod3", "bad"),
(5, "user2", "prod4", "good"),
(5, "user2", "prod5", "good")],
("trans_id", "user_id", "prod_id", "good_bad")
)
df.show()
df = df.selectExpr(
"trans_id",
"user_id",
"COLLECT_LIST(CASE WHEN good_bad == 'good' THEN prod_id END) OVER(PARTITION BY user_id) AS other_purchases"
)
df.show()