【发布时间】:2020-06-15 17:01:09
【问题描述】:
我从 Athena 得到以下类型的响应:
{
'UpdateCount': 0,
'ResultSet': {
'Rows': [{
'Data': [{
'VarCharValue': 'cc_code'
}, {
'VarCharValue': 'inv_id'
}, {
'VarCharValue': 'sno'
}, {
'VarCharValue': 'lrt'
}, {
'VarCharValue': 'lat'
}, {
'VarCharValue': 'long'
}, {
'VarCharValue': 'add'
}]
}, {
'Data': [{
'VarCharValue': 'YYY'
}, {
'VarCharValue': '2222'
}, {
'VarCharValue': '20:0100'
}, {
'VarCharValue': '2019-12-18T02:03:32Z'
}, {
'VarCharValue': '144.9194613051093'
}, {
'VarCharValue': '-22.879158430049'
}, {
'VarCharValue': 'UK'
}]
}, {
'Data': [{
'VarCharValue': 'ZZZZ'
}, {
'VarCharValue': '3333'
}, {
'VarCharValue': '10:010030015943960'
}, {
'VarCharValue': '2020-02-27T23:34:50Z'
}, {
'VarCharValue': '45.5014953316149'
}, {
'VarCharValue': '-122.562085095768'
}, {
'VarCharValue': 'IND'
}]
}],
'ResultSetMetadata': {
'ColumnInfo': [{
'CatalogName': 'hive',
'SchemaName': '',
'TableName': '',
'Name': 'cc_code',
'Label': 'cc_code',
'Type': 'varchar',
'Precision': 2147483647,
'Scale': 0,
'Nullable': 'UNKNOWN',
'CaseSensitive': True
}, {
'CatalogName': 'hive',
'SchemaName': '',
'TableName': '',
'Name': 'inv_id',
'Label': 'inv_id',
'Type': 'varchar',
'Precision': 2147483647,
'Scale': 0,
'Nullable': 'UNKNOWN',
'CaseSensitive': True
}, {
'CatalogName': 'hive',
'SchemaName': '',
'TableName': '',
'Name': 'sno',
'Label': 'sno',
'Type': 'varchar',
'Precision': 2147483647,
'Scale': 0,
'Nullable': 'UNKNOWN',
'CaseSensitive': True
}, {
'CatalogName': 'hive',
'SchemaName': '',
'TableName': '',
'Name': 'lrt',
'Label': 'lrt',
'Type': 'varchar',
'Precision': 2147483647,
'Scale': 0,
'Nullable': 'UNKNOWN',
'CaseSensitive': True
}, {
'CatalogName': 'hive',
'SchemaName': '',
'TableName': '',
'Name': 'lat',
'Label': 'lat',
'Type': 'varchar',
'Precision': 2147483647,
'Scale': 0,
'Nullable': 'UNKNOWN',
'CaseSensitive': True
}, {
'CatalogName': 'hive',
'SchemaName': '',
'TableName': '',
'Name': 'long',
'Label': 'long',
'Type': 'varchar',
'Precision': 2147483647,
'Scale': 0,
'Nullable': 'UNKNOWN',
'CaseSensitive': True
}, {
'CatalogName': 'hive',
'SchemaName': '',
'TableName': '',
'Name': 'add',
'Label': 'add',
'Type': 'varchar',
'Precision': 2147483647,
'Scale': 0,
'Nullable': 'UNKNOWN',
'CaseSensitive': True
}]
}
},
'ResponseMetadata': {
'RequestId': '2b9dabae',
'HTTPStatusCode': 200,
'HTTPHeaders': {
'x-amzn-requestid': '2b9dabae-1',
'content-type': 'application/x-amz-json-1.1',
'content-length': '7500',
'date': 'Tue, 03 Mar 2020 08:19:45 GMT'
},
'RetryAttempts': 0
}
}
我想从这个响应中获取一些值,并用这些属性做一些进一步的处理。我尝试了以下方法,但它似乎不是一个干净的方法。
query_result['ResultSet']['Rows'][1]['Data'][1]['VarCharValue']
问题首先是“数据”来自列名,而实际数据来自数据[1- 以此类推]。我不想放 2 个 for 循环来读取我的属性,也不想通过提供硬编码索引来获取列。有没有更好的方法来读取 python lambda 中的 Athena 响应。
【问题讨论】:
标签: json python-3.x amazon-web-services aws-lambda amazon-athena