我试着有条件地计算一列,这是我的代码。
spark.sql(
s"""
|SELECT
| date,
| sea,
| contract,
| project,
| COUNT(CASE WHEN type = 'ABC' THEN 1 ELSE 0 END) AS abc,
| COUNT(CASE WHEN type = 'DEF' THEN 1 ELSE 0 END) AS def,
| COUNT(CASE WHEN type = 'ABC' OR type = 'DEF' OR type = 'GHI' THEN 1 ELSE 0 END) AS all
|FROM someTable
|GROUP BY date, seat, contract, project
""".stripMargin).createOrReplaceTempView("something")
这就产生了一个奇怪的错误。 Diagnostic messages truncated, showing last 65536 chars out of 124764:
我做错什么了?谢谢你的帮助。
1条答案
按热度按时间kkih6yb81#
似乎您希望获得每个分组条件的type='',type='def'等计数。
如果是这样的话,那么count不会给你想要的结果,但是会给一个组的每个案例提供相同的结果。
看来你可以用“和”代替“数”。
求和将所有0相加,1将给出正确的计数。
不过,如果你想解决你得到的错误,请粘贴错误,如果可能的一些数据,你正在使用创建Dataframe。