Analizador CSV
En un fichero de valores separados por comas (CSV) se almacenan datos tabulares (números y texto) en formato de texto sin formato. Con la extensión CSV Parser de ThingWorx, analice y manipule los ficheros CSV en ThingWorx. De este modo, se pueden importar datos CSV y almacenarlos en ThingWorx o bien se puede tratar simplemente como almacén de datos y extraer valor adicional de los datos CSV. Para utilizar la extensión CSV Parser, descargue e importe CSVParser_Extensions.zip a ThingWorx. El paquete permite importar lo siguiente a ThingWorx:
Recurso CSVParserFunctions
* 
Se recomienda que los ficheros de importación estén codificados en UTF-8.
* 
La extensión CSV Parser está disponible en support.ptc.com en Descargar software > Pedir o descargar actualizaciones de software > ThingWorx Foundation > Versión <versión más reciente> > ThingWorx CSV Parser > Most Recent Datecode > CSV-Parser-Extensions.
Servicios
La funcionalidad del analizador CSV se encuentra en la ficha Fragmentos de servicios con los siguientes servicios:
GetCSVFile: este servicio analiza un fichero CSV de una solicitud HTTP GET (el resultado de salida es una infotable). Tiene los siguientes parámetros configurables:
header (cabeceras HTTP)
fieldDelimiter (delimitador de campo)
ignoreSSLErrors (desestimar los errores de la certificación SSL)
columnMappings (asignaciones de columna)
hasHeader (el fichero CSV tiene una fila de cabecera)
latitudeField (índice de campo de latitud)
password (contraseña de URL)
url (URL)
longitudeField (índice de campo de longitud)
username (nombre de usuario de URL)
stringDelimiter (delimitador de valor de la cadena)
dateFormat (formato de fecha y hora)
dataShape (definición de datos)
timeout (tiempo de espera opcional en segundos)
GetOrderedFieldOutput: este servicio devuelve una lista de exportaciones de datos (el resultado de salida es una infotable). Tiene los siguientes parámetros configurables:
orderedFieldList (la infotable que se debe utilizar como origen)
inputInfotable (una lista CSV ordenada de los campos que se deben devolver de la tabla de entrada)
ParseCSVFile:
este servicio analiza un fichero CSV de texto (el resultado de salida es una infotable). Tiene los siguientes parámetros configurables:
content (contenido)
fieldDelimiter (delimitador de campo)
columnMappings (asignaciones de columna)
hasHeader (el fichero tiene una fila de cabecera)
latitudeField (índice de campo de latitud)
longitudeField (índice de campo de longitud)
stringDelimiter (delimitador de valor de la cadena)
dateFormat (formato de fecha y hora)
dataShape (definición de datos)
ReadCSVFile: este servicio analiza un fichero CSV de un almacén (el resultado de salida es una infotable). Tiene los siguientes parámetros configurables:
path (ruta del fichero)
fieldDelimiter (delimitador de campo)
columnMappings (asignaciones de columna)
hasHeader (el fichero tiene una fila de cabecera)
latitudeField (índice de campo de latitud)
longitudeField (índice de campo de longitud)
stringDelimiter (delimitador de valor de la cadena)
dateFormat (formato de fecha y hora)
dataShape (definición de datos)
WriteCSVFile: este servicio escribe un fichero CSV en un almacén. Tiene los siguientes parámetros configurables:
data (datos de la infotable)
path (ruta del fichero)
fileRepository (nombre de almacén de ficheros)
withHeader (usar cabeceras para nombres de columna)
Ejemplo: ReadCSV
En el siguiente ejemplo, la definición de datos se define como ds1 con dos campos de cadena.
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);