Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
danosoft
Specialist
Specialist

Where it save my QVD files?

Hi i did this in my script for create a QVD file:

Buffer

SQL SELECT "DT_DATA",

    "N_COLUMN1",

    "PUN_COLUMN2"

FROM "XXX_TABLE"."V_PROXYTAB";

With "Buffer" i think QlikView create a Qvd file, but where? i not have the directory C:\ProgramData\QlikTech\QlikView\Buffers

1 Solution

Accepted Solutions
marcus_sommer

Yes, in general you could do:

if condition then

     load 1

else

     load 2

end if

and in your case mybe:

if filetime('path\qvd-file.qvd') > 0 then

     ...

- Marcus

View solution in original post

19 Replies
vishsaggi
Champion III
Champion III

In your qvw file where you are using this Buffer Load. Just click Ctrl+ALt+U to open the User preferences and go to Locations tab there you can see default path. Like below:

Capture.PNG

Read here:

Buffer ‒ QlikView

danosoft
Specialist
Specialist
Author

Thanks, is right, but it do to me the a strange name to the file, can i say to buffer to make a "human" name to the file? thanks

vishsaggi
Champion III
Champion III

What do you mean can you give an example. ? You want the QVD file name to be changed? May be you can modify the path from Modify button in Locations tab of User preferences.

Peter_Cammaert
Partner - Champion III
Partner - Champion III

Buffer files are not meant to be used by you or your script code as data sources. They are a behind-the-scenes technique to cache data that doesn't need to be extracted from the data source over and over again. QlikView manages those buffers, nobody else.

danosoft
Specialist
Specialist
Author

Ah i understand..... this i want to do:

I have a big query it make response after 5 hours from Oracle, but i know the 80% of results (years before 2016) never change... so i want use the QVD files, i think it can resolve my situation... i want the query with years before 2016 never be changed, after this year from 2017 i want all day qlikview refresh my data; so i thought to use BUFFER expression... this is a wrong technics?

Thanks

Peter_Cammaert
Partner - Champion III
Partner - Champion III

Automatic buffering using the BUFFER prefix has numerous limitations. IMHO you better use a classical incremental LOAD technique (of which many examples are present in this community) along the lines of this pseudo-code:

IF IsNull(Filetime('HistoricalQVD.QVD')) THEN

  LET vWhere =;

ELSE

  LET vCutoff = '1/1/' & (Year(Today()) - 1);

  BigTable:

  LOAD * FROM HistoricalQVW.QVD (qvd)

  WHERE DateField < '$(vCutoff)';

  LET vWhere = 'WHERE DateField >= ' & chr(39) & '$(vCutoff)' & chr(39);

END IF

BigTable:

SQL SELECT * FROM BigOracleTable

$(vWhere);

Change this template to match your situation.

Best,

Peter

marcus_sommer

The general idea of using incremental loads with qvd's in a multi-tier data-architecture is the right one if you are not playing with a few rather small and simple applications. As soon as you have a bigger environment it made sense to handle all data explicitly and professional with store-statements to your preferred folder-structure - BUFFER is only for temporary single loads.

- Marcus

danosoft
Specialist
Specialist
Author

Thanks, but i didn't want to create an incremental, i want give 2 query:

1. BUFFERED with old data (before 2016)

2. NOT buffered with new data (> 2017)

how can i do that?

i mean if i put BUFFER on top of my first query, qlikview automatically will be use the QVD file withouth take records from query?

Peter_Cammaert
Partner - Champion III
Partner - Champion III

Won't work. BUFFER limitations.

That's why you need an incremental LOAD, which does pretty much the exact same thing as the BUFFER prefix but better and more flexible.