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 o Step Functions analisa arquivos CSV de entrada
Gerenciando o estado e transformando dados
Saiba mais sobre como transmitir dados entre estados com variáveis e transformar dados com JSONata.
O Step Functions analisa arquivos delimitados por texto com base nas seguintes regras:
-
O delimitador que separa os campos é especificado por in.
CSVDelimiterReaderConfig O delimitador é padronizado como.COMMA -
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.StringToJsonem 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.
-
Você pode 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 repetindo-as:."" -
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 análise de um arquivo CSV de entrada
Digamos que você tenha fornecido um arquivo CSV chamado que contém uma linha como entrada. Em seguida, você armazenou esse arquivo em um bucket do Amazon S3 que é chamado de myCSVInput.csv. O arquivo CSV é como a seguir.amzn-s3-demo-bucket
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
]
}
]