Сегодня хочу рассказать, как быстро «подтянуть» данные о курсах валют в приложение QlikView. Несмотря на тренд импортозамещения, задача все еще остается полезной и актуальной 🙂
Официальные курсы валют на заданную дату, ежедневно обновляемые, представлены на сайте Центрального банка РФ:
Для того, чтобы подгрузить курсы валют, фактически нам нужно выполнить обращение к URL-строке через переменную:
- Через переменные задаем даты начала и конца периода:
1 2 |
LET vStartDate =Num(MonthStart(MakeDate(2015))); LET vEndDate = Num(Now()); |
- С помощью оператора управления .next создаем цикл. Операторы внутри цикла, которые находятся между разделами for и next, будут выполняться для каждого значения переменной счетчика vDate в пределах указанного минимального vStartDate и максимального vEndDate значений даты.
1 2 3 4 5 6 7 8 |
FOR vDate=vStartDate TO vEndDate . . . NEXT vDate |
Что же находится внутри цикла?
- Задаем через переменную vDateStr дату, на которую будем загружать курс.
1 |
LET vDateStr = Date(vDate,'DD.MM.YYYY'); |
- Создаем таблицу «Курсы», в которую загружаем поля, представленные на сайте ЦБ РФ.
1 2 3 4 5 6 7 8 9 10 |
[Курсы]: LOAD RecNo() as Rec, Date($(vDate)) As [Дата], 'ЦБ РФ' as [Банк], [Цифр. код] As [Валюта Код ISO], [Букв. код] As [Валюта Код], Валюта As [Валюта Описание], Курс/Единиц As Rate |
- В качестве источника в поле «Internet File» указываем URL-ссылку: http://cbr.ru/currency_base/daily.aspx?date_req=$(vDateStr)
- В результате получаем такие строки скрипта:
1 2 3 |
FROM [http://cbr.ru/currency_base/daily.aspx?date_req=$(vDateStr)] (html, utf8, embedded labels); |
Вот, собственно, и все решение задачи выгрузки курсов валют с сайта ЦБ РФ. По этой же схеме Вы можете подтягивать любые открытые данные с сайтов. Например, в одно из своих приложений я включала курс драгоценных металлов.
Можно обойтись без цикла:
Курс_ДолларСША:
LOAD Дата,
Единиц,
Курс
FROM
[http://www.cbr.ru/currency_base/dynamics.aspx?VAL_NM_RQ=R01235&date_req1=01.01.2012&date_req2=31.12.9999&rt=1&mode=1]
(html, utf8, embedded labels, table is @1);
Период задается в строке. В качестве второго параметра использую 31.12.9999. Возвращается курс по текущую дату (по завтрашний день, если курс уже рассчитан в ЦБ). Ну и конечно нужно учитывать, что на выходные и праздничные дни будут пропуски, т.к. действует последний заданный курс.