загрузка динамически изменяемого кол-ва полей

Автор destro_ker, января 14, 2019, 05:18:20 pm

« предыдущая - следующая »

destro_ker

источник exсel файл
в нем первые два поля постоянные, остальные добавляются периодически и таблица в экселе растет в ширину
как загрузку такого дела запилить в автоматизацию?

admin

Привет.
Сложно, но можно.
Если нет вариантов по изменению этого процесса, стоит хотя бы договориться о неизменной строке, по которой можно будет судить о степени заполненности таблицы чтобы потом "колдовать" алгоритмом.
Либо просто грузить все по звездочке и уже разбираться с загруженным массивом.

destro_ker

А можно как-то загрузить определенное кол-во столбцов из источника?
Т.е. надо не load * и не явно указывать поля, а load first $(CountField) field
Просто щас нашел закономерность в структуре источника и стало понятно сколько нужно загружать полей
Это количество всегда естественно разное, но это значение понятно как рассчитать

Валерий

Привет!
Первые 2 поля постоянные... Я так понимаю, что-то вроде сводной таблицы, которая увеличивается вправо. А CrossTable не подходит?

destro_ker

Цитата: Валерий от января 15, 2019, 04:23:02 pm
Привет!
Первые 2 поля постоянные... Я так понимаю, что-то вроде сводной таблицы, которая увеличивается вправо. А CrossTable не подходит?

перед кросстэйблом надо понимать сколько полей загружать)

вопрос решил: Transpose() шапки, склеить поля в строку, потом load $(склееннаяшапка)

Иван

Нужно написать парсер, направление мысли можно посмотреть в статье https://qliksense.ivan-shamaev.ru/kak-rasparsit-fajl-excel-v-qlik-sense-po-polyam/
Суть: загружаются названия колонок, дальше склеивается так, как нужно. Пример приведен более сложный, но "как начать делать" можно глянуть.

Chernov

Эм... а зачем всё так усложнять, вспоминаем мат.часть : xls*-файлы, это архивы, изначально.
Что нужно сделать перед загрузкой, распаковать архив, и заглянуть в xl\worksheets\ - там лежат xml-файлы со всеми нужными нам данными.
Название файла - это название листа в Excel, далее в самом файле - парсим названия колонок и далее формируем скрипт загрузки данных из него...

Иван

Цитата: Chernov от января 15, 2019, 08:44:32 pm
Эм... а зачем всё так усложнять, вспоминаем мат.часть : xls*-файлы, это архивы, изначально.
Что нужно сделать перед загрузкой, распаковать архив, и заглянуть в xl\worksheets\ - там лежат xml-файлы со всеми нужными нам данными.
Название файла - это название листа в Excel, далее в самом файле - парсим названия колонок и далее формируем скрипт загрузки данных из него...


Ну мы же должны автоматизацией заниматься. Разархивировать вручную - не очень подходящий вариант.
Есть вариант установить odbc драйвер и подключиться к Excel и забрать из свойства листа название колонок. В моем случае был специфический пример, когда нужно к названию колонки префикс добавить (т.е. название колонки состоит из 2х строчек, причем 1я строка - объединенная ячейка). А пример привел сложный, т.к. просто был)

Chernov

января 16, 2019, 08:12:08 am #8 Последнее редактирование: января 16, 2019, 09:01:32 am от admin
Цитата: Иван от января 16, 2019, 12:10:01 am
Цитата: Chernov от января 15, 2019, 08:44:32 pm
Эм... а зачем всё так усложнять, вспоминаем мат.часть : xls*-файлы, это архивы, изначально.
Что нужно сделать перед загрузкой, распаковать архив, и заглянуть в xl\worksheets\ - там лежат xml-файлы со всеми нужными нам данными.
Название файла - это название листа в Excel, далее в самом файле - парсим названия колонок и далее формируем скрипт загрузки данных из него...


Ну мы же должны автоматизацией заниматься. Разархивировать вручную - не очень подходящий вариант.
Есть вариант установить odbc драйвер и подключиться к Excel и забрать из свойства листа название колонок. В моем случае был специфический пример, когда нужно к названию колонки префикс добавить (т.е. название колонки состоит из 2х строчек, причем 1я строка - объединенная ячейка). А пример привел сложный, т.к. просто был)


Но, есть Execute.... https://help.qlik.com/en-US/sense/November2018/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Execute.htm