CSV-Parser
Eine Datei mit kommagetrennten Werten (Comma-Separated Values, CSV) speichert Tabellendaten (Zahlen und Text) als Klartext. Mit der ThingWorx CSV-Parser-Erweiterung können Sie CSV-Dateien in ThingWorx parsen und bearbeiten. Dies ermöglicht es Ihnen, CSV-Daten zu importieren und in ThingWorx zu speichern oder es als reinen Datenspeicher zu verwenden und einen Mehrwert aus den CSV-Daten zu extrahieren. Um die CSV-Parser-Erweiterung zu verwenden, laden Sie die CSVParser_Extensions.zip herunter, und importieren Sie sie in ThingWorx. Das Paket importiert Folgendes in ThingWorx:
Ressource "CSVParserFunctions"
* 
Es wird empfohlen Importdateien als UTF-8 zu codieren.
* 
Die CSV-Parser-Erweiterung ist auf der Seite support.ptc.com unter Software herunterladen > Software-Aktualisierungen bestellen oder herunterladen > ThingWorx Foundation > Release <neueste Version> > ThingWorx CSV Parser > Neuester Datumscode > CSV-Parser-Extensions verfügbar.
Dienste
Die CSV-Parser-Funktionalität ist in der Dienstregisterkarte "Ausschnitte" mit den folgenden Diensten vorhanden:
GetCSVFile: Dieser Dienst parst eine CSV-Datei aus einem HTTP GET (Ausgabeergebnis ist Infotable). Er hat die folgenden konfigurierbaren Parameter:
header (HTTP-Kopfzeilen)
fieldDelimiter (Feldtrennzeichen)
ignoreSSLErrors (SSL-Zertifizierungsfehler ignorieren)
columnMappings (Spaltenzuordnungen)
hasHeader (CSV-Datei mit Kopfzeile)
latitudeField (Breitengrad-Feldindex)
password (URL-Passwort)
url (URL)
longitudeField (Längengrad-Feldindex)
username (URL-Benutzername)
stringDelimiter (Zeichenfolgenwert-Trennzeichen)
dateFormat (Datums-/Zeitformat)
dataShape (Data Shape)
timeout (optionales Timeout in Sekunden)
GetOrderedFieldOutput: Dieser Dienst gibt eine Liste von Datenexporten zurück (Ausgabeergebnis ist Infotable). Er hat die folgenden konfigurierbaren Parameter:
orderedFieldList (als Quelle zu verwendende Infotable)
inputInfotable (geordnete CSV-Liste der Felder, die aus der Eingabetabelle zurückgegeben werden sollen)
ParseCSVFile:
Dieser Dienst parst eine CSV-Datei aus Text (Ausgabeergebnis ist Infotable). Er hat die folgenden konfigurierbaren Parameter:
content (Inhalt)
fieldDelimiter (Feldtrennzeichen)
columnMappings (Spaltenzuordnungen)
hasHeader (Datei mit Kopfzeile)
latitudeField (Breitengrad-Feldindex)
longitudeField (Längengrad-Feldindex)
stringDelimiter (Zeichenfolgenwert-Trennzeichen)
dateFormat (Datums-/Zeitformat)
dataShape (Data Shape)
ReadCSVFile: Dieser Dienst parst eine CSV-Datei aus einem Repository (Ausgabeergebnis ist Infotable). Er hat die folgenden konfigurierbaren Parameter:
path (Pfad zu Datei)
fieldDelimiter (Feldtrennzeichen)
columnMappings (Spaltenzuordnungen)
hasHeader (Datei mit Kopfzeile)
latitudeField (Breitengrad-Feldindex)
longitudeField (Längengrad-Feldindex)
stringDelimiter (Zeichenfolgenwert-Trennzeichen)
dateFormat (Datums-/Zeitformat)
dataShape (Data Shape)
WriteCSVFile: Dieser Dienst schreibt eine CSV-Datei in ein Repository. Er hat die folgenden konfigurierbaren Parameter:
data (Infotable-Daten)
path (Pfad zu Datei)
fileRepository (Datei-Repository-Name)
withHeader (Kopfzeilen für Spaltennamen verwenden)
Beispiel: ReadCSV
Im folgenden Beispiel ist das Data Shape als DS1 mit zwei Zeichenfolgenfeldern definiert.
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);