Como analisar um arquivo CSV de entrada - AWS Step Functions

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como analisar um arquivo CSV de entrada

Como não há um formato padronizado para criar e manter dados em arquivos CSV, o Step Functions analisa os arquivos CSV com base nas seguintes regras:

  • As vírgulas (,) são um delimitador que separa campos individuais.

  • As novas linhas são um delimitador que separa registros individuais.

  • Os campos são tratados como strings. Para conversões de tipo de dados, use a função intrínseca States.StringToJson em ItemSelector.

  • Não são necessárias aspas duplas (” “) para encerrar strings. No entanto, strings delimitadas por aspas duplas podem conter vírgulas e novas linhas que não funcionam como delimitadores.

  • Repita as aspas duplas para evitá-las.

  • Se o número de campos em uma linha for menor que o número de campos no cabeçalho, o Step Functions fornecerá strings vazias para os valores que estão faltando.

  • Se o número de campos em uma linha for maior que aquele no cabeçalho, o Step Functions ignorará os campos adicionais.

exemplo
de como analisar um arquivo CSV de entrada

Digamos que você tenha fornecido um arquivo CSV chamado myCSVInput.csv que contém uma linha como entrada. Em seguida, você armazenou esse arquivo em um bucket do Amazon S3 que é chamado de my-bucket. O arquivo CSV é como a seguir.

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

A seguinte máquina de estado lê esse arquivo CSV e usa ItemSelector para converter os tipos de dados de alguns dos 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": "my-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 você executa essa máquina de estado, ela produz a saída a seguir.

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