Skip to main content
Announcements
Customer Spotlight: Discover what’s possible with embedded analytics Oct. 16 at 10:00 AM ET: REGISTER NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Multi-Table Incremental Error

I have multiple data sources in my qvw.  I want to perform an incremental load and create the qvd's.

I have the Incremental Load script working for a single data source, but when I try and have multiple data sources I am getting this error.

Here are my data sources:

Table NameQVD NameFiled in Table
BankBank.qvdDate
BWBalancesBWBalances.qvdGroup Account
GLBalancesGLBalances.qvdGroup Account Identifier

multi-table incremental_error.png

Incremental Setup Script

/* Setup for Incrementa Load. */

SET BANKQVDFILE=E:\Data\Close Improvement\Dashbaord\MEC Snapshot\QVD\Bank.qvd;

SET BWQVDFILE=E:\Data\Close Improvement\Dashbaord\MEC Snapshot\QVD\BWBalances.qvd;

//Bank Incremental

SET PKexp=autonumberhash128(Date);

LET banktable='Bank';

If FileSize('$(BANKQVDFILE)')>0 THEN

          SET BANKQVD_EXISTS=1;

ELSE

          SET BANKQVD_EXISTS=0;

END if

IF $(BANKQVD_EXISTS) THEN

  maxdateTab:

  LOAD max(Date)

  From $(BANKQVDFILE)(qvd);

  LET INCREMENTAL_EXP='WHERE Date>='&max('Date',1);

  DROP table maxdateTab;

ELSE

  LET INCREMENTAL_EXP='';

END IF

//BW Balances incremental

SET PKexp=autonumberhash128([Group Account]);

LET BWtable='BWBalances';

If FileSize('$(BWQVDFILE)')>0 THEN

          SET BWQVD_EXISTS=1;

ELSE

          SET BWQVD_EXISTS=0;

END if

IF $(BWQVD_EXISTS) THEN

        maxdateTab:

        LOAD max([Group Account])

        From $(BWQVDFILE)(qvd);

       LET INCREMENTAL_EXP='WHERE Group Account>='&max('Group Account',1);

      DROP table maxdateTab;

ELSE

         LET INCREMENTAL_EXP='';

END IF

Incremental Update Script

Directory;

IF $(BANKQVD_EXISTS) THEN

  RIGHT JOIN ($(banktable)) LOAD DISTINCT

  *

  ,$(PKexp) as PK

  RESIDENT $(banktable)

  ;

  CONCATENATE ($(banktable)) LOAD * FROM $(BANKQVDFILE) (qvd)

  WHERE NOT exists(PK, $(PKexp))

  ;

DROP FIELD PK;

RIGHT JOIN LOAD DISTINCT *, $(PKexp) as PK RESIDENT $(banktable);

Inner Join LOAD $(PKexp) as PK;

Select analysis_date,item from view(nolock);

DROP FIELD PK;

END IF

STORE $(banktable) INTO $(BANKQVDFILE)(qvd);

//BW incremental

Directory;

IF $(BWQVD_EXISTS) THEN

RIGHT JOIN ($(BWtable)) LOAD DISTINCT

  *

  ,$(PKexp) as PK

RESIDENT $(BWtable)

;

CONCATENATE ($(BWtable)) LOAD * FROM $(BWQVDFILE) (qvd)

WHERE NOT exists(PK, $(PKexp))

;

DROP FIELD PK;

RIGHT JOIN LOAD DISTINCT *, $(PKexp) as PK RESIDENT $(BWtable);

Inner Join LOAD $(PKexp) as PK;

Select analysis_date,item from view(nolock);

DROP FIELD PK;

END IF

STORE $(BWtable) INTO $(BWQVDFILE)(qvd);

Thanks,

Dan

1 Reply
Gysbert_Wassenaar

It looks to me like you want to load fields from a resident table that you haven't created yet. You first have to create the table 'Bank' before you can use it for a resident load.


talk is cheap, supply exceeds demand