Синтаксический анализатор CSV
В файле с разделенными запятыми значениями (CSV) табличные данные (числа и текст) сохраняются в виде неформатированного текста. CSV-файлы в ThingWorx анализируются и обрабатываются с помощью расширения синтаксического анализатора CSV ThingWorx. Это позволяет импортировать и сохранять данные CSV-файла в ThingWorx или просто обрабатывать его как хранилище данных и извлекать дополнительные значения из данных CSV. Чтобы использовать расширение синтаксического анализатора CSV, загрузите и импортируйте файл CSVParser_Extensions.zip в ThingWorx. Этот пакет ThingWorx импортирует следующее:
• Ресурс CSVParserFunctions
|
Рекомендуется использовать файлы импорта в кодировке UTF-8.
|
|
Расширение синтаксического анализатора CSV доступно на сайте
support.ptc.com в разделе Download Software > Order or Download Software Updates > ThingWorx Foundation > Release <последняя версия> > ThingWorx CSV Parser > Most Recent Datecode > CSV-Parser-Extensions.
|
Сервисы
Функция синтаксического анализатора CSV размещается на вкладке "Фрагменты" сервисов со следующими сервисами:
• GetCSVFile - этот сервис анализирует CSV-файл из запроса HTTP GET (выходным результатом является таблица данных). Он имеет следующие конфигурируемые параметры:
◦ header (заголовки Http)
◦ fieldDelimiter (разделитель полей)
◦ ignoreSSLErrors (игнорировать ошибки сертификации SSL)
◦ columnMappings (сопоставления столбцов)
◦ hasHeader (CSV-файл имеет строку заголовка)
◦ latitudeField (индекс поля "Широта")
◦ password (пароль URL)
◦ url (URL)
◦ longitudeField (индекс поля "Долгота")
◦ username (имя пользователя URL)
◦ stringDelimiter (разделитель строковых значений)
◦ dateFormat (формат даты и времени)
◦ dataShape (структура данных)
◦ timeout (дополнительное время ожидания в секундах)
• GetOrderedFieldOutput - этот сервис возвращает список экспорта данных (выходным результатом является таблица данных). Он имеет следующие конфигурируемые параметры:
◦ orderedFieldList (таблица данных для использования в качестве источника)
◦ inputInfotable (упорядоченный CSV-список полей, которые будут возвращены из входной таблицы)
• ParseCSVFile -
этот сервис анализирует CSV-файл из текста (выходным результатом является таблица данных). Он имеет следующие конфигурируемые параметры:
◦ content (содержимое)
◦ fieldDelimiter (разделитель полей)
◦ columnMappings (сопоставления столбцов)
◦ hasHeader (файл имеет строку заголовка)
◦ latitudeField (индекс поля "Широта")
◦ longitudeField (индекс поля "Долгота")
◦ stringDelimiter (разделитель строковых значений)
◦ dateFormat (формат даты и времени)
◦ dataShape (структура данных)
• ReadCSVFile - этот сервис анализирует CSV-файл из репозитория (выходным результатом является таблица данных). Он имеет следующие конфигурируемые параметры:
◦ path (путь к файлу)
◦ fieldDelimiter (разделитель полей)
◦ columnMappings (сопоставления столбцов)
◦ hasHeader (файл имеет строку заголовка),
◦ latitudeField (индекс поля "Широта")
◦ longitudeField (индекс поля "Долгота")
◦ stringDelimiter (разделитель строковых значений)
◦ dateFormat (формат даты и времени)
◦ dataShape (структура данных)
• WriteCSVFile - этот сервис записывает CSV-файл в репозиторий. Он имеет следующие конфигурируемые параметры:
◦ data (данные таблицы данных)
◦ path (путь к файлу)
◦ fileRepository (наименование репозитория файлов)
◦ withHeader (использовать заголовки для имен столбцов)
Пример. ReadCSV
В следующем примере структура данных определена как ds1 с двумя строковыми полями.
var params = {
path: "test5.csv" /* STRING */,
columnMappings: undefined /* STRING */,
hasHeader: undefined /* BOOLEAN */,
longitudeField: undefined /* NUMBER */,
dateFormat: undefined /* STRING */,
fileRepository: "SystemRepository" /* THINGNAME */,
latitudeField: undefined /* NUMBER */,
fieldDelimiter: undefined /* STRING */,
stringDelimiter: undefined /* STRING */,
dataShape: "ds1" /* DATASHAPENAME */
};
// result: INFOTABLE
var result = Resources["CSVParserFunctions"].ReadCSVFile(params);
Пример. WriteCSV
var params = {
infoTableName : "InfoTable",
dataShapeName : "ds1"
};
// CreateInfoTableFromDataShape(infoTableName:STRING("InfoTable"), dataShapeName:STRING):INFOTABLE(ds1)
var result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);
var newRow = new Object();
newRow.firstfield = "FirstFieldValue";
newRow.secondfield = "SecondFieldValue";
//infotable1Object.rows[0] = newRow;
result.AddRow(newRow);
var params2 = {
path: "test4.csv" /* STRING */,
data: result /* INFOTABLE */,
fileRepository: "SystemRepository" /* THINGNAME */,
withHeader: undefined /* BOOLEAN */
};
// no return
var result = Resources["CSVParserFunctions"].WriteCSVFile(params2);