flinkSql将嵌套Json映射成source表

3 篇文章 0 订阅
1 篇文章 0 订阅

flinkSql在遇到复杂的json时,如何映射成表呢? 这里推荐一种方便的方式:
嵌套的json格式如下:

{
    "data":{
        "data":{
            "mac_value":0,
            "ad_name":2056,
            "voice":75,
            "dataTimeStamp":1598522106830
        },
        "type":3,
        "deviceId":"001C92F7DCd85A"
    },
    "timestamp":1598522106835,
    "type":1
}

期望映射成一个source表

CREATE TABLE t_1144_1 (
   -- 最主要的是这行,定义类型为ROW
   `data` ROW(deviceId string,`data` ROW(mac_value string,ad_name string,voice string,dataTimeStamp string)),
   -- 通过xx.xx取数据,映射成自己想要的表
    deviceId as cast(`data`.deviceId as varchar) ,
    mac_value as cast( `data`.`data`.mac_value as integer),
    ad_name as cast( `data`.`data`.ad_name as integer), 
    voice as cast( `data`.`data`.voice as integer), 
    eventTime  as cast( `data`.`data`.`dataTimeStamp` as varchar), 
     -- 时间窗口以及水位线
    windowEventTime AS TO_TIMESTAMP(FROM_UNIXTIME((cast(cast( `data`.`data`.`dataTimeStamp` as varchar) as bigint)+43200000)/1000)), 
    WATERMARK FOR windowEventTime AS windowEventTime - INTERVAL '2' SECOND 
) WITH (
     xxxx
)
 后续的sql,就可以基于这个表来进行操作了.
  通过使用ROW的方式, 可以让复杂的json转变为可操作的schema,使用时, 可以让xx.xx.xx来使用.
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值