前提・実現したいこと
Athenaからのクエリ結果をJSON形式に変換したところ、名前と値がマッチせず困っています。
最初の30項目はカラム名で、31項目目から値が入ります。データ件数は900件ほどです。
発生している問題・エラーメッセージ
"Data": [ { "VarCharValue": "batch_date" }, { "VarCharValue": "seq_no" }, ︙ (27項目中略) ︙ { "VarCharValue": "upd_date" } ] }, { "Data": [ { "VarCharValue": "2021/07/12 21:00:02" }, { "VarCharValue": "500000000278" }, ︙ (中略) ︙ { "VarCharValue": "2021/07/13 05:27:21" }, ] },
下記のように直したいのですが、どうすればよいでしょうか?
"Data": [ { "batch_date": "2021/07/12 21:00:02" }, { "seq_no": "500000000278" }, ︙ (27項目中略) ︙ { "upd_date": "2021/07/13 05:27:21" }, },
該当のソースコード
import json import time import boto3 # athena constant DATABASE = 'database' TABLE = 'test_tbl' # S3 constant S3_OUTPUT = 's3:/xxx/data' S3_BUCKET = 's3://xxx/data' # number of retries RETRY_COUNT = 10 def lambda_handler(event, context): # get keyword keyword = event['vin'] print("vin = %s " % keyword) # created query query = "SELECT * FROM %s.%s where vin = '%s';" % (DATABASE, TABLE, keyword) print("query:"+query) # athena client client = boto3.client('athena', region_name='xxx') # Execution response = client.start_query_execution( QueryString=query, QueryExecutionContext={ 'Database': DATABASE }, ResultConfiguration={ 'OutputLocation': S3_OUTPUT, } ) # get query execution id query_execution_id = response['QueryExecutionId'] print("query_execution_id:"+query_execution_id) # get execution status for i in range(1, 1 + RETRY_COUNT): # get query execution query_status = client.get_query_execution(QueryExecutionId=query_execution_id) #print("query_status"+str(query_status)) query_execution_status = query_status['QueryExecution']['Status']['State'] if query_execution_status == 'SUCCEEDED': print("STATUS:" + query_execution_status) break if query_execution_status == 'FAILED': raise Exception("STATUS:" + query_execution_status) else: print("STATUS:" + query_execution_status) time.sleep(i) else: client.stop_query_execution(QueryExecutionId=query_execution_id) raise Exception('TIME OVER') # get query results result = client.get_query_results(QueryExecutionId=query_execution_id) # return recordset return result['ResultSet']['Rows']

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。