本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
管理狀態和轉換資料
Step Functions 最近新增了變數,並JSONata管理狀態和轉換資料。
了解如何使用變數傳遞資料,以及使用 轉換資料JSONata。
Step Functions 根據下列規則剖析CSV檔案:
-
逗號 (,) 是分隔欄位的分隔符號。
-
Newlines 是分隔記錄的分隔符號。
-
欄位視為字串。對於資料類型轉換,請使用 中的
States.StringToJson
內部 函數ItemSelector (地圖)。 -
不需要雙引號 (" ") 來括住字串。不過,以雙引號括住的字串可包含逗號和新行,而不做為記錄分隔符號。
-
您可以重複雙引號來保留雙引號。
-
如果資料列中的欄位數目小於標頭中的欄位數目,Step Functions 會提供缺少值的空白字串。
-
如果資料列中的欄位數目超過標頭中的欄位數目,Step Functions 會略過其他欄位。
範例 剖析輸入CSV檔案
假設您已提供名為 CSV的檔案
,其中包含一列做為輸入。然後,您已將此檔案存放在名為 的 Amazon S3 儲存貯體中myCSVInput.csv
。CSV 檔案如下所示。amzn-s3-demo-bucket
abc,123,"This string contains commas, a double quotation marks (""), and a newline (
)",{""MyKey"":""MyValue""},"[1,2,3]"
下列狀態機器會讀取此CSV檔案,並使用 ItemSelector (地圖)來轉換部分欄位的資料類型。
{
"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)"
}
}
}
}
當您執行此狀態機器時,會產生下列輸出。
[
{
"MyNumbers": 123,
"MyObject": {
"MyKey": "MyValue"
},
"MyString": "This string contains commas, a double quote (\"), and a newline (\n)",
"MyLetters": "abc",
"MyArray": [
1,
2,
3
]
}
]