pySpark.sql 如何使用 WHERE 关键字?

Posted

技术标签:

【中文标题】pySpark.sql 如何使用 WHERE 关键字?【英文标题】:pySpark.sql how to use WHERE keyword? 【发布时间】:2019-02-07 19:04:17 【问题描述】:

您如何使用WHERE 关键字来获取在泰坦尼克号灾难中幸存者的性别数量及其百分比?

我的代码:

spark.sql(
    "SELECT Sex Where Survived=1 ,count(Sex) \
    as gender_count,count(sex)*100/sum(count(sex)) over() \
    as percent from titanic_table GROUP BY sex"
).show()

错误:

ParseException: "
mismatched input ',' expecting <EOF>(line 1, pos 28)
== SQL ==
SELECT Sex Where Survived=1 ,count(Sex) 
as gender_count,count(sex)*100/sum(count(sex)) over() 
as percent from titanic_table GROUP BY sex
----------------------------^^^
"

【问题讨论】:

您的语法不正确。你不能像这样在SELECT 表达式中使用WHERE。它必须在FROM 之后。在这种情况下,您似乎还需要使用GROUP BY 我可以知道语法是什么样的吗? 一般形式为SELECT &lt;columns&gt;, &lt;aggregations&gt; FROM table WHERE &lt;conditions&gt; GROUP BY &lt;columns&gt;。如需更具体的解释,请edit 在您的问题中包含一个小的、独立的reproducible example 以及所需的输出。 【参考方案1】:

你应该把它放在FROM 之后和GROUP BY 之前。

你的代码应该是:

spark.sql("SELECT Sex, count(Sex) AS gender_count, \
100*count(sex)/sum(count(sex)) over() AS percent \
FROM titanic_table \
WHERE Survived = 1 \
GROUP BY sex").show()

【讨论】:

以上是关于pySpark.sql 如何使用 WHERE 关键字?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 pyspark.sql.function 中提取值?

如何使用 matplotlib 使用 shell 绘制 pyspark sql 结果

如何在字典中使用 pyspark.sql.functions.when() 的多个条件?

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

如何在 pyspark.sql.functions.when() 中使用多个条件?

如何在pyspark sql中保存表?