Все ноды/Data/DataFrame I/O
Записать CSV
Записывает DataFrame в CSV-файл подключённого file_store. Перезаписывает целевой файл при существовании.
Тип в графе: df_write_csv
Exec
Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.
Порты можно разделить на исполнение и данные (split ports).
Как попробовать
Минимальный рабочий воркфлоу
- Исполнение + данные
Запускается сразу
Как применять
Сохраняет таблицу в CSV-файл хранилища. Соседняя нода Запись файла пишет текст и умеет заменять отдельные строки; здесь текст собирается за вас из таблицы — разделитель, кодировка, строка заголовка — и файл всегда переписывается целиком.
CSV выбирают, когда файл будут читать машиной или переливать в другую систему. Если файл откроет человек в Excel, посмотрите на Записать XLSX: там не возникает вопросов кодировки и разделителя.
Как это работает
Порт «DataFrame» приносит и запуск, и данные: отдельного входа выполнения у ноды нет. Если момент записи должна задавать другая ветка, включите «Разделить входные порты» — появятся отдельные ноги для выполнения и для значения.
На вход годится не только таблица: список объектов (JSON-записи) и CSV-текст нода разберёт сама, поэтому конвертер перед записью нужен не всегда.
Путь — шаблон: reports/{{ variables.session_id }}.csv даёт по файлу на сессию. На выходе —
path, bytes_written и rows_written (строки данных, без заголовка).
Частые ошибки
- Ожидание дописывания. Режима «добавить в конец» нет: каждый запуск переписывает файл целиком. Историю делают путём с датой или идентификатором сессии.
- Папки на WebDAV нет. В хранилище воркспейса недостающие папки создаются сами, на WebDAV —
нет: запись в
reports/2026/x.csvне пройдёт, пока каталога не существует. - Кириллица и эмодзи в cp1251. Символ, которого нет в кодировке, роняет шаг на кодировании, и повтор тут не помогает. Для файла, который будут открывать двойным кликом в Excel, берите «UTF-8 с BOM».
- Пустая таблица. Пустой результат — не ошибка: получится файл с одним заголовком и
rows_written: 0. Если пустой отчёт бессмысленен, проверяйте это выше по графу.
Входы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
DataFramedf | Исполнение + данныеexecute_data | dataframe | |
File storefile_store | Данныеdata | — | показывается, когда connection_source ≠ "auto" |
Выходы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Successoutput | Исполнение + данныеexecute_data | object | |
Erroron_error | Исполнение + данныеexecute_data | — | показывается, когда expose_error_output = true |
Настройки
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
Путь к файлуpath | string | "" | Путь относительно корня хранилища. Jinja-шаблоны рендерятся на каждом ране, поэтому ``reports/{{ variables.session_id }}.csv`` пишет отдельный файл на каждую сессию. поддерживает шаблоны |
Разделительdelimiter | string | , | Разделитель столбцов, обычно ``,`` или ``;``. |
Кодировка текстаencoding | string | utf-8 | Кодировка символов файла. Используйте utf-8-sig, если CSV должен корректно открываться в Excel, и cp1251 для устаревших кириллических выгрузок. Варианты: |
Включить строку заголовкаinclude_header | boolean | true | Записывать имена столбцов первой строкой. |
Источник подключенияconnection_source | string | auto | Откуда нода берёт подключение. «Из контекста рана» использует то, что платформа уже знает (Telegram-бот, в который задеплоен этот воркфлоу / собственное файловое хранилище этого воркспейса), и не требует проводов. «Внешнее подключение» показывает ресурсный порт, чтобы в него можно было подключить конфиг-ноду. Варианты: |
Подпапкаstore_subfolder | string | "" | Необязательная папка внутри стора этого воркспейса, которую считать корнем, напр. `reports` или `sessions/{{ variables.session_id }}`. Пусто = корень стора. поддерживает шаблоны показывается при connection_source = auto |
| Дополнительно | |||
Макс. байтmax_bytes | integer | 52428800 | Не передавать больше указанного числа байт. |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
expose_error_output— Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.split_ports_in— Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.split_ports_out— Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.