Como o Step Functions analisa arquivos CSV de entrada - AWS Step Functions

Como o Step Functions analisa arquivos CSV de entrada

Gerenciar estados e transformar dados

O Step Functions analisa arquivos delimitados por texto com base nas seguintes regras:

  • O delimitador que separa os campos é especificado por CSVDelimiter em ReaderConfig. O delimitador usa COMMA como padrão.

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

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

  • Não são necessárias aspas duplas (“ ”) nas strings. No entanto, strings delimitadas por aspas duplas podem conter vírgulas e novas linhas sem agir como delimitadores de registro.

  • É possível preservar as aspas duplas repetindo-as.

  • Barras invertidas (\) são outra forma de escapar de caracteres especiais. As barras invertidas só funcionam com outras barras invertidas, aspas duplas e com o separador de campo configurado, como vírgula ou barra vertical. Uma barra invertida seguida por qualquer outro caractere é removida silenciosamente.

  • É possível preservar as barras invertidas repetindo-as. Por exemplo:

    path,size C:\\Program Files\\MyApp.exe,6534512
  • Barras invertidas que escapam das aspas duplas (\") só funcionam quando incluídas em pares, então recomendamos escapar das aspas duplas as repetindo: "".

  • 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 vai ignorar os campos adicionais.

Exemplo de
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 amzn-s3-demo-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 máquina de estado a seguir lê esse arquivo CSV e usa ItemSelector (mapa) 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": "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)" } } } }

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 ] } ]