我有一些存储在S3存储桶中的json文件,其中每个文件都有多个结构相同的元素.例如,
[{"eventId":"1","eventName":"INSERT","eventVersion":"1.0","eventSource":"aws:dynamodb","awsRegion":"us-west-2","image":{"Message":"New item!","Id":101}},{"eventId":"2","eventName":"MODIFY","eventVersion":"1.0","eventSource":"aws:dynamodb","awsRegion":"us-west-2","image":{"Message":"This item has changed","Id":101}},{"eventId":"3","eventName":"REMOVE","eventVersion":"1.0","eventSource":"aws:dynamodb","awsRegion":"us-west-2","image":{"Message":"This item has changed","Id":101}}]
Run Code Online (Sandbox Code Playgroud)
我想在Athena中创建一个与上述数据相对应的表格.
我写的用于创建表的查询:
CREATE EXTERNAL TABLE IF NOT EXISTS sampledb.elb_logs2 (
`eventId` string,
`eventName` string,
`eventVersion` string,
`eventSource` string,
`awsRegion` string,
`image` map<string,string>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1',
'field.delim' = ' '
) LOCATION 's3://<bucketname>/';
Run Code Online (Sandbox Code Playgroud)
但如果我按如下方式进行SELECT查询,
SELECT * FROM sampledb.elb_logs4;
Run Code Online (Sandbox Code Playgroud)
我得到以下结果:
1 {"eventid":"1","eventversion":"1.0","image":{"id":"101","message":"New item!"},"eventsource":"aws:dynamodb","eventname":"INSERT","awsregion":"us-west-2"} {"eventid":"2","eventversion":"1.0","image":{"id":"101","message":"This item has changed"},"eventsource":"aws:dynamodb","eventname":"MODIFY","awsregion":"us-west-2"} {"eventid":"3","eventversion":"1.0","image":{"id":"101","message":"This item has changed"},"eventsource":"aws:dynamodb","eventname":"REMOVE","awsregion":"us-west-2"}
Run Code Online (Sandbox Code Playgroud)
json文件的全部内容在此处作为一个条目被选中.
如何将json文件的每个元素作为一个条目读取?
编辑:如何读取图像的每个子列,即地图的每个元素?
谢谢.
在我的步骤函数中,我想执行 Athena 查询。我能够定义一个步骤并成功执行查询。但是,我想传递一些参数作为输入并在查询字符串中使用它们。例如。
假设我的查询字符串是:
select * from <Data Source>.<database>.<tablename> where partition_0 = '2021';
我希望能够将年份作为输入 json 传递给步骤函数,例如:
{
"YYYY": 2021
}
Run Code Online (Sandbox Code Playgroud)
是否可以在查询字符串中插入输入“YYYY”?如果是这样,怎么办?
步骤函数配置示例:
{
"Comment": "Start athena exececution",
"StartAt": "athena",
"States": {
"athena": {
"Type": "Task",
"InputPath": "$",
"Resource": "arn:aws:states:::athena:startQueryExecution.sync",
"Parameters": {
"QueryString": "select * from mycatalog.mydatabase.mytable where partition_0 = '2021'",
"WorkGroup": "primary",
"ResultConfiguration": {
"OutputLocation": "s3://mys3bucket"
}
},
"Next": "Pass"
},
"Pass": {
"Comment": "A Pass state passes its input to its output, without performing work. Pass states are useful …Run Code Online (Sandbox Code Playgroud) 我有一个A大小为nRows x nCols 的矩阵.
我有一个nx2矩阵B,其中包含矩阵的索引A.我想获得A给出的指数的值B.
比方说,
B = [1, 2;
2, 3;
3, 4]
A(1,2) = 1
A(2,3) = 2
A(3,4) = 1
Run Code Online (Sandbox Code Playgroud)
我想知道任何给出以下的Matlab命令,给定A和B(我不想使用循环):
[1 2 1]
Run Code Online (Sandbox Code Playgroud)