python-3.x - 将 SQL 代码转换为 PySpark 的问题;我在哪里用 groupby 和 count 创建一个新的 DF
问题描述
我有下面的 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;
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"))
解决方案
试试下面的代码:
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")
推荐阅读
- python - 最长公共序列而不是单词
- c# - 选定的索引更改为 ListBox 失败
- bash - Powershell - 将文件“PUT”到需要参数的 URL
- android - 当我尝试在手机中运行我的 android 项目时出现以下错误;我已经切换“开启”开发者模式和 USB 调试
- python - 从python中的html标签打印数字
- laravel - CORS 请求未成功
- java - macOS 上 Java 上的 OutOfMemoryError
- elasticsearch - 在 Mirage 上连接 localhost 弹性搜索集群
- excel - 数据透视表对不同年份的月份进行排序
- c# - MultipartFormData 文件上传内存不足异常