Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Join us in Toronto Sept 9th for Qlik's AI Reality Tour! Register Now
cancel
Showing results for 
Search instead for 
Did you mean: 
J_Sprengers
Contributor II
Contributor II

ODBC (64-bit) not showing most recent data structure from TDV when source file is excel

Hello,

We are using Qlik Sense Enterprise. For our data connections we have set up a set of 64-bit ODBC connections to TDV (Tibco Data Virtualization) to access different data sources incl. excel files.

After recent changes on some excel files at source side, we notice that some new columns are missing and that a column that was removed, still appears in the Data Connections Data Preview/Metadata viewer.

When we do a SELECT * FROM, the correct columns will be used. 

This situations leads to a lot of confusion because our developers cannot trust on what they see from Data Connections perspective.

 

What do we need to do to make sure that the synchronization is always 100 % between what is shown within Qlik Sense & what is actually there as data structure? Within Qlik Sense? From ODBC connection definition?

Thanks in advance!

Labels (1)
1 Solution

Accepted Solutions
J_Sprengers
Contributor II
Contributor II
Author

All,

Many thanks for providing suggestions. We have managed to solve the issue as result of advanced testing with our TDV team. It seems that although they can view the data structure, they need to perform a few additional steps + a re-introspect of the object. Then it seems that the 'caching' at TDV side is realigned.

Conclusion: Additional actions needed at TDV side, nothing at Qlik Sense side

View solution in original post

7 Replies
diegozecchini
Specialist
Specialist

Hi! 

In the In the Data Load Editor, add "REFRESH TABLE <table_name>;" before running SELECT * FROM, if TDV supports it

J_Sprengers
Contributor II
Contributor II
Author

Hello Diegozecchini,

Many thanks for the suggestion. From a TDV perspective it will get translated to 

// Refresh the table before loading data TDV
SQL CALL SYSADMIN.refreshTable('schema', 'DATA_Table');

// Load data from the table into Qlik Sense
LOAD toto;
SQL SELECT *
FROM "schema"."DATA_Table";

// Exit the script
EXIT;

Unfortunately CALL SYSADMIN are not allowed from development perspective.

diegozecchini
Specialist
Specialist

Hi!
Even if CALL SYSADMIN.refreshTable is not allowed, you can force Qlik Sense to re-read metadata by using a dummy SQL statement before your SELECT statement.

Try adding:

// Force metadata refresh by creating a dummy alias
LOAD dummy_field;
SQL SELECT 1 AS dummy_field FROM "schema"."DATA_Table";
Then follow with:

// Now load actual data
LOAD toto;
SQL SELECT *
FROM "schema"."DATA_Table";
This forces Qlik to interact with the table and might help it recognize the updated schema.

J_Sprengers
Contributor II
Contributor II
Author

Hi,

From a LOAD perspective there is no issue. 

The SELECT * performs what is expecting.

Issue is on the data/metadata previewer.

 

It looks like we need something like a "&clearcache=true" option in the data connection definition at QMC level

diegozecchini
Specialist
Specialist

Hi!
Sometimes, Qlik retains metadata in old connections, did you try creating a new ODBC connection with a different name and reloading the data model?

Or, try to change ODBC connection. In some systems it works, adding ClearCache=1 or MetadataRefresh=1 to the connection string may help (check TDV ODBC driver documentation for exact syntax).

J_Sprengers
Contributor II
Contributor II
Author

All,

Many thanks for providing suggestions. We have managed to solve the issue as result of advanced testing with our TDV team. It seems that although they can view the data structure, they need to perform a few additional steps + a re-introspect of the object. Then it seems that the 'caching' at TDV side is realigned.

Conclusion: Additional actions needed at TDV side, nothing at Qlik Sense side

diegozecchini
Specialist
Specialist

good to know, thanks for update!