Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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
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:
Read here:
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
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.
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.
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
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
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
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?
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.