NodeJS AWS Athena:如何处理来自GetQueryResultsCommand命令的数据

aydmsdu9  于 2022-11-29  发布在  Node.js
关注(0)|答案(1)|浏览(138)

使用Athena客户端和命令***GetQueryResultsCommand***检索Athena查询结果(存储在S3桶中的CSV文件中)后,检索的数据按以下方式进行结构化:

{
   "NextToken": "string",
   "ResultSet": { 
      "ResultSetMetadata": { 
         "ColumnInfo": [ 
            { 
               "CaseSensitive": boolean,
               "CatalogName": "string",
               "Label": "string",
               "Name": "string",
               "Nullable": "string",
               "Precision": number,
               "Scale": number,
               "SchemaName": "string",
               "TableName": "string",
               "Type": "string"
            }
         ]
      },
      "Rows": [ 
         { 
            Data: [
              { VarCharValue: 'columnName1' },
              { VarCharValue: 'columnName2' },
              { VarCharValue: 'columnName3' },
              { VarCharValue: 'columnName4' },
              { VarCharValue: 'columnName5' },
              { VarCharValue: 'columnName6' }
            ]
          },
          {
            Data: [
              { VarCharValue: 'fieldValue1' },
              { VarCharValue:  123.4 },
              { VarCharValue:  false },
              { VarCharValue:  12 },
              { VarCharValue: 'fieldValue5' },
              { VarCharValue:  231.1 }
            ]
          }
      ]
   },
   "UpdateCount": number
}

其中,在 ColumnInfo 处,存在关于CSV中存在的列的所有信息(名称、类型信息等),并且在 Row 数组中,存在关于行的所有信息:拆分为两个 Data 对象的列和相关值
我的问题是:有没有可能从QueryResultCommand(或其他命令)中获取具有更好结构的数据,其中2 Data 对象已经“合并”,以便更容易地管理行并通过列名获取它们的值?
或者,我是否必须处理ROW数组中的每个元素并创建自己的对象?

bq9c1y66

bq9c1y661#

检查Athena SDK的文档,我们发现它不支持不同格式的返回数据。我已经粘贴了下面的可用参数。我看到的唯一其他方法是使用CLI,它有一个以不同格式返回数据的选项。

Parameters:

params (Object) (defaults to: {}) —
QueryExecutionId — (String)
The unique ID of the query execution.

NextToken — (String)
A token generated by the Athena service that specifies where to continue pagination if a previous request was truncated. To obtain the next set of pages, pass in the NextToken from the response object of the previous page call.

MaxResults — (Integer)
The maximum number of results (rows) to return in this request.

相关问题