将 SQL 代码转换为 PySpark 的问题;我在哪里用 groupby 和 count 创建一个新的 DF

Posted

技术标签:

【中文标题】将 SQL 代码转换为 PySpark 的问题;我在哪里用 groupby 和 count 创建一个新的 DF【英文标题】:Issue converting SQL code to PySpark; Where I am creating a new DF with a groupby and count 【发布时间】:2020-07-27 23:20:05 【问题描述】:

我有下面的 sql 代码,我正在尝试将其转换为 PySpark(下面的代码),任何将 sql 逻辑转换为 PySpark 的最佳方式的输入将不胜感激;

SQL 代码: %sql

drop table if exists jrny_map_web_sum;
create table jrny_map_web_sum as select mid_key, completedt, interaction_dt, interaction_type, count(distinct(visit_identifier)) as visits, count(*) as pvs
from web_drvsjoin1
group by mid_key, completedt, interaction_dt, interaction_type;

样品 O/P:

PySpark 代码:

jrny_map_web_sum1 = web_drvsjoin1.select("mid_key","completedt", "interaction_dt", "interaction_type", "visit_identifier").groupBy("mid_key", "completedt", "interaction_dt", "interaction_type").agg(countDistinct("visit_identifier").alias("Visits"))

【问题讨论】:

【参考方案1】:

试试下面的代码:

from pyspark.sql.functions import *

jrny_map_web_sum1 = web_drvsjoin1.\
select("mid_key","completedt", "interaction_dt", "interaction_type", "visit_identifier").\
groupBy("mid_key", "completedt", "interaction_dt", "interaction_type").\
agg(countDistinct(col("visit_identifier")).alias("visits"),count("*").alias("pvs"))

#saving dataframe as table
jrny_map_web_sum1.saveAsTable("<db>.jrny_map_web_sum")

【讨论】:

以上是关于将 SQL 代码转换为 PySpark 的问题;我在哪里用 groupby 和 count 创建一个新的 DF的主要内容,如果未能解决你的问题,请参考以下文章

PYSPARK:如何将带有多个 case 语句的 SQL 查询转换为 Pyspark/Pyspark-SQL?

将 SQL 连接查询转换为 pyspark 语法

如何将类型 <class 'pyspark.sql.types.Row'> 转换为 Vector

Pyspark:将 pyspark.sql.row 转换为 Dataframe

通过 pyspark.sql.dataframe 将 XML 数据转换为 pandas 数据帧

在 pyspark SQL 中将字符串日期转换为日期格式