Я хочу сравнивать Prev.data с текущими данными по месяцам.У меня есть данные, как показано ниже.
Data-set 1 : (Prev) Data-set 2 : (Latest)
Year-month Sum-count Year-Month Sum-count
-- -- 201808 48
201807 30 201807 22
201806 20 201806 20
201805 35 201805 20
201804 12 201804 9
201803 15 -- --
У меня есть наборы данных, как показано выше.Я хочу сравнить оба набора данных на основе столбца год-месяц и подсчета суммы, и мне необходимо выяснить разницу в процентах.
Я использую spark 2.3.0 и Scala 2.11.
Вот режим:
import org.apache.spark.sql.functions.lag
val mdf = spark.read.format("csv").
option("InferSchema","true").
option("header","true").
option("delimiter",",").
option("charset","utf-8").
load("c:\\test.csv")
mdf.createOrReplaceTempView("test")
val res= spark.sql("select year-month,SUM(Sum-count) as SUM_AMT from test d group by year-month")
val win = org.apache.spark.sql.expressions.Window.orderBy("data_ym")
val res1 = res.withColumn("Prev_month", lag("SUM_AMT", 1,0).over(win)).withColumn("percentage",col("Prev_month") / sum("SUM_AMT").over()).show()
Мне нужен вывод, подобный этому:
если процентбольше 10%, тогда мне нужно установить флаг как F.
set1 cnt set2 cnt output(Percentage) Flag
201807 30 201807 22 7% T
201806 20 201806 20 0% T
201805 35 201805 20 57% F
Пожалуйста, помогите мне в этом.