So analysiert Step Functions Eingabedateien CSV - AWS Step Functions

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

So analysiert Step Functions Eingabedateien CSV

Step Functions analysiert CSV Dateien auf der Grundlage der folgenden Regeln:

  • Kommas (,) sind ein Trennzeichen, das Felder voneinander trennt.

  • Zeilenumbrüche sind ein Trennzeichen, das Datensätze voneinander trennt.

  • Felder werden als Zeichenketten behandelt. Verwenden Sie für Datentypkonvertierungen die States.StringToJson systeminterne Funktion in. ItemSelector (Karte)

  • Doppelte Anführungszeichen (“ „) sind nicht erforderlich, um Zeichenketten einzuschließen. Zeichenfolgen, die in doppelte Anführungszeichen eingeschlossen sind, können jedoch Kommas und Zeilenumbrüche enthalten, ohne als Datensatztrennzeichen zu dienen.

  • Sie können doppelte Anführungszeichen beibehalten, indem Sie sie wiederholen.

  • Wenn die Anzahl der Felder in einer Zeile geringer ist als die Anzahl der Felder in der Kopfzeile, stellt Step Functions leere Zeichenketten für die fehlenden Werte bereit.

  • Wenn die Anzahl der Felder in einer Zeile größer ist als die Anzahl der Felder in der Kopfzeile, überspringt Step Functions die zusätzlichen Felder.

Beispiel
des Analysierens einer Eingabedatei CSV

Angenommen, Sie haben eine CSV Datei mit dem Namen bereitgestelltmyCSVInput.csv, die eine Zeile als Eingabe enthält. Anschließend haben Sie diese Datei in einem Amazon S3 S3-Bucket mit dem Namen gespeichertamzn-s3-demo-bucket. Die CSV Datei sieht wie folgt aus.

abc,123,"This string contains commas, a double quotation marks (""), and a newline ( )",{""MyKey"":""MyValue""},"[1,2,3]"

Die folgende Zustandsmaschine liest diese CSV Datei und verwendet ItemSelector (Karte) sie, um die Datentypen einiger Felder zu konvertieren.

{ "StartAt": "Map", "States": { "Map": { "Type": "Map", "ItemProcessor": { "ProcessorConfig": { "Mode": "DISTRIBUTED", "ExecutionType": "STANDARD" }, "StartAt": "Pass", "States": { "Pass": { "Type": "Pass", "End": true } } }, "End": true, "Label": "Map", "MaxConcurrency": 1000, "ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "GIVEN", "CSVHeaders": [ "MyLetters", "MyNumbers", "MyString", "MyObject", "MyArray" ] }, "Parameters": { "Bucket": "amzn-s3-demo-bucket", "Key": "myCSVInput.csv" } }, "ItemSelector": { "MyLetters.$": "$$.Map.Item.Value.MyLetters", "MyNumbers.$": "States.StringToJson($$.Map.Item.Value.MyNumbers)", "MyString.$": "$$.Map.Item.Value.MyString", "MyObject.$": "States.StringToJson($$.Map.Item.Value.MyObject)", "MyArray.$": "States.StringToJson($$.Map.Item.Value.MyArray)" } } } }

Wenn Sie diesen Zustandsmaschine ausführen, erzeugt er die folgende Ausgabe.

[ { "MyNumbers": 123, "MyObject": { "MyKey": "MyValue" }, "MyString": "This string contains commas, a double quote (\"), and a newline (\n)", "MyLetters": "abc", "MyArray": [ 1, 2, 3 ] } ]