У меня есть 2 таблицы, Staging: это таблица кустов. Куратор: это дельта-таблица Databricks.
Мне нужно обновлять и вставлять записи в таблицу кураторов всякий раз, когда в промежуточной таблице есть дельта-файл.
В Staging у меня есть 2 столбца empId, empName In Curated. у меня есть 5 столбцов: empId, empName, recordtype, efftdt_ts, expdt_ts
Начальные записи в кураторе будут иметь эффективную метку времени, тип записи как «A», empId, empName и expdt_ts будут нулевыми.
Когда в промежуточной стадии есть дельта-файл и когда он имеет ту же запись, что и куратор, он ничего не должен делать, но если в записи между промежуточной и курируемой есть изменение, тогда тип курируемой записи должен быть изменен с ''To' I и вставьте exprdt_ts, а затем ВСТАВЬТЕ все записи от промежуточной до кураторской.
Я использую блоки данных,
spark.sqlContext.sql("UPDATE app_curated_db.app_table1 dca1 SET dca1.expdt_ts=CURRENT_TIMESTAMP, dca1.recordtype='I' FROM dca1 INNER JOIN app_staging_dbhive.app_tablehive dca10 ON dca1.empId=dca10.empId AND dca1.empName=dca10.empName")
spark.sql("UPDATE app_curated_db.app_table1 dca1 SET dca1.expdt_ts=CURRENT_TIMESTAMP, dca1.recordtype='I' from app_staging_dbhive.app_tablehive dca10, dca1 where dca1.empId=dca10.empId AND dca1.empName=dca10.empName")
spark.sqlContext.sql("UPDATE app_curated_db.app_table1 dca1,app_staging_dbhive.app_tablehive dca10 SET dca1.expdt_ts=CURRENT_TIMESTAMP, dca1.recordtype='I' where dca1.empId=dca10.empId AND dca1.empName=dca10.empName")
spark.sqlContext.sql("UPDATE app_curated_db.app_table1 dca1 SET dca1.expdt_ts=CURRENT_TIMESTAMP, dca1.recordtype='I' where dca1.empId= (SELECT dca10.empId from app_staging_dbhive.app_tablehive dca10 where dca1.empId=dca10.empId) AND dca.empName = (SELECT dca10.empName from app_staging_dbhive.app_tablehive dca10 where dca1.empName=dca10.empName)")
Каждый из приведенных выше запросов завершается с ошибкой разбора.
есть ли способ добиться результата или какой-нибудь лучший способ заставить это работать.