EducationSoftwareStrategy.com
StrategyCommunity

Knowledge Base

Product

Community

Knowledge Base

TopicsBrowse ArticlesDeveloper Zone

Product

Download SoftwareProduct DocumentationSecurity Hub

Education

Tutorial VideosSolution GalleryEducation courses

Community

GuidelinesGrandmastersEvents
x_social-icon_white.svglinkedin_social-icon_white.svg
Strategy logoCommunity

© Strategy Inc. All Rights Reserved.

LegalTerms of UsePrivacy Policy
  1. Home
  2. Topics

KB10754: How to use the Very Large Database Settings to ensure correct generation of SQL when using indexing and volatile tables against a Teradata data warehouse


Community Admin

• Strategy


A user wishes to enable the creation of volatile tables in the Structured Query Language (SQL) generated by the execution of MicroStrategy reports against a data warehouse held in a certified version of NCR Teradata. They also wish to enable indexing. This article discusses about How to use the Very Large Database Settings to ensure correct generation of SQL when using indexing and volatile tables against a Teradata data warehouse

A user wishes to enable the creation of volatile tables in the Structured Query Language (SQL) generated by the execution of Strategy reports against a data warehouse held in a certified version of NCR Teradata. They also wish to enable indexing.
 
In order to achieve this, the user modifies the following Very Large Database (VLDB) properties at the Database Instance level:
 
Under Indexing, Intermediate Table Index is left at the default RDBMS-level value:

ka04W000000OhkkQAC_0EM440000002Fpu.gif

 
 
 
Under Tables, the Table Space property is modified to include the ON COMMIT PRESERVE ROWS which is necessary for the use of volatile tables:

ka04W000000OhkkQAC_0EM440000002Fpm.gif

 
When these properties are saved, the user finds that the generated SQL has the ON COMMIT PRESERVE ROWS before rather than the indexing statement, which is incorrect. The SQL is similar to:
 
create VOLATILE table ZZAM00 , NO LOG (
domain_id INTEGER,
internal_search_string_id INTEGER,
internal_search_engine_id INTEGER,
WJXBFS1 FLOAT)
ON COMMIT PRESERVE ROWS
primary index (domain_id, internal_search_string_id, internal_search_engine_id)
If the Intermediate Table Index property is modified to "Don't create an index," the SQL generation is correct but performance is affected by the absence of indexing. The desired SQL would be:
 
create VOLATILE table ZZAM00 , NO LOG (
domain_id INTEGER,
internal_search_string_id INTEGER,
internal_search_engine_id INTEGER,
WJXBFS1 FLOAT)
primary index (domain_id, internal_search_string_id, internal_search_engine_id)
ON COMMIT PRESERVE ROWS
In fact, the correct combination of VLDB properties to achieve this is as follows:
 

  • Undo the modifications described above.
  • Under Tables, set Temporary Table Type to True Temporary Table:
ka04W000000OhkkQAC_0EM440000002Fpl.gif
  • Under Tables, ensure that Table Qualifier is blank, as shown below:
ka04W000000OhkkQAC_0EM440000002FqT.jpeg

This should facilitate the correct generation of SQL.
 


Comment

0 comments

Details

Knowledge Article

Published:

April 17, 2017

Last Updated:

April 17, 2017