3

S3にjsonファイルがあり、Redshiftに転送したいと思います。一つの漁獲量は、ファイルが、このような形式のエントリが含まれていることである。AWS Pipelineを使用してS3からRedShiftに転送中のJSONファイルを平滑化

{ 
    "user_id":1, 
    "metadata": 
      { 
       "connection_type":"WIFI", 
       "device_id":"1234" 
      } 
} 

私は列を格納するファイルを平らにしたい赤方偏移するためにそれを保存します前に:

user_id | connection_type | device_id 

私が使用してこれをどのように行うことができますAWSデータパイプライン? jsonを目的のフォームに変換できるアクティビティはありますか?私は変換SQLはJSONフィールドをサポートするとは思わない。

答えて

3

フラット化する必要はありません。コンフィグレーションファイルjsonpathsを定義した後、copyコマンドを使用してロードすると、各jsonオブジェクトから簡単に列の値を抽出できます。そのようなあなたがS3にファイルを作成したいあなたの構造では

s3://bucket/your_jsonpaths.json):あなたが問題を持っている場合は

copy your_table 
from 's3://bucket/data_objects.json' 
credentials '<aws-auth-args>' 
json 's3://bucket/your_jsonpaths.json'; 

{ 
    "jsonpaths": [ 
     "$.user_id", 
     "$.metadata.connection_type", 
     "$.metadata.device_id" 
    ] 
} 

次にあなたが赤方偏移でこのような何かを実行したいですstv_load_errorsテーブルの内容を参照してください。

レッドシフトcopy commandexamplesを確認してください。

+0

S3バケットに置かれたすべてのファイルに対してCOPYコマンドを自動化することは可能でしょうか? COPYはSDKを介して起動できますか?もしそうなら、コマンドを起動するラムダ関数を記述することが可能でなければなりません。 – AitorF

+1

S3バケット上でSNS通知を有効にして、それからラムダをトリガすることができます。これをチェックしてください:http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.htmlとhttp://docs.aws.amazon.com/sns/latest/dg/sns-lambda.html – systemjack

関連する問題