Flera valutor och avsaknaden av valutakurser?

Ofta vid konsolidering av information behövs en översättning för att göra olika tal jämförbara. Ett av de tydligaste exemplen kring detta är hanteringen av ekonomi från flera länder och med olika valutor. Ofta har bolagen en egen valutakurs men vår erfarenhet säger att dessa kurser inte alltid är på daglig nivå utan istället på månadsnivå.

Om en konsolidering ska göras så är det väldigt enkelt mha QlikView att räkna om samtliga valutor och låta användaren välja vilken valuta som ska presenteras. Men då bör man ju ha valutakurserna också… och helst på dagsnivå.

Dessa tillhandahåller Europeiska Central Banken, ECB, så långt tillbaka som till 1999-01-01.

På följande url hittar du en xml med valutakurser,
http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.xml

För att underlätta lite för dig får du ett komplett skript som laddar hem valutakurserna inkrementellt varje gång det körs – lycka till!

 

SET SourceQVDPath = 'Currencies.qvd';

SUB GetAllCurrenciesFromHistory
    //Check if qvd exists
    IF QvdCreateTime($(SourceQVDPath)) then
        //Load data from qvd
        Currencies:
        LOAD  
             currency,
             rate,
             time
        FROM
        $(SourceQVDPath)(qvd);
        //Get max date
        temp:
        LOAD
            MAX(time) as MaxDate
        Resident Currencies;
        //Store maxdate into var.
        LET maxDate = FieldValue('MaxDate',1);
    ELSE
        //Set maxdate to first date available. (ECB has currencies from 1999-01-01
        LET maxDate = '1999-01-01';
        Currencies:
        LOAD * INLINE [
            tempField
            1
        ];
    END IF

    //Load dates where is greater then maxdate
    tempCurrencies:
    LOAD
    time,
    %Key_Cube_1FC04070DD9A58E4 as key
     FROM [http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.xml] (XmlSimple, Table is [Envelope/Cube/Cube]) WHERE (time > '$(maxDate)');
    //join data on to date
    right join
    LOAD currency,
    rate,
    %Key_Cube_1FC04070DD9A58E4 as key
    FROM [http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist.xml] (XmlSimple, Table is [Envelope/Cube/Cube/Cube]);
    //Concatenate tables
    Concatenate (Currencies)
    LOAD
        time,
        currency,
        rate
    Resident tempCurrencies;
    Drop table tempCurrencies;

    store Currencies INTO $(SourceQVDPath)(qvd);
    drop table Currencies;
    exit Script;
ENDSUB

Share on LinkedInTweet about this on TwitterShare on Google+Share on FacebookEmail this to someone

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *