0

Amazon DynamoDBで生成されたデータを持つTableau Dashboardを作成したいと考えています。今、私はアマゾンラムダを使用してAmazon S3の上のバケットにデータを送信していると私は、S3バケットにAmazon S3からデータを照会する方法

私はタブローとの接続を作成するために、アマゾンアテナを使用しようとして
{ 
    "Items": [ 
    { 
     "payload": { 
     "phase": "T", 
     "tms_event": "2017-03-16 18:19:50", 
     "id_UM": 0, 
     "num_severity_level": 0, 
     "event_value": 1, 
     "int_status": 0 
     }, 
     "deviceId": 6, 
     "tms_event": "2017-03-16 18:19:50" 
    } 
    ] 
} 

が、ペイロード属性をこのファイルを取得しています私に問題があり、SELECTクエリを実行しても結果が得られません。

これは、あなたのデータと一致するようにあなたのデータは、トップレベルItems配列を持っているので、あなたのテーブルには、見ていない、

CREATE EXTERNAL TABLE IF NOT EXISTS default.iot_table_test (
    `payload` map<string,string>, 
    `deviceId` int, 
    `tms_event` string 
) 
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' 
WITH SERDEPROPERTIES (
    'serialization.format' = '1' 
) LOCATION 's3://iot-logging/' 
TBLPROPERTIES ('has_encrypted_data'='false') 

おかげで、 アレハンドロ

答えて

2

アテナ表です。

CREATE EXTERNAL TABLE IF NOT EXISTS default.iot_table_test_items (
    `Items` ARRAY< 
    STRUCT< 
     `payload`: MAP<string, string>, 
     `deviceId`: int, 
     `tms_event`: string 
    > 
    > 
) 
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' 
WITH SERDEPROPERTIES (
    'serialization.format' = '1' 
) LOCATION 's3://iot-logging/' 
TBLPROPERTIES ('has_encrypted_data'='false') 

、その後、Items配列をネスト解除、それを照会:

SELECT 
    item.deviceId, 
    item.tms_event, 
    item.payload 
FROM 
    default.iot_table_test_items 
    CROSS JOIN UNNEST (Items) AS i (item) 
LIMIT 10; 
+0

こんにちはジェームズ、おかげでJSONデータファイルをrestructingなければ、私はあなたがこのようなテーブル定義が必要だと思います。私は彼の質問から結果を得ています。今私は新しいテーブルを使用して列 "ペイロード"から値を分割する(不成功)しようとしています –

関連する問題