Множественный импорт файлов

Аналитики часто сталкиваются с задачей объединения данных из разных таблиц перед началом работы. При импорте данных в Loginom из базы данных это легко сделать с помощью одного SQL-запроса. Но что делать, если все отчеты хранятся, например, в отдельных csv-файлах? Настройка узлов импорта под каждый файл может занять длительное время. В данном примере показано, как легко можно решить эту проблему.

Примечание: Демопример имеет ограничение демонстрации всех возможностей при запуске на демостенде (Запустить демо). Рекомендуем установить пример локально.

Запустить демо

Установить локально

Требования

Для работы алгоритма необходимо выполнить следующие условия:

  • все импортируемые файлы должны лежать в одной папке, быть одного формата и структуры
  • в параметрах Администрирования должна быть разрешена работа узла Выполнение программы (в настольных редакциях она разрешена по умолчанию)

Описание алгоритма

1.Генерирование файла со списком путей к импортируемым файлам

На первом шаге создается файл со списком путей к файлам, которые нужно импортировать.

а) Установка значений переменных

Если нужно, на входном порту переменных подмодели Список путей к файлам измените значения переменных Путь к папке, Маска файлов и Имя файла со списком имен файлов. Если демопример запускается в облаке, то путь должен быть относительный, если на локальном компьютере — абсолютный.

Имя Метка Описание
 folder  Путь к папке Например, ./../Sales/2021 (относительный путь) или C:\ProgramData\BaseGroup\Loginom 6\Server\UserStorage\user\Sales\2021 (абсолютный)
 mask  Маска файлов Маска, по которой идёт отбор файлов. *.csv — означает все файлы с расширением .csv
б) Генерирование файла со списком путей к файлам

В подмодели Список путей к файлам в узле Формирование команды создается команда для ОС Windows, с помощью которой можно получить список имен файлов для импорта:

Format("cmd /c dir ""%s""\""%s""/b/a:-d > ""%s""", folder, mask, "filename.txt")

В этом выражении присутствуют переменные с именами folder и mask, которые были настроены на предыдущем шаге.

Далее в узле Список файлов происходит выполнение этой команды и создание файла со списком имен файлов, из которых впоследствии будут сформированы пути к файлам.

в) Импорт списка файлов filename.txt

В узле Импорт списка файлов из файла filename.txt загружаются имена файлов для импорта.

г) Формирование полных путей к файлам

В узле Путь к файлу происходит формирование полных путей к файлам.

2. Импорт и объединение файлов

Узлы, с помощью которых происходит импорт и объединение файлов, свернуты в подмодель Множественный импорт, расположенную на первом уровне сценария.

а) Настройка входного поля

Для работы этой подмодели укажите поле с путями импортируемых файлов. В демопримере это поле называется Путь к файлу.

б) Импорт файла

Импорт отдельного файла происходит в подмодели Импорт файла. В эту подмодель попадают пути файлов в виде табличных данных, где отдельная запись — это адрес файла. Далее эта подмодель будет выполняться в Цикле, что и обеспечит возможность подключить все файлы из списка.

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

Импорт из текстового файла
Рисунок 1. Импорт из текстового файла

На следующем шаге, если изменилась структура импортируемых файлов, нажмите кнопку Обновить всё.

в) Групповая обработка в цикле

Чтобы многократно выполнить подмодель Импорт файла нужно поместить её в цикл.

На первом шаге настройки узла Цикл подмодель Импорт файла выбрана в качестве объекта повторения. На втором шаге установлены следующие параметры:

  • Вид циклаГрупповая обработка
  • Вид групповой обработкиРазбиение по уникальным значениям полей
  • Входной портСписок файлов
  • выставлен флаг рядом с полем Путь к файлу, по которому выполняется групповая обработка
Настройка цикла
Рисунок 2. Настройка цикла
г) Получение результата

Если перейти на первый уровень сценария и выполнить подмодель Множественный импорт, то на выходе мы получим объединённый набор данных из наших файлов. Набор будет дополнен двумя колонками:

  • Идентификатор итерации (отображение идентификатора можно задать в настройках Цикла);
  • Имя файла.

Пример результирующего набора.

Результирующий набор
Рисунок 3. Результирующий набор

Создание производного компонента

Скачайте и откройте файл в Loginom. При необходимости Loginom CE можно скачать бесплатно

Скачать демопример

Минимальные требования к системе:

  • Операционная система: Windows 7 и выше.
  • Процессор x86: 1 core.
  • Оперативная память: 1 GB.
  • Жесткий диск: 10 GB.

Результаты поиска по запросу «» ()

    Нет результатов поиска по запросу ""