sql - 如何将 SQL 过滤器转换为 Pyspark
问题描述
我有以下 SQL:
freecourse_info_step_8 as (
-- How many questions answered correct in that
select *,
count(question_number) FILTER (WHERE answered = true) over(partition by hacker_rank_id, freecourse_version, question_block, freecourse_users_id) as answered_correct_in_block
from freecourse_info_step_7
),
我转换为 Pyspark
column_list = ["hacker_rank_id", "freecourse_version", "question_block", "freecourse_users_id"]
window = Window.partitionBy([f.col(x) for x in column_list])
freecourse_info_step_8 = freecourse_info_step_7.withColumn('answered_correct_in_block',
f.when(f.col('answered') == True, f.count('question_number').over(window)))
我怀疑代码与 SQL 的行为不同。我对吗?如何正确将此 SQL 转换为 PySpark?
Pyspark spark.sql() 方法不适用于 FILTER
解决方案
freecourse_info_step_8 = freecourse_info_step_7.withColumn('answered_correct_in_block',
f.count(f.when(f.col('answered') == True, 'question_number')).over(window))
计数功能应该在条件之外
推荐阅读
- java - 使用 Android Studio 获取每日使用情况统计信息
- javascript - 在javascript中的嵌套foreach中访问子元素中的父索引
- flot - Oracle APEX 5.0:折线图上的标签
- function - &rest in common lisp
- hive - Hive:如何消除重复的子字符串
- visual-studio-code - 在 VsCode 中使用 Windows 文件对话框打开文件/文件夹
- xhtml - 修复了 DOCTYPE XHTML 上 TR/table 的显示
- twilio-studio - 想要在 Twilio Studio 中链接 Web 请求并通过它们向下传递数据
- c++ - 错误:命名空间“boost”中没有名为“extents”的类型
- android - 有没有办法为 android studio 项目设置一个永久的 SHA-1 密钥?