sparksql中的条件计数

toiithl6  于 2021-05-17  发布在  Spark
关注(0)|答案(1)|浏览(1101)

我试着有条件地计算一列,这是我的代码。

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: 我做错什么了?谢谢你的帮助。

kkih6yb8

kkih6yb81#

似乎您希望获得每个分组条件的type='',type='def'等计数。
如果是这样的话,那么count不会给你想要的结果,但是会给一个组的每个案例提供相同的结果。
看来你可以用“和”代替“数”。
求和将所有0相加,1将给出正确的计数。
不过,如果你想解决你得到的错误,请粘贴错误,如果可能的一些数据,你正在使用创建Dataframe。

相关问题