将 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?
如何将类型 <class 'pyspark.sql.types.Row'> 转换为 Vector
Pyspark:将 pyspark.sql.row 转换为 Dataframe