首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对Qlik Sense执行增量加载

对Qlik Sense执行增量加载
EN

Stack Overflow用户
提问于 2019-05-06 19:16:39
回答 1查看 1.5K关注 0票数 1

Qlik Sense的新手。

我想执行增量插入、更新和删除。通过研究,我设法写出了这个脚本

代码语言:javascript
复制
//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中提取不在已删除记录中的数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-07 02:56:06

在第一个SELECT中,您选择的sale_detail_auto_id字段在新的和更新的记录中也存在于相同的字段名称下,因此您将看到删除的is和新的is。您需要重命名该列以避免冲突。

请使用AS,例如:

代码语言:javascript
复制
sale_detail_auto_id` AS `deleted_sale_detail_auto_id`

然后在EXISTS中使用该字段:

代码语言:javascript
复制
Where Not Exists(deleted_sale_detail_auto_id, sale_detail_auto_id);

更新:

此外,我认为将删除的in存储在数据模型中是没有意义的,这样您就可以命名该表:

代码语言:javascript
复制
[TEMP_deleted_ids]
SELECT sale_detail_auto_id` AS `deleted_sale_detail_auto_id`

然后在脚本的末尾删除它:

代码语言:javascript
复制
DROP Table [TEMP_deleted_ids];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56004103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档