Неофициальный форум разработчиков QlikView и Qlik Sense

Форум разработчиков QlikView и Qlik Sense. Получи любые ответы на вопросы по QlikView и Qlik Sense в течении нескольких часов!

Вы не вошли.

#1 Re: Программирование QlikView » Организация загрузки » 2015-04-14 14:13:14

Oleg Orlov пишет:

Добрый день!

В вашем случае особого смысла использовать префикс Buffer с опцией Incremental нет. Он был бы полезен, если бы ваши XML файлы со временем менялись, а именно в них добавлялись бы новые строки. Алгоритм этой функциональности примерно следующий: если количество строк после предыдущей выгрузки XML файла в буферный файл QVD не изменилось, то загрузка будет осуществляться только из этого QVD файла, иначе дополнительно будет догружены дополнительные строки из изменненного XML файла и в завершении будет перезаписан созданный QVD файл, содержащий уже все данные. Так как вы постоянно загружаете данные из всех файлов, пускай даже по большей части не из исходных XML, а из QVD, скорость загрузки особо не меняется.

Вам необходимо реализовать загрузку таким образом, чтобы данные в QlikView загружались сначала из ранее загруженных файлов, а затем происходило добавление (конкатенация) информации из новых. Т.е. при самой первой загрузке вы обработаете данные из 300000 файлов и выгрузите всю накопленную информацию в общий QVD файл. При второй загрузке сначала загрузите данные из новых 3000 XML файлов, а затем добавите данные из созданного при прошлой загрузке QVD файла и в конце вновь выгрузите всю накопленную информацию в общий QVD файл. Т.е. вы уже не будете загружать из 303000 файлов, а только лишь из 3001 (один QVD файл, содержащий данные из 300000 XML и 3000 новых XML файлов).

Кратко алгоритм:
1. Загрузить данные из новых XML;
2. Загрузить старые данные из QVD;
3. Создать новый QVD (перезаписать);
4. Повторить процедуру при следующей загрузке.

Для реализации вам скорее всего потребуются следующие выражения QlikView:
1. Цикл For each..next;
2. Функция Filelist;
3. Операция конкатенации таблиц - Concatenate;
4. Операция выгрузки таблицы QlikView на жесткий диск - Store.

С уважением,
Олег Орлов

Спасибо, Олег за ответ!
А не могли бы вы показать пример кода как это правильно реализовать?

#3 Программирование QlikView » Организация загрузки » 2015-04-12 19:02:34

padijvd
Ответов: 5

Добрый день!!!
Подскажите как можно организовать загрузку обновленных данных. А именно имеется около 300 000 xml файлов число которых увеличивается ежедневно примерно на три пять тысяч. в каждом файле также примерно около 50 строк, перезагружать данные соответственно занимает очень много времени... привожу пример кода для удобства.


SET ThousandSep=' ';
SET DecimalSep=',';
SET MoneyThousandSep=' ';
SET MoneyDecimalSep=',';
SET MoneyFormat='# ##0,00 ₽;-# ##0,00 ₽';
SET TimeFormat='h:mm:ss';
SET DateFormat='DD.MM.YYYY';
SET TimestampFormat='DD.MM.YYYY h:mm:ss[.fff]';
SET MonthNames='январь;февраль;март;апрель;май;июнь;июль;август;сентябрь;октябрь;ноябрь;декабрь';
SET DayNames='Пн;Вт;Ср;Чт;Пт;Сб;Вс';

export:
Buffer (Incremental) Load
FileName() as [Имя файла],
    [fcsNotificationEF/id] as id,
    [fcsNotificationEF/purchaseNumber] as [№ закупки],
    mid([fcsNotificationEF/docPublishDate],9,2) as [День публикации закупки],
    Month(mid([fcsNotificationEF/docPublishDate],1,10)) as [Месяц публикации закупки],
    mid([fcsNotificationEF/docPublishDate],1,4) as [Год публикации закупки],
    mid([fcsNotificationEF/docPublishDate],9,2)& ' ' & Month (mid([fcsNotificationEF/docPublishDate],1,10))& ' ' &mid([fcsNotificationEF/docPublishDate],1,4) as [Дата публикации закупки],
    ceil(Month(mid([fcsNotificationEF/docPublishDate],1,10))/3)&' квартал' as Квартал,
    [fcsNotificationEF/href] as [Ссылка на ООС],
    [fcsNotificationEF/purchaseObjectInfo] as [Предмет закупки],        
    [fcsNotificationEF/lot/maxPrice] as [НМЦК],
    [fcsNotificationEF/lot/financeSource] as [Источник финансирования],
    [fcsNotificationEF/lot/customerRequirements/customerRequirement/deliveryTerm] as [Сроки поставки товара],
    [fcsNotificationEF/lot/customerRequirements/customerRequirement/applicationGuarantee/amount] as [Обеспечение заявки],
    [fcsNotificationEF/lot/customerRequirements/customerRequirement/contractGuarantee/amount] as [Обеспечение контракта],
    [fcsNotificationEF/lot/customerRequirements/customerRequirement/contractGuarantee/part] as [Процент на обеспечение исполнения контракта],
    [fcsNotificationEF/lot/customerRequirements/customerRequirement/applicationGuarantee/part] as [Процент на обеспечение заявки],
    [fcsNotificationEF/lot/customerRequirements/customerRequirement/kladrPlaces/kladrPlace/kladr/fullName]&' '&[fcsNotificationEF/lot/customerRequirements/customerRequirement/kladrPlaces/kladrPlace/deliveryPlace] as [Место доставки товара, выполнения работ],
    mid([fcsNotificationEF/procedureInfo/bidding/date],9,2)& ' ' & Month (mid([fcsNotificationEF/procedureInfo/bidding/date],1,10))& ' ' &mid([fcsNotificationEF/procedureInfo/bidding/date],1,4) as [Дата Аукциона/Определения победителя],
    mid([fcsNotificationEF/procedureInfo/collecting/startDate],9,2)& ' ' & Month (mid([fcsNotificationEF/procedureInfo/collecting/startDate],1,10))& ' ' &mid([fcsNotificationEF/procedureInfo/collecting/startDate],1,4) as [Дата начала подачи документов],
    [fcsNotificationEF/procedureInfo/collecting/place]&'  '&[fcsNotificationEF/ETP/name]&'   по адресу  '&[fcsNotificationEF/ETP/url] as [Место подачи заявки],
    [fcsNotificationEF/procedureInfo/collecting/order] as [Порядок подачи заявок],
    mid([fcsNotificationEF/procedureInfo/collecting/endDate],9,2)& ' ' & Month (mid([fcsNotificationEF/procedureInfo/collecting/endDate],1,10))& ' ' &mid([fcsNotificationEF/procedureInfo/collecting/endDate],1,4) as [Дата окончания подачи документов],
    [fcsNotificationEF/ETP/name] as [Площадка],
    [fcsNotificationEF/ETP/url] as [Адрес площадки],
    [fcsNotificationEF/placingWay/name] as [Тип закупки],
    Replace([fcsNotificationEF/lot/purchaseObjects/purchaseObject/OKPD/code],'.','_') as [ОКПД],
    [fcsNotificationEF/lot/purchaseObjects/purchaseObject/OKPD/name] as [Наименование ОКПД],
    [fcsNotificationEF/purchaseResponsible/responsibleInfo/contactEMail] as [EMail заказчика],
    [fcsNotificationEF/purchaseResponsible/responsibleInfo/contactPhone] as [Телефон заказчика],
    [fcsNotificationEF/purchaseResponsible/responsibleInfo/contactFax] as [Факс заказчика],
    [fcsNotificationEF/purchaseResponsible/responsibleInfo/contactPerson/lastName] as [Фамилия ОЛ],
    [fcsNotificationEF/purchaseResponsible/responsibleInfo/contactPerson/firstName] as [Имя ОЛ],
    [fcsNotificationEF/purchaseResponsible/responsibleInfo/contactPerson/middleName] as [Отчество ЛО],
    [fcsNotificationEF/purchaseResponsible/responsibleInfo/contactPerson/lastName]&' '&[fcsNotificationEF/purchaseResponsible/responsibleInfo/contactPerson/firstName]&' '&[fcsNotificationEF/purchaseResponsible/responsibleInfo/contactPerson/middleName] as [ФИО ответственного лица заказчика],
    [fcsNotificationEF/purchaseResponsible/responsibleOrg/fullName] as [Заказчик],
    [fcsNotificationEF/purchaseResponsible/responsibleOrg/postAddress] as [Почтовый адрес],
    [fcsNotificationEF/purchaseResponsible/responsibleOrg/factAddress] as [Фактический адрес],
    trim(subfield([fcsNotificationEF/purchaseResponsible/responsibleOrg/factAddress],',',3)) as [Область],
    trim(subfield([fcsNotificationEF/purchaseResponsible/responsibleOrg/factAddress],',',4)) as [Город],
    [fcsNotificationEF/purchaseResponsible/responsibleOrg/INN] as [ИНН заказчика],
    [fcsNotificationEF/purchaseResponsible/responsibleOrg/KPP] as [КПП заказчика],
    %Key_export_2C54E0F74D336CCA    // Key for this table: export
FROM [C:\Users\padij_000\Desktop\123\fcsNotificationEA44*.xml] (XmlSimple, Table is [export]);
// End of [аукцион.xml] LOAD statements


Так и не понял как это сделать с помощью Инкрементальной загрузки.

#4 Программирование QlikView » определенный текст из строки » 2015-04-05 00:39:39

padijvd
Ответов: 3

Добрый день!
Подскажите как можно в qlikview взять определенный текст из строки?
Нужно из адресов типа " Российская Федерация, 630007, Новосибирская обл, Новосибирск г, Колыванская, 104, - " взять только область в данном случае это "Новосибирская обл"

Подвал форума

Под управлением FluxBB
Модифицировал Visman

[ Сгенерировано за 0.008 сек, 9 запросов выполнено - Использовано памяти: 1.5 Мбайт (Пик: 1.62 Мбайт) ]