should be schema.field(“msg”, Types.ROW(...))?
And you should select msg.f1 from table.

Best
Jingsong Lee




来自阿里邮箱 iPhone版
 ------------------Original Mail ------------------
From:圣眼之翼 <2463...@qq.com>
Date:2019-09-03 09:22:41
Recipient:user <user@flink.apache.org>
Subject:question
How do you do:
My problem is flink table format and table schema mapping.
The input data is similar to the following json format:
{ "id": "123", "serial": "6b0c2d26", "msg": { "f1": "5677" } } The format code 
for TableSource is as follows: new Json().schema(Types.ROW(new String[] { "id", 
"serial", "msg" }, new TypeInformation << ? > [] { Types.STRING(), 
Types.STRING(), Types.ROW(new String[] { "f1" }, new TypeInformation << ? > [] 
{ Types.STRING() }) }));

The schema part of TableSource is as follows:
Schema schema = new Schema(); schema.field("id", Types.STRING()); 
schema.field("serial", Types.STRING());

I don't know how to define the f1 field of msg in the schema. I tried 
schema.field("f1", Types.STRING()) before; but I will report an error. What is 
the correct method?
The following SQL can be run correctly:
select id,serial,f1 from table; 

My flink version is 1.8.1,use flink table & SQL API

thanks;

Reply via email to