FAQ по выгрузке и подключению к источникам Qlik Sense/Qlik View часть 1

Q: Файл не прилагаю, ибо на работе закрыт доступ на передачу файлов во вне. Уже пробовал, не получилось вставить. Попробую нарисовать так.

Загрузка производится в QLIKVIEW.

Задача: Имеется Excel с 1 листом, на котором расположены одной структуры таблицы. Сейчас попробую изобразить их:

A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;AA;AB
;;Январь;;Февраль;;Март;;Апрель;;Май;;Июнь;;Июль;;Август;;Сентябрь;;Октябрь;;Ноябрь;;Декабрь;;2016;
Клиент;Продукт;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум
ИП Иванов;Помидоры;100;150;200;250;300;350;400;450;500;550;600;650;700;750;800;850;900;950;1000;1050;1100;1150;1200;1250;7800;8400
ООО Сигма;Бананы;10;15;20;25;30;35;40;45;50;55;60;65;70;75;80;85;90;95;100;105;110;115;120;125;780;840
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;Январь;;Февраль;;Март;;Апрель;;Май;;Июнь;;Июль;;Август;;Сентябрь;;Октябрь;;Ноябрь;;Декабрь;;2017;
Клиент;Продукт;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум;Кол;Сум
ИП Иванов;Помидоры;200;300;400;500;600;700;800;900;1000;1100;1200;1300;1400;1500;1600;1700;1800;1900;2000;2100;2200;2300;2400;2500;15600;16800
ООО Сигма;Бананы;20;30;40;50;60;70;80;90;100;110;120;130;140;150;160;170;180;190;200;210;220;230;240;250;1560;1680

Если скопировать в Excel, то вставляется нормально. Но надо разделить данные по колонкам, выделив столбец, далее вкладка Данные, выбираем Текст по столбцам и разделитель выбрать ‘;’.

Имеем:
— Первая строка — заголовки, наименования столбцов в Excel
— На каждый месяц 2 показателя (Количество и сумма).
— Каждая таблица — один год.
— В каждой таблице разное количество строк и наименования продуктов, как и клиентов могут не совпадать.
— Таких таблиц на листе > 20.
— Итоги по году, не нужны. Необходимо только значение года.

Необходимо объединить эти таблицы в одну с разбивкой по годам. Месяца обработать кросс таблицей и разбить их по показателям, т.е. получить вот что (На примере 16 года по помидорам):

Клиент Продукт Год Месяц Количество Сумма
ИП Иванов Помидоры 2015 Январь 100 150
ИП Иванов Помидоры 2015 Февраль 200 250
ИП Иванов Помидоры 2015 Март 300 350
ИП Иванов Помидоры 2015 Апрель 400 450
ИП Иванов Помидоры 2015 Май 500 550
ИП Иванов Помидоры 2015 Июнь 600 650
ИП Иванов Помидоры 2015 Июль 700 750
ИП Иванов Помидоры 2015 Август 800 850
ИП Иванов Помидоры 2015 Сентябрь 900 950
ИП Иванов Помидоры 2015 Октябрь 1000 1050
ИП Иванов Помидоры 2015 Ноябрь 1100 1150
ИП Иванов Помидоры 2015 Декабрь 1200 1250

Посоветуйте в какую сторону копать, пожалуйста. Возможно есть уже готовые решения, чтобы не изобретать велосипед.

A: Посмотри код:
Код: [Выделить]
// получаем сырой разворот
t1:
CrossTable(Поле, Данные, 3)
LOAD RowNo() as IdRow,
@1,
@2,
@3,
@4,
@5,
@6,
@7,
@8,
@9,
@10,
@11,
@12,
@13,
@14,
@15,
@16,
@17,
@18,
@19,
@20,
@21,
@22,
@23,
@24,
@25,
@26,
@27,
@28
FROM [ТестФорум.xls] (biff, no labels, table is Лист1$);

RENAME Field @1 to Клиент;
RENAME Field @2 to Продукт;

// Формируем поле Месяца
t2:
load Distinct Поле Resident t1
Order by Поле;
left join (t2)
load Поле, Данные As Месяц
resident t1
Where IdRow=1
Order by Поле;

t3:
NoConcatenate
load Поле, if(len(Месяц)>0,Месяц,peek(Месяц)) as Месяц
Resident t2
order by Поле;

DROP Table t2;

// Формируем поле Год
t4:
load only(Данные) as Год Resident t1 where WildMatch(Данные,’201*’) Group by Данные;
let vYear=Peek(‘Год’,0,’t4′);
DROP Table t4;

join (t3) load Distinct $(vYear) as Год Resident t3 ;
// Формируем поле Показатель
t5:
load Поле, Данные as Показатель Resident t1 where IdRow=2;

// Промежуточный результат
t11:
NoConcatenate load * Resident t1 where IdRow>2;
drop Table t1;
Left join (t11) load * Resident t5;
drop Table t5;
Left join (t11) load * Resident t3 Where not WildMatch(Месяц,’201*’) ;
drop Table t3;

Основная идея состоит в использовании номера колонки как ключа.

Q: Сейчас загрузка файлов происходит так
LOAD …
FROM [C:\Users\CALL_LOG\*.csv] (txt, utf8, embedded labels, delimiter is ‘;’, msq);

Надо сделать ее более изощренной. Загружать из директории только 40 последних файлов. Как это сделать подскажите?

A: Надо загрузить файлы выборочно? Следовательно перед этим необходимо составить список файлов, (поищите dodir() в хелпе).
Только 40 последних? По какому критерию? Наверняка по времени сохранения файла.
Следовательно в список файлов надо будет включить поле с временной меткой и из этого списка взять 40 по убывающей сортировке.
Затем циклом перебрать список и загрузить.

Q: Только изучаю qlikview и интересно кто как вытягивает данные с mongodb ? Все, что есть в интернете — платные модули, которые смысла нет покупать, пока происходит обучение. И как вообще делают коннектора для qlik?

A: Информация по SDK
Пример разработки коннектора к 1с.

Q: Кто-нибудь практиковал импортировать в QV выписку из клиент-банка, формат 1С (что б ему не ладно было)?
Напомню, что файл-обмена — текст в таком виде:

1CClientBankExchange
ВерсияФормата=1.01
Кодировка=Windows
Получатель=
ДатаНачала=30.12.2014
ДатаКонца=30.12.2014
РасчСчет=55555555555555555555
СекцияРасчСчет
ДатаНачала=30.12.2014
ДатаКонца=30.12.2014
РасчСчет=55555555555555555555
НачальныйОстаток=11968773.05
ВсегоПоступило=19268846.06
ВсегоСписано=26786719.00
КонечныйОстаток=4450900.11
КонецРасчСчет
СекцияДокумент=Платежное требование
Номер=2127
Дата=30.12.2014
Сумма=32.00
ПлательщикСчет=55555555555555555555
ДатаСписано=30.12.2014
ПлательщикИНН=4444444444
ПлательщикКПП=
Плательщик1= Общество с ограниченной ответственностью «Ромашка»
ПлательщикРасчСчет=55555555555555555555
ПлательщикБанк1=Б ОАО БАНК ВТБ
ПлательщикБанк2=Г МОСКВА
ПлательщикБИК=044525187
ПлательщикКорсчет=30101810700000000187
ПолучательСчет=77777777777777777777
ПолучательИНН=7702070139
ПолучательКПП=
Получатель1= Банк ВТБ (открытое акционерное общество)
ПолучательРасчСчет=77777777777777777777
ПолучательБанк1=Б ОАО БАНК ВТБ
ПолучательБанк2=Г МОСКВА
ПолучательБИК=044525187
ПолучательКорсчет=30101810700000000187
ВидПлатежа=электронно
ВидОплаты=02
СтатусСоставителя=
ПоказательКБК=
ОКАТО=
ПоказательОснования=
ПоказательПериода=
ПоказательНомера=
ПоказательДаты=
ПоказательТипа=
СрокПлатежа=30.12.2014
Очередность=
НазначениеПлатежа=Вознаграждение по документу №2127 о
КонецДокумента

A: Грузил из таблиц Excel данные с различной структурой.
Несколько ступеней преобразования и можно получить выписку в виде таблицы с полями по структуре выписки.
А не проще будет загнать выписку в 1с и взять оттуда?
если выписка обрабатывается в 1С, то так будет проще.
Если нет, то можно и в скрипте сделать загрузку.
Примерный ход действий — загрузить как текст с номерами строк, разбить строку на поле, значение и развернуть в таблицу.

Q: Подскажите как можно в скрипте QlikView прочитать содержащиеся в xml файла таблицы (имена таблиц) и записать их в переменную?
Допустим есть xml файл с тремя таблицами Таблица 1, Таблица 2, Таблица 3…
Нужно вовремя выполнения скрипта создать Переменную 1 = ‘Таблица 1’, Переменную 2 = ‘Таблица 2’ и Переменную 3 = ‘Таблица 3’

A:если исходить из того, что XML- всего лишь формат в текстовом файле, можно прочитать его построчно и таким образом вытащить необходимые сведения.


Q: Каждый день выгружаются одни и те же отчеты, хотелось бы автоматизировать процесс.

1. Возможно ли подключиться к OLE кубу QV через Excel через вкладку данные подключение к внешним источникам?
2. Если в QV есть возможность отправить отчет из QV по почте, то означает ли это что есть возможность настроить выгрузку отчета в определенную папку на ПК и без моего участия? Как проверить есть ли такая возможность, как это делается?

A: Откуда выгружаются отчеты?
QV — не куб, у него нет своей БД в привычном понимании. Т.е. к нему подключиться через OLE невозмжно.
Приложения на Qlik сами забирают данные из различных источников.

По второму вопросу.. На ютубе много роликов на эту тему.
Какие отчеты, в каком формате вы ожидаете получить от Qlikview?

Q: Подскажите пожалуйста, как обратиться к файлу Excel при помощи Qlik Sense Desktop, если он размещен на удаленном рабочем столе?

A: Создайте в подключении папку, и пропишите путь \\192.168.1.40\public\
Либо подключите папку как диск и обращайтесь как к диску.
На выбор через меню не надейтесь, просто пропишите путь и все будет ОК.

Найти решение у бизнес-партнера QlikTech (QlikView) в России.

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

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

64 queries in 0,202 seconds