apache spark sql中的等效percentile_cont函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apache spark sql中的等效percentile_cont函数相关的知识,希望对你有一定的参考价值。

我是新兴的环境。我有列名的数据集如下:


user_id,Date_time,order_quantity

我想计算每个user_id的order_quantity的第90个百分位数。

如果它是sql,我会使用以下查询:

%sql 
SELECT user_id, PERCENTILE_CONT ( 0.9 ) WITHIN GROUP (ORDER BY order_quantity) OVER (PARTITION BY user_id)

但是,spark没有内置支持使用percentile_cont函数。

关于我如何在上述数据集中实现这一点的任何建议?如果需要更多信息,请告诉我。

答案

我有PERCENTILE_DISC(0.9)的解决方案,它将返回最接近百分位数0.9的离散order_quantity(无插值)。想法是计算PERCENT_RANK,减去0.9并计算绝对值,然后取最小值: %sql WITH temp1 AS ( SELECT user_id, ABS(PERCENTILE_RANK () OVER (PARTITION BY user_id ORDER BY order_quantity) -0.9) AS perc_90_temp SELECT user_id, FIRST_VALUE(order_quantity) OVER (PARTITION BY user_id ORDER BY perc_90_temp) AS perc_disc_90 FROM temp1;

以上是关于apache spark sql中的等效percentile_cont函数的主要内容,如果未能解决你的问题,请参考以下文章

如何从 spark sql databricks 中的临时视图或等效视图中删除?

为啥 org.apache.spark.sql.types.DecimalType 在 Spark SQL 中的最大精度值为 38?

如何解决 Spark 中的“aggregateByKey 不是 org.apache.spark.sql.Dataset 的成员”?

如何使用 Apache Spark Dataframes (Python) 执行 Switch 语句

Split_Part() 的 Spark SQL 等效项

Spark改进|Apache Spark 3.0中的SQL性能改进概览