Cómo analiza Step Functions los archivos CSV de entrada
Administración del estado y transformación de los datos
Obtenga información sobre la Transmisión de datos entre estados con variables y la Transformación de datos con JSONata.
Step Functions analiza los archivos delimitados por texto según las siguientes reglas:
-
El delimitador que separa los campos lo especifica
CSVDelimiteren ReaderConfig. El valor predeterminado del delimitador esCOMMA. -
Los retornos de carro 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.StringToJsonen ItemSelector (Map). -
No es necesario incluir comillas dobles (" ") para delimitar cadenas. No obstante, las cadenas entre comillas dobles pueden contener comas y retornos de carro sin que funcionen como delimitadores de registro.
-
Para conservar las comillas dobles en una secuencia de conservación, repítalas.
-
Las barras diagonales invertidas (\) son otra forma de evitar los caracteres especiales. Las barras diagonales invertidas solo funcionan con otras barras diagonales invertidas, comillas dobles y el separador de campos configurado, como una coma o una barra vertical. La barra diagonal invertida seguida de cualquier otro carácter se elimina en silencio.
-
Para conservar las barras diagonales invertidas repitiéndolas. Por ejemplo:
path,size C:\\Program Files\\MyApp.exe,6534512 -
Las barras diagonales invertidas que evitan las comillas dobles (
\") solo funcionan cuando se incluyen en pares, por lo que recomendamos evitar 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 que faltan.
-
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 análisis de un archivo CSV de entrada
Supongamos que ha proporcionado un archivo CSV denominado que contiene una fila como entrada. A continuación, ha almacenado este archivo en un bucket de Amazon S3 denominado myCSVInput.csv. El archivo CSV el siguiente.amzn-s3-demo-bucket
abc,123,"This string contains commas, a double quotation marks (""), and a newline (
)",{""MyKey"":""MyValue""},"[1,2,3]"La siguiente máquina de estado lee este archivo CSV y utiliza ItemSelector (Map) 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
]
}
]