Cómo analiza Step Functions los archivos de entrada CSV - AWS Step Functions

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Cómo analiza Step Functions los archivos de entrada CSV

Step Functions analiza CSV los archivos según las siguientes reglas:

  • Las comas (,) son un delimitador que separa los campos.

  • Las líneas nuevas son un delimitador que separa los registros.

  • Los campos se tratan como cadenas. Para las conversiones de tipos de datos, utilice la función intrínseca States.StringToJson en ItemSelector (Mapa).

  • No se requieren comillas dobles (» «) para encerrar cadenas. Sin embargo, las cadenas entre comillas dobles pueden contener comas y líneas nuevas sin que actúen como delimitadores de registro.

  • Puede conservar las comillas dobles repitiéndolas.

  • Si el número de campos de una fila es inferior al número de campos del encabezado, Step Functions proporciona cadenas vacías para los valores faltantes.

  • Si el número de campos de una fila es mayor que el número de campos del encabezado, Step Functions omite los campos adicionales.

ejemplo
de analizar un archivo de entrada CSV

Supongamos que ha proporcionado un CSV archivo con un nombre myCSVInput.csv que contiene una fila como entrada. A continuación, ha almacenado este archivo en un bucket de Amazon S3 denominado amzn-s3-demo-bucket. El CSV archivo es el siguiente.

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

La siguiente máquina de estados lee este CSV archivo y lo utiliza ItemSelector (Mapa) para convertir los tipos de datos de algunos de los campos.

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

Cuando ejecuta esta máquina de estado, produce el siguiente resultado.

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