

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 CSV de entrada
<a name="example-csv-parse-dist-map"></a>

**Administración del estado y transformación de los datos**  
Obtenga información sobre cómo [pasar datos entre estados con variables](workflow-variables.md) y cómo [transformar datos con JSONata](transforming-data.md).

Step Functions analiza los archivos delimitados por texto según las siguientes reglas:
+ El delimitador que separa los campos se especifica `CSVDelimiter` en *ReaderConfig*. El valor predeterminado del delimitador es `COMMA`.
+ 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.StringToJson` en [ItemSelector (Map)](input-output-itemselector.md).
+ 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 (\$1) 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 `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 archivo CSV 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 estado lee este archivo CSV y utiliza [ItemSelector (Map)](input-output-itemselector.md) 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
    ]
  }
]
```