Как распарсить файл Excel в Qlik Sense по полям
Задача: Есть файл Excel, в котором название поля состоит из двух строк, причем в первой строке ячейки объединены. А во второй строке некоторые колонки одинаково названы. Нужно взять префикс из первой строки. В таблице 100 колонок.
// Загружаем название столбцов
[Название столбцов]:
First 2
LOAD *
FROM [lib://Проект Qlik Sense/Файл Excel c колонками.xlsm]
(ooxml, no labels, header is 3 lines, table is Данные);
Set пНазваниеБлока = '';
For i=1 to NoOfFields('Название столбцов')
Let пКодПоля = FieldName($(i),'Название столбцов');
Let пНазваниеБлока = if(not IsNull(Peek(FieldName($(i),'Название столбцов'),0,'Название столбцов')),Peek(FieldName($(i),'Название столбцов'),0,'Название столбцов'),'$(пНазваниеБлока)');
Let пНазваниеБлока = replace('$(пНазваниеБлока)','Общая часть','');
Let пНазваниеПоля = Peek(FieldName($(i),'Название столбцов'),1,'Название столбцов');
Let пСтрокаДляLoad = '[$(пКодПоля)] As ['&trim('$(пНазваниеБлока) $(пНазваниеПоля)')&']';
[Столбцы LOAD]:
Load '$(i)' As [Столбец ID],
'$(пКодПоля)' As [Код поля],
'$(пНазваниеБлока)' As [Название блока],
'$(пНазваниеПоля)' As [Название столбца для LOAD],
'$(пСтрокаДляLoad)' As [Строка Для Load]
AutoGenerate 1;
Next i
DROP Table [Название столбцов];
//Собираем поля в строку LOAD
NoConcatenate
[Строка Для Load]:
LOAD Concat([Строка Для Load],',',[Столбец ID]) as [Строка Для Load С Разделителем]
Resident [Столбцы LOAD]
;
Drop Table [Столбцы LOAD];
Let vLoadFromText = '
LOAD '&Peek('Строка Для Load С Разделителем',0,'Строка Для Load')&'
FROM [lib://Проект Qlik Sense/Файл Excel c колонками.xlsm]
(ooxml, no labels, header is 5 lines, table is Данные);
';
Данные:
$(vLoadFromText);