用pyspark计算postgresql的表A的B维度的C平均值,并按C平均值从大到小排序,在计算平均值之前把参数D不为null的数据先排除,最后把C平均值大于50的结果排除掉
以下是一个示例代码,假设表A中B列是一个整数列,C列是一个浮点数列,D列是一个字符串列。
from pyspark.sql.functions import avg, col
from pyspark.sql.types import FloatType
# 读取PostgreSQL中的表A
df = spark.read.format("jdbc").options(
url="jdbc:postgresql://localhost:5432/mydatabase",
dbtable="A",
user="myuser",
password="mypassword"
).load()
# 排除D列不为null的行
df = df.filter(col("D").isNotNull())
# 按B列分组,计算C列的平均值
df_avg = df.groupBy("B").agg(avg("C").alias("avg_C"))
# 将结果按平均值从大到小排序
df_avg = df_avg.sort(col("avg_C").desc())
# 排除平均值大于50的行
df_avg = df_avg.filter(col("avg_C") <= 50)
# 将结果转换为Pandas DataFrame并打印
df_avg.toPandas()
请注意,这只是一个示例代码,你需要根据你的实际情况进行修改。你需要修改JDBC连接字符串中的数据库名称、用户名和密码。你还需要根据实际情况调整表A中的列名和数据类型。
原文地址: https://www.cveoy.top/t/topic/nda 著作权归作者所有。请勿转载和采集!