Cum să preluăm date de pe Internet

QlikView se poate conecta la orice sursă de date standard, inclusiv la date rezidente în Internet. Pentru exemplificare vom prelua cursul valutar de pe situl BNR. După o trecere în revistă, găsim pagina http://www.bnr.ro/Cursul-de-schimb-524.aspx unde avem un tabel cu informaţiile despre cursul valutar din ultimele 5 zile.

Cei de la BNR s-au gândit şi la multitudinea de aplicaţii care utilizează cursul valutar, astfel încât au pus la dispozitiţie programatorilor un fişier XML actualizat în fiecare zi. Din păcate fişierul conţine doar cursul din ziua curentă. Ce facem dacă, din diferite motive tehnice, nu putem accesa fişierul respectiv o zi sau mai multe la rând? Trebuie să găsim undeva informaţiile din zilele respective.

Aşa că rămânem la pagina găsită iniţial care macar ne oferă ultimele 5 zile. Să trecem la treaba:

1. În QlikView vom crea un document nou, îl salvăm cu o denumire oarecare, apoi deschidem editorul de script (CTRL+E sau File -> Edit script). Setările regionale sunt automat completate de QlikView (ne vom întoarce la ele mai târziu).

2. Apăsăm butonul "Web files" pentru a genera automat scriptul necesar. În prima fereastra completăm adresa "http://www.bnr.ro/Cursul-de-schimb-524.aspx" şi apăsăm butonul "Next". Va apărea fereastra din imaginea alăturată.

First Files
3. QlikView a recunoscut imediat sursa de date şi ne oferă un preview al tabelului. Însă formatul oferit nu ne este de mare ajutor deoarece avem avem rândurile şi coloanele inversate. Nu este o problemă pentru QlikView care este un specialist al interpretarii datelor. Apăsăm butonul "Transform" şi ne apare următoarea fereastră unde selectăm tab-ul "Rotate":

Last Files
4. Apăsăm butonul "Transpose". Rândurile se vor transforma în coloane, iar coloanele în rânduri.

5. Acum avem în primele două rânduri informaţia despre valută (codul şi descrierea). Dorim să ştergem primul rând şi să lăsăm doar codul valutei. Pentru aceasta selectăm tab-ul "Garbage" şi apăsăm butonul "Conditional delete...". Alegem la condiţie "Range", apoi trecem prin opţiunile "From", "To" şi "Select" lasând parametrii nemodificaţi. După trecere se va activa butonul "Add" pentru a adauga condiţia de ştergere. În fereastra de condiţii trebuie sa apara "RowCnd(Interval, Pos(Top, 1), Pos(Top, 1), Select(1, 0))".

Apăsăm "OK" pentru a aplica modificările, apoi "Finish" pentru a genera scriptul care trebuie să fie de forma:

LOAD F1, AUD, BGN, CAD, CHF, CZK, DKK, EGP, EUR, GBP, HUF,

JPY, MDL, NOK, PLN, RUB, SEK, TRY, USD, ZAR, BRL, CNY,

INR, KRW, MXN, NZD, RSD, UAH, AED, XAU, XDR

FROM [http://www.bnr.ro/Cursul-de-schimb-524.aspx]

(html, utf8, embedded labels, table is @1, filters(

Transpose(),

Remove(Row, RowCnd(Interval, Pos(Top, 1), Pos(Top, 1), Select(1, 0)))

));

Salvăm, rulăm scriptul şi gata: am încărcat în QlikView informaţii din Internet. Pentru a vedea datele, adaugăm în interfaţă o tabelă în care aducem toate câmpurile.

În continuare vom face un pic de fine-tuning la campul de dată, care, din motive obscure, este publicat de către BNR într-un format non-standard. Acest lucru face ca informaţia respectivă să fie încarcată ca text, nu ca dată calendaristică. Modificăm setările regionale astfel încât să corespundă formatului BNR:

SET ThousandSep='.';

SET DecimalSep=',';

SET MoneyThousandSep='.';

SET MoneyDecimalSep=',';

SET MoneyFormat='$#,##0.00;($#,##0.00)';

SET TimeFormat='hh:mm:ss';

SET DateFormat='DD MMM.YYYY';

SET TimestampFormat='DD/MM/YYYY hh:mm:ss[.fff]';

SET MonthNames='ian;feb;mar;apr;mai;iun;iul;aug;sep;oct;noi;dec';

SET DayNames='Lun;Mar;Mie;Joi;Vin;Sam;Dum';