以下是一个示例代码,假设表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中的列名和数据类型。

用pyspark计算postgresql的表A的B维度的C平均值,并按C平均值从大到小排序,在计算平均值之前把参数D不为null的数据先排除,最后把C平均值大于50的结果排除掉

原文地址: https://www.cveoy.top/t/topic/nda 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录