Comment Step Functions analyse les fichiers CSV d'entrée - AWS Step Functions

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Comment Step Functions analyse les fichiers CSV d'entrée

Gestion de l'état et transformation des données

Step Functions analyse les fichiers délimités par du texte selon les règles suivantes :

  • Le délimiteur qui sépare les champs est spécifié par CSVDelimiter in ReaderConfig. Le délimiteur est défini par défaut sur. COMMA

  • Les nouvelles lignes sont un séparateur qui sépare les enregistrements.

  • Les champs sont traités comme des chaînes. Pour les conversions de type de données, utilisez la fonction States.StringToJson intrinsèque dansItemSelector (Carte).

  • Les guillemets doubles (» «) ne sont pas obligatoires pour entourer les chaînes. Toutefois, les chaînes placées entre guillemets doubles peuvent contenir des virgules et des nouvelles lignes sans agir comme des délimiteurs d'enregistrement.

  • Vous pouvez conserver les guillemets doubles en les répétant.

  • Les barres obliques inverses (\) constituent un autre moyen d'échapper aux caractères spéciaux. Les barres obliques inverses ne fonctionnent qu'avec les autres barres obliques inverses, les guillemets doubles et le séparateur de champs configuré tel que la virgule ou le tube. Une barre oblique inverse suivie de tout autre caractère est supprimée silencieusement.

  • Vous pouvez conserver les barres obliques inverses en les répétant. Exemples :

    path,size C:\\Program Files\\MyApp.exe,6534512
  • Les barres obliques inverses qui échappent aux guillemets doubles (\") ne fonctionnent que lorsqu'elles sont incluses par paires. Nous vous recommandons donc d'éviter les guillemets doubles en les répétant :. ""

  • Si le nombre de champs d'une ligne est inférieur au nombre de champs de l'en-tête, Step Functions fournit des chaînes vides pour les valeurs manquantes.

  • Si le nombre de champs d'une ligne est supérieur au nombre de champs de l'en-tête, Step Functions ignore les champs supplémentaires.

Exemple d'analyse d'un fichier CSV d'entrée

Supposons que vous ayez fourni un fichier CSV nommé myCSVInput.csv contenant une ligne en entrée. Vous avez ensuite stocké ce fichier dans un compartiment Amazon S3 nomméamzn-s3-demo-bucket. Le fichier CSV est le suivant.

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

La machine à états suivante lit ce fichier CSV et l'utilise ItemSelector (Carte) pour convertir les types de données de certains champs.

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

Lorsque vous exécutez cette machine à états, elle produit le résultat suivant.

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