Step Functions が入力CSVファイルを解析する方法 - AWS Step Functions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Step Functions が入力CSVファイルを解析する方法

Step Functions は、次のルールに基づいてCSVファイルを解析します。

  • カンマ (,) はフィールド を区切る区切り文字です。

  • 改行は、レコード を区切る区切り文字です。

  • フィールドは文字列として扱われます。データ型変換には、ItemSelector (マップ)States.StringToJson 組み込み関数を使用します。

  • 文字列を囲むには二重引用符 ("") は必要ありません。ただし、二重引用符で囲まれた文字列には、レコード区切り文字として機能しずにカンマと改行を含めることができます。

  • 二重引用符は、繰り返して保持できます。

  • 行内のフィールド数がヘッダー内のフィールド数より少ない場合、Step Functions は欠落した値に空の文字列を提供します。

  • 行のフィールド数がヘッダーのフィールド数よりも多い場合、Step Functions は追加のフィールドをスキップします

入力CSVファイルの解析

入力として 1 行myCSVInput.csvを含む という名前のCSVファイルを指定したとします。このファイルが、amzn-s3-demo-bucket という Amazon S3 バケットに保存されました。CSV ファイルは次のとおりです。

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