zoukankan      html  css  js  c++  java
  • Inceptor [Code: 40000, SQL State: 42000] COMPILE FAILED: Internal error NullPointerException: [Error 40000] java.lang.NullPointerException

    下面代码报空指针

    with `__all_dim__` as (
      select
        *
      from (
          select
            from_unixtime(unix_timestamp(`__bts__`) -1,'yyyy-MM-dd HH:mm:ss') as `__bts__`
          from (
              select
                concat_ws(' ', `d`.`date`, `t`.`time_of_day`) as `__bts__`
              from `ecmp`.`dim_date` as `d`
              left join `ecmp`.`dim_time_of_day` as `t` on 1 = 1
              where
                `d`.`date` >= '2020-01-12'
                and `d`.`date` <= '2020-01-13'
            ) as `__bts___tp1`
          where
            `__bts__` > '2020-01-12 00:00:00'
            and `__bts__` <= '2020-01-13 00:00:00'
            and second(`__bts__`) = 0
            and minute(`__bts__`) = 0
            and hour(`__bts__`) = 0
            and pmod(day(`__bts__`), 1) = 0
        ) as `__time_model__`
      cross join (
          select
            `dd_59282`.`tenant_pk` as `tenant_pk`,
            `dd_59282`.`tenant_id` as `tenant_id`,
            `dd_59282`.`tenant_name` as `tenant_name`
          from `ecmp`.`dim_tenant` as `dd_59282`
        ) as `tenant_pk`
      cross join (
          select
            'Fatal' as incident_level from system.dual
          union all
          select
            'Error' as incident_level from system.dual
          union all
          select
            'Warning' as incident_level from system.dual
          union all
          select
            'Info' as incident_level from system.dual
        ) as `incident_level`
    )
    ,`t` as (
      select
        `tenant_pk`,
        `incident_accept_violation_count`,
        `incident_level`,
        rank() over( partition by `incident_level` order by `incident_accept_violation_count` DESC) as `incident_accept_violation_count_rank`,
        rank() over( partition by `incident_level` order by `incident_accept_violation_count` ASC) as `__inverse_rank__`
      from (
          select
            `__all_dim__`.*,-- 经排查发现表名加单引号再.*就是会报空指针,去掉表名的单引号后该问题解决
            CAST(round(nvl(`incident_accept_violation_count`, 0), 0) as INT) as `incident_accept_violation_count`
          from `__all_dim__`
          left join (
              select
                `incident_level`,
                `tenant_pk`,
                count(*) as `incident_accept_violation_count`
              from `ecmp`.dwd_incident_accept
              where
                incident_accept_violation_flag = '违规'
                and `incident_accept_time` >= '2020-01-12 00:00:00'
                AND `incident_accept_time` <= '2020-01-12 23:59:59'
              group by
                `incident_level`,
                `tenant_pk`
            ) as `t1` on 1 = 1
            and `__all_dim__`.`tenant_pk` = `t1`.`tenant_pk`
            and `__all_dim__`.`incident_level` = `t1`.`incident_level`
        ) as `t0`
    )
    
    select
      `__all_dim__`.`__bts__` as `__bts__`,
      CAST(SYSDATE as STRING) as `__cts__`,
      CAST(dround(nvl(`incident_accept_violation_count`, 0), 0) as INT) as `incident_accept_violation_count`,
      CAST(dround(`incident_accept_violation_count_rank`, 0) as INT) as `incident_accept_violation_count_rank`,
      CAST(dround(`incident_accept_violation_count_win_rate`, 1) as DOUBLE) as `incident_accept_violation_count_win_rate`,
      `__all_dim__`.`incident_level` as `incident_level`,
      `__all_dim__`.`tenant_id` as `tenant_id`,
      `__all_dim__`.`tenant_name` as `tenant_name`,
      `__all_dim__`.`tenant_pk` as `tenant_pk`
    from `__all_dim__`
    left join (
        select
          '2020-01-12 23:59:59' as `__bts__`,
          `incident_accept_violation_count`,
          `incident_accept_violation_count_rank`,
          `incident_accept_violation_count_win_rate`,
          CAST(coalesce(`tp1`.`incident_level`) as STRING) as `incident_level`,
          CAST(coalesce(`tp1`.`tenant_pk`) as STRING) as `tenant_pk`
        from (
            select
              `t`.`tenant_pk`,
              `t`.`incident_level`,
              `t`.`incident_accept_violation_count`,
              `t`.`incident_accept_violation_count_rank`,
              if(`c`.ct = 1,null,(`__inverse_rank__` -1) /(`c`.ct -1) * 100) as `incident_accept_violation_count_win_rate`
            from `t`
            left join (
                select
                  `incident_level`,
                  count(*) as `ct`
                from `t`
                group by
                  `incident_level`
              ) as `c` on 1 = 1
              and `t`.`incident_level` = `c`.`incident_level`
          ) as `tp1`
      ) as `__dws__` on `__all_dim__`.`__bts__` = `__dws__`.`__bts__`
      and `__all_dim__`.`tenant_pk` = `__dws__`.`tenant_pk`
      and `__all_dim__`.`incident_level` = `__dws__`.`incident_level`;

    然后修改后直接SELECT * FROM t;是没有问题的,但是用先有的select报错

    [Code: 10009, SQL State: 42000] COMPILE FAILED: Semantic error: [Error 10009] Line 54:8 Invalid table alias. Error encountered near token 'all_dim'

    with alldim as (
    select
        *
      from (
          select
            from_unixtime(unix_timestamp(`__bts__`) -1,'yyyy-MM-dd HH:mm:ss') as `__bts__`
          from (
              select
                concat_ws(' ', `d`.`date`, t.`time_of_day`) as `__bts__`
              from `ecmp`.`dim_date` as `d`
              left join `ecmp`.`dim_time_of_day` as t on 1 = 1
              where
                `d`.`date` >= '2020-01-12'
                and `d`.`date` <= '2020-01-13'
            ) as `__bts___tp1`
          where
            `__bts__` > '2020-01-12 00:00:00'
            and `__bts__` <= '2020-01-13 00:00:00'
            and second(`__bts__`) = 0
            and minute(`__bts__`) = 0
            and hour(`__bts__`) = 0
            and pmod(day(`__bts__`), 1) = 0
        ) as `__time_model__`
      cross join (
          select
            `dd_59282`.`tenant_pk` as `tenant_pk`,
            `dd_59282`.`tenant_id` as `tenant_id`,
            `dd_59282`.`tenant_name` as `tenant_name`
          from `ecmp`.`dim_tenant` as `dd_59282`
        ) as `tenant_pk`
      cross join (
          select
            'Fatal' as incident_level from system.dual
          union all
          select
            'Error' as incident_level from system.dual
          union all
          select
            'Warning' as incident_level from system.dual
          union all
          select
            'Info' as incident_level from system.dual
        ) as `incident_level`
    )
    , t as (
    select
        `tenant_pk`,
        `incident_accept_violation_count`,
        `incident_level`,
        rank() over( partition by `incident_level` order by `incident_accept_violation_count` DESC) as `incident_accept_violation_count_rank`,
        rank() over( partition by `incident_level` order by `incident_accept_violation_count` ASC) as `__inverse_rank__`
      from (
          select
            --alldim.*,
            alldim.`tenant_pk`,--去掉.*,改用需要几列查询几列的方式
            alldim.`incident_level`,
            CAST(round(nvl(`incident_accept_violation_count`, 0), 0) as INT) as `incident_accept_violation_count`
          from alldim
          left join (
              select
                `incident_level`,
                `tenant_pk`,
                count(*) as `incident_accept_violation_count`
              from `ecmp`.dwd_incident_accept
              where
                incident_accept_violation_flag = '违规'
                and `incident_accept_time` >= '2020-01-12 00:00:00'
                AND `incident_accept_time` <= '2020-01-12 23:59:59'
              group by
                `incident_level`,
                `tenant_pk`
            ) as `t1` on 1 = 1
            and alldim.`tenant_pk` = `t1`.`tenant_pk`
            and alldim.`incident_level` = `t1`.`incident_level`
        ) as `t0`)
     
    
     
    select
      alldim.`__bts__` as `__bts__`,
      CAST(SYSDATE as STRING) as `__cts__`,
      CAST(round(nvl(`incident_accept_violation_count`, 0), 0) as INT) as `incident_accept_violation_count`,--dround改成round,手写错误
      CAST(round(`incident_accept_violation_count_rank`, 0) as INT) as `incident_accept_violation_count_rank`,
      CAST(round(`incident_accept_violation_count_win_rate`, 1) as DOUBLE) as `incident_accept_violation_count_win_rate`,
      alldim.`incident_level` as `incident_level`,
      alldim.`tenant_id` as `tenant_id`,
      alldim.`tenant_name` as `tenant_name`,
      alldim.`tenant_pk` as `tenant_pk`
    from alldim
    left join (
        select
          '2020-01-12 23:59:59' as `__bts__`,
          `incident_accept_violation_count`,
          `incident_accept_violation_count_rank`,
          `incident_accept_violation_count_win_rate`,
         CAST(coalesce(`tp1`.`incident_level`) as STRING) as `incident_level`,
         CAST(coalesce(`tp1`.`tenant_pk`) as STRING) as `tenant_pk`
       from (
           select
             t.`tenant_pk`,
             t.`incident_level`,
             t.`incident_accept_violation_count`,
             t.`incident_accept_violation_count_rank`,
             if(`c`.ct = 1,null,(`__inverse_rank__` -1) /(`c`.ct -1) * 100) as `incident_accept_violation_count_win_rate`
           from t
           left join (
               select
                 `incident_level`,
                 count(*) as `ct`
               from t
               group by
                 `incident_level`
             ) as `c` on 1 = 1
             and t.`incident_level` = `c`.`incident_level`
         ) as `tp1`
      ) 
      as `__dws__` on alldim.`__bts__` = `__dws__`.`__bts__`
      and alldim.`tenant_pk` = `__dws__`.`tenant_pk`
      and alldim.`incident_level` = `__dws__`.`incident_level`;
  • 相关阅读:
    新概念英语(1-121)The man in a hat
    新概念英语(1-119)who call out to the thieves in the dark?
    画像分析(1-1)如何为客户画像?
    大数据分析师
    英语词汇(2)fall down,fall off和fall over
    把梳子卖给和尚的故事
    洛谷P1970 花匠(dp)
    2018.10.24模拟赛2解题报告
    2018.10.24模拟赛1解题报告
    洛谷P1941 飞扬的小鸟(背包 dp)
  • 原文地址:https://www.cnblogs.com/qfdy123/p/12200731.html
Copyright © 2011-2022 走看看