请帮助初学者。 通常db用于下单,全部在一张表中。你知道吗
使用Python分析apachespark中的数据。希望编写一个查询,该查询将提取按电子邮件排序的客户的所有交易,这些客户订购了现在已停产的产品,并且有尚未发货的订单。基本上,对于“&item\u in\u list(F.lit(“NotShipped”),ShippedStatus)”它不起作用。你知道吗
%python
import pyspark.sql.functions as F
from pyspark.sql.types import *
list_len = F.udf(lambda x: len(x), IntegerType())
item_in_list = F.udf(lambda x, y: x in y, BooleanType())
df = spark.sql("select * from orderdb")
df1 = df.select("email", "OrderedProduct","ShippedStatus").groupBy("email")
df1 = df1.agg(F.collect_set("OrderedProduct"))\
.withColumnRenamed("collect_set(OrderedProduct)", "OrderedProduct")
df1 = df1.filter((list_len(df1.OrderedProduct) > 1) &
item_in_list(F.lit("DiscontinuedProduct"), OrderedProduct)
&item_in_list(F.lit("NotShipped"), ShippedStatus)
df1 = df1.select("email")
df = df1.join(df, "email", "left_outer")
display(df)
ID字符串为空 日期时间戳为空 OrderedProduct字符串为空 ShippedStatus布尔值为空
首先,udf在pyspark中的表现非常糟糕。如果要更改类型,请使用以下命令:
也就是说,我们需要一个可复制的例子,但是我想你可以用
'where'
子句来解决这个问题。你知道吗相关问题 更多 >
编程相关推荐