Qlik Sense的新手。
我想执行增量插入、更新和删除。通过研究,我设法写出了这个脚本
//This fetches deleted records
SELECT `sale_detail_auto_id`
FROM `iprocure_ods.deleted_records` as dr
INNER JOIN `iprocure_ods.saledetail` sd ON sd.sale_detail_auto_id = dr.identifier AND dr.type = 2
WHERE dr.delete_date > TIMESTAMP('$(vSaleTransactionsRunTime)');
//This fetches new and updated records
[sale_transactions]:
SELECT *
FROM `iprocure_edw.sale_transactions`
WHERE `server_update_date` > TIMESTAMP('$(vSaleTransactionsRunTime)');
Concatenate([sale_transactions])
LOAD *
FROM [lib://qlikPath/saletransactions.qvd] (qvd) Where Not Exists(`sale_detail_auto_id`);
//This part updates runtime dates
MaxUpdateDate:
LOAD Timestamp(MAX(`server_update_date`), '$(TimestampFormat)') As maxServerUpdateDate
FROM [lib://qlikPath/saletransactions.qvd] (qvd);
Let vSaleTransactionsRunTime = peek('maxServerUpdateDate', 0, MaxUpdateDate);
DROP Table MaxUpdateDate;新建和更新记录可以正常工作。问题是删除的记录被替换为除sale_detail_auto_id列以外的空列。
如何从saletransactions.qvd中提取不在已删除记录中的数据?
发布于 2019-05-07 02:56:06
在第一个SELECT中,您选择的sale_detail_auto_id字段在新的和更新的记录中也存在于相同的字段名称下,因此您将看到删除的is和新的is。您需要重命名该列以避免冲突。
请使用AS,例如:
sale_detail_auto_id` AS `deleted_sale_detail_auto_id`然后在EXISTS中使用该字段:
Where Not Exists(deleted_sale_detail_auto_id, sale_detail_auto_id);更新:
此外,我认为将删除的in存储在数据模型中是没有意义的,这样您就可以命名该表:
[TEMP_deleted_ids]
SELECT sale_detail_auto_id` AS `deleted_sale_detail_auto_id`然后在脚本的末尾删除它:
DROP Table [TEMP_deleted_ids];https://stackoverflow.com/questions/56004103
复制相似问题