Come Step Functions analizza i file di input CSV - AWS Step Functions

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Come Step Functions analizza i file di input CSV

Gestione dello stato e trasformazione dei dati

Step Functions ha recentemente aggiunto variabili e JSONata per gestire lo stato e trasformare i dati.

Scopri come passare dati con variabili e trasformare dati con JSONata.

Step Functions analizza CSV i file in base alle seguenti regole:

  • Le virgole (,) sono un delimitatore che separa i campi.

  • Le newline sono un delimitatore che separa i record.

  • I campi vengono trattati come stringhe. Per le conversioni dei tipi di dati, usa la funzione States.StringToJson intrinseca in. ItemSelector (Mappa)

  • Le virgolette doppie (» «) non sono necessarie per racchiudere stringhe. Tuttavia, le stringhe racchiuse tra virgolette doppie possono contenere virgole e nuove righe senza fungere da delimitatori di record.

  • È possibile conservare le virgolette doppie ripetendole.

  • Se il numero di campi in una riga è inferiore al numero di campi nell'intestazione, Step Functions fornisce stringhe vuote per i valori mancanti.

  • Se il numero di campi in una riga è superiore al numero di campi nell'intestazione, Step Functions salta i campi aggiuntivi.

Esempio
di analizzare un file di input CSV

Supponiamo che tu abbia fornito un CSV file denominato myCSVInput.csv che contiene una riga come input. Quindi, hai archiviato questo file in un bucket Amazon S3 denominato. amzn-s3-demo-bucket Il CSV file è il seguente.

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

La seguente macchina a stati legge questo CSV file e lo utilizza ItemSelector (Mappa) per convertire i tipi di dati di alcuni campi.

{ "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)" } } } }

Quando si esegue questa macchina a stati, produce il seguente output.

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