Перевести SQL-запрос в искровое преобразование - PullRequest
0 голосов
/ 18 мая 2018

Я хочу преобразовать свои данные в свою программу Spark-JAVA: это мой SQL-запрос:

 SELECT ID AS Identifier, IFNULL(INTITULE,'') AS NAME_INTITULE, 
IFNULL(ID_CAT,'') AS CODE_CATEGORIE
FROM db_1.evenement
 where DATE_HIST > (select IFNULL(max(date_record),'0000-00-00 00:00:00') 
                   from db_2.record_status where db_destination_name='AB' );

Как заставить его работать с двумя наборами данных:

Набор данныхds_evenement: содержит вечер записей

набор данных ds_record_status: содержит record_status записей

1 Ответ

0 голосов
/ 18 мая 2018

Вы можете выбрать максимальную дату, перекрестное объединение и фильтр:

// Select max value from ds_record_status
ds_record_status.select(
    coalesce(max(col("date_record")), lit(0).cast("timestamp")).alias("max_date")
).crossJoin(ds_evenement).where("DATE_HIST > max_date)

или просто зарегистрировать обе таблицы:

 ds_record_status.createOrReplaceTempView("ds_record_status");
 ds_evenement.createOrReplaceTempView("ds_evenement");

и использовать свой запрос практически как есть:

  • Замена IFNULL на coalesce.
  • Удаление префиксов схемы.
...