【问题标题】:How can i perform incremental load in qlikview如何在 qlikview 中执行增量加载
【发布时间】:2014-09-25 05:37:14
【问题描述】:

我有一个事务表,它每天都会添加新记录。我想构建一个只加载增量数据的 QVD 文件。

【问题讨论】:

    标签: load qlikview


    【解决方案1】:

    您需要一个日期(时间)列来标识新记录。

    那么你可以这样:

    ///$tab Main
    SET ThousandSep='.';
    SET DecimalSep=',';
    SET MoneyThousandSep='.';
    SET MoneyDecimalSep=',';
    SET MoneyFormat='#.##0,00 €;-#.##0,00 €';
    SET TimeFormat='hh:mm:ss';
    SET DateFormat='DD.MM.YYYY';
    SET TimestampFormat='DD.MM.YYYY hh:mm:ss[.fff]';
    SET MonthNames='Jan;Feb;Mrz;Apr;Mai;Jun;Jul;Aug;Sep;Okt;Nov;Dez';
    SET DayNames='Mo;Di;Mi;Do;Fr;Sa;So';
    
    set vSourceDir = 'C:\devel\qlikview\2013\Incremental_Load\';
    
    ///$tab Initial
    // Initial data load
    
    /*
    
    Sales:
    LOAD OrderId, 
         ProductId, 
         CustomerId, 
         Amount, 
         date(Date_updated) as Date_updated
    FROM
    $(vSourceDir)Data.xlsx
    (ooxml, embedded labels, table is Orders);
    
    STORE Sales INTO $(vSourceDir)sales.qvd (qvd);
    
    */
    ///$tab Load from QVD
    // load sales.qvd
    
    Sales:
    LOAD OrderId, 
         ProductId, 
         CustomerId, 
         Amount, 
         date(Date_updated) as Date_updated
    FROM
    $(vSourceDir)sales.qvd
    (qvd);
    
    Sort_Sales:
    LOAD * 
    Resident Sales
    Order By Date_updated;
    
    LET vLastUpdateDate = date(Peek('Date_updated', -1, 'Sort_Sales'));
    
    
    DROP TABLE Sales;
    
    ///$tab Perform Incremental load
    // load only new (incremental) data
    
    Incremental:
    NoConcatenate
    LOAD OrderId, 
         ProductId, 
         CustomerId, 
         Amount, 
         date(Date_updated) as Date_updated
    FROM
    $(vSourceDir)Data.xlsx
    (ooxml, embedded labels, table is NewOrders)
    where  date(Date_updated) >= '$(vLastUpdateDate)';
    
    
    
    ///$tab Update QVD
    // load data from qvd without the records that where changed
    
    Concatenate
    LOAD OrderId, 
         ProductId, 
         CustomerId, 
         Amount, 
         date(Date_updated) as Date_updated
    FROM 
    $(vSourceDir)sales.qvd (qvd)
    where not exists(OrderId);
    
    STORE Incremental INTO $(vSourceDir)sales.qvd;
    

    这里是解释https://www.youtube.com/watch?v=UkKTmnKSNQo

    HTH

    【讨论】:

    • 它不一定是日期/时间字段,只是“保证”单调递增的东西。一些(很多?)数据库使用整数作为主键,所以只要您不关心翻转(或回填),这可能就足够了。重要的是它是“可比的”,无论是连续的还是整数的。
    猜你喜欢
    • 2017-11-02
    • 2019-05-11
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多