python - 如何从表格中计算 pyspark 中的每周平均值?
问题描述
我的表如下:
+--------+-----+----+----------+
| grDate|Items|rate| unitName|
+--------+-----+----+----------+
|20131222| SOY|34.7|Samastipur|
|20131223| SOY|34.7|Samastipur|
|20131224| SOY|34.7|Samastipur|
|20131225| SOY|34.0|Samastipur|
|20131225| SOY|34.7|Samastipur|
|20131227| SOY|34.7|Samastipur|
|20131228| SOY|34.7|Samastipur|
|20131229| SOY|34.7|Samastipur|
|20131230| SOY|34.6|Samastipur|
|20131230| SOY|34.7|Samastipur|
|20131231| SOY|34.7|Samastipur|
|20140101| SOY|34.6|Samastipur|
|20140102| SOY|34.6|Samastipur|
|20140103| SOY|34.6|Samastipur|
|20140106| SOY|34.6|Samastipur|
|20140107| SOY|34.6|Samastipur|
|20140110| SOY|33.9|Samastipur|
|20140111| SOY|33.9|Samastipur|
|20140112| SOY|33.9|Samastipur|
|20140113| SOY|33.9|Samastipur|
+--------+-----+----+----------+
only showing top 20 rows
我想要的是按周计算速率列的平均值并创建一个具有这些值的新表。
我正在尝试执行此查询
spjsoya.createOrReplaceTempView("spjsoya")
spark.sql("SELECT grDate , (sum(total)/(WEEK(MAX(rate)) - WEEK(MIN(rate))+1)) AS rate FROM spjsoya WHERE YEAR(grDate)='2013' GROUP BY grDate").show()
但它给了我错误
pyspark.sql.utils.AnalysisException: u"Undefined function: 'WEEK'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.; line 1 pos 29"
我怎样才能编写正确的查询以平均每周?
解决方案
以下是您的问题的代码:
import pyspark.sql.functions as F
spjsoya.withColumn(
'date_str',
F.from_unixtime(
F.unix_timestamp('a', 'yyyyMMdd')
)
).withColumn(
"week_num",
F.weekofyear(F.col("date_str"))
).withColumn(
"month",
F.month(F.col("date_str"))
).withColumn(
"year",
F.year(F.col("date_str"))
).groupby(
"year",
"week_num"
).agg(
F.avg("rate").alias("average_rate")
).orderBy(
"week_num"
).show()
推荐阅读
- reporting-services - 将 SSRS Tablix 过滤成 2 列,为菜单页面链接动态更新
- java - 如何在相对布局或任何布局中动态添加视图
- cmake - 如何在构建文件夹之外运行 CTest?
- c# - FOREIGN KEY 约束可能导致循环或多个级联路径。ef core 3(根本无法创建数据库)
- lua - 为什么我无法从本地脚本向服务器脚本发送已配备工具的信息?
- sql - 非单组函数查询错误
- java - 如何在运行时实例化接口?
- r - 删除数据框中的重复行
- google-bigquery - Google Cloud Big Query Scheduled Queries 与 JURISDICTION 相关的奇怪错误
- msbuild - DBContext在不同程序集中时如何创建迁移