Использование Spark2.3.0 и Scala
Имея таблицу, подобную приведенной ниже:
created_date mth ColA
2019-01-01 2019-01 a
2019-01-01 2019-01 b
2019-01-02 2019-01 a
2019-01-02 2019-01 b
.
.
2019-06-26 2019-01 a
И схема выглядит следующим образом:
root
|-- transaction_created_date: string (nullable = true)
|-- txn_mth: string (nullable = true)
|-- ColA: string (nullable = true)
хотите сравнить столбец создал_датус max_date и создайте новый столбец
Попробовал как показано ниже:
var max_date = sparkVal.sql(s"""SELECT cast(max(created_date)
as DATE) from BASE_TABLE""").first()
val maxDateValue = max_date.get(0)
var day_counter=10
val data =spark.sql(s"""SELECT
created_date,
mth,
sum(if(date_add(created_date+$day_counter) > cast($maxDateValue as DATE) ),1,0))
as Total_arrival from BASE_TALE a""")
lets say max_date = 2019-06-29
хочу вывод как
created_date mth Total_arrival
2019-01-01 2019-01 1
2019-01-01 2019-01 1
2019-01-01 2019-01 1
2019-01-02 2019-01 1
.
.
2019-06-26 2019-01 0
2019-06-27 2019-01 0
2019-06-28 2019-01 0
2019-06-29 2019-01 0
2019-06-30 2019-01 0
getting below error :
org.apache.spark.sql.AnalysisException: невозможно разрешить 'CAST ((((2019 - 6) - 26) AS DATE)' из-за несоответствия типов данных: невозможно привести int к дате;строка 43 поз 106;
Может кто-нибудь помочь с приведением максимального значения, чтобы его можно было сравнить со столбцом даты?