У меня есть данные, как пример данных ниже.Я пытаюсь создать новый столбец в моих данных, используя PySpark, который будет категорией первого события для клиента на основе метки времени.Как пример выходных данных ниже.
У меня есть пример ниже того, что я думаю, чтобы сделать это, используя оконную функцию в SQL.
Я довольно новичок в PySpark.Я понимаю, что вы можете запустить SQL внутри PySpark.Мне интересно, если у меня есть правильный код ниже для запуска функции окна sql в PySpark.То есть мне интересно, могу ли я просто вставить sql-код внутри spark.sql, как я сделал ниже.
Ввод:
eventid customerid category timestamp
1 3 a 1/1/12
2 3 b 2/3/14
4 2 c 4/1/12
Ввод:
eventid customerid category timestamp first_event
1 3 a 1/1/12 a
2 3 b 2/3/14 a
4 2 c 4/1/12 c
Пример оконной функции:
select eventid, customerid, category, timestamp
FIRST_VALUE(catgegory) over(partition by customerid order by timestamp) first_event
from table
# implementing window function example with pyspark
PySpark:
# Note: assume df is dataframe with structure of table above
# (df is table)
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName(“Operations”).getOrCreate()
# Register the DataFrame as a SQL temporary view
df.createOrReplaceView(“Table”)
sql_results = spark.sql(“select eventid, customerid, category, timestamp
FIRST_VALUE(catgegory) over(partition by customerid order by timestamp) first_event
from table”)
# display results
sql_results.show()