Есть файл с разделителями. Пример строки:
20180828,EVENT,3,ValName1=1,ValName2=2,ValName3=3
20180828,EVENT,3,ValName1=11,ValName3=33,ValName2=22
20180828,EVENT,3,ValName3=333,ValName1=111,ValName2=222
Проблема в том что поля могут находится в разных колонках, если поделить по разделителю.
То есть файл надо разбирать построчно, получая всю строку, а потом по именам параметров получать значения. Не пойму как это реализовать в Клик Сенсе. При загрузке строка уже раскладывается по колонкам.
Читать в цикле файл построчно? Думаю это будет ооочень долго на всех данных.
Привет.
Я так понимаю, что первые два столбца фиксированы?
Рассматривайте переменную часть как набор полей в одном поле.
При считывании файла мы можем эти колонки объединить в одну, с последующей обработкой для создания полей по части поля до знака =.
https://help.qlik.com/ru-RU/qlikview/November2017/Subsystems/Client/Content/DataSource/generic-databases.htm (https://help.qlik.com/ru-RU/qlikview/November2017/Subsystems/Client/Content/DataSource/generic-databases.htm)
Единственное что пришло в голову. Собирать все поля в промежуточную таблицу и потом уже обрабатывать как надо
Load
@1&@2&@3&@4&@5&@6&@7&@8&@9&@10&@11&@12&@13&@14 as TextData
From [$(FullPathFile)]
Цитата: andrrreasss от 29 августа 2018, 11:08:30
Единственное что пришло в голову. Собирать все поля в промежуточную таблицу и потом уже обрабатывать как надо
Load
@1&@2&@3&@4&@5&@6&@7&@8&@9&@10&@11&@12&@13&@14 as TextData
From [$(FullPathFile)]
Вот например:
$(Include=..\qlikview-components-master\qvc_runtime\qvc.qvs);
t1:
load IdR,F1,F2,F3,SubField(F9,'=',1) as F10,SubField(F9,'=',2) as F11;
load *,SubField(F8,'~') as F9;
LOAD RecNo() as IdR, F1,F2,F3, F5&'~'&F6&'~'&F7 as F8 INLINE [
F1,F2,F3,F5,F6,F7
20180828,EVENT,3,ValName1=1,ValName2=2,ValName3=3
20180828,EVENT,3,ValName1=11,ValName3=33,ValName2=22
20180828,EVENT,3,ValName3=333,ValName1=111,ValName2=222
];
t2:
generic LOAD IdR,F1,F2,F3,F10,F11 Resident t1;
CALL Qvc.JoinGenericTables('t1', 't2');
Или так траспонировать полезные данные и использовать потом сет анализ при визуализации аля:
sum({<Показатель={ValName1}>}Значение)
(вопрос с объемами конечно за кадром... но вариант...)
temp:
LOAD @1,
@2,
@3,
@4,
@5,
@6
FROM
[D:\1.txt]
(txt, codepage is 1251, no labels, delimiter is ',', msq);
for each r in 'ValName1','ValName2','ValName3'
result:
load
date(date#(@1,'YYYYMMDD'),'DD.MM.YYYY') as Field1,
@2 as Field2,
@3 as Field3,
'$(r)' as Показатель,
TextBetween(@4&'|'&@5&'|'&@6&'|','$(r)=','|') as Значение
Resident temp;
next r;
drop table temp;