一个关于把idea里的语句改为sparksql scala语句的问题

以下是idea里的代码

    val result5 = spark.sql("select " +
      "case " +
      "WHEN `建成年份` < 1950 THEN '小于1950'" +
      "WHEN `建成年份` >= 1950 AND `建成年份` < 1980 THEN '1950-1979' " +
      "WHEN `建成年份` >= 1980 AND `建成年份` < 2010 THEN '1980-2009' " +
      "WHEN `建成年份` >= 2010 THEN '2010-至今' " +
      "end " +
      "as `建成年份(区间)`, " +
      "count(*) as `总数` " +
      "from fj " +
      "GROUP BY `建成年份(区间)`")


我想把以上的代码改为能在虚拟机的spark的Scala命令行能运行的sparksql语句,应该怎么改呢?

将上面的代码改为能在虚拟机的spark的Scala命令行运行的sparksql语句可以这样:

val result5 = spark.sql("SELECT 
  CASE 
    WHEN `建成年份` < 1950 THEN '小于1950'
    WHEN `建成年份` >= 1950 AND `建成年份` < 1980 THEN '1950-1979'
    WHEN `建成年份` >= 1980 AND `建成年份` < 2010 THEN '1980-2009'
    WHEN `建成年份` >= 2010 THEN '2010-至今'
  END AS `建成年份(区间)`, 
  COUNT(*) AS `总数` 
FROM fj 
GROUP BY `建成年份(区间)`")


需要注意的是,Scala语言中的字符串需要用双引号(")引起来,而不是单引号(')。

这样就可以在Scala命令行中执行这个查询了。

个人建议,以后idea写sparksql的时候使用stripMargin,在双引号中间再加一个双引号, 效果就是""" """,就不会有字符串拼接错误。