ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

门店清洗逻辑解释

2020-05-13 13:52:42  阅读:231  来源: 互联网

标签:workstation name area 门店 name2 逻辑 清洗 id select


 

1 以处理的门店

2 通过门店文本关联uum 的组织结构

3 关联对应的映射表 ,清洗到对应的门店大区。

 

insert overwrite table d_workstation_city_area
select
    a.category_name,
    a.workstation_name,
    a.city_name,
    a.area_name1,
    a.area_name2,
    a.workstation_name2,
    a.workstation_type,
    b.workstation_id1 workstation_id,
    a.city_id,
    b.workstation_id2  workstation2_id,
    a.area_id1,
    a.area_id2,
    a.workstation_display_name,
    b.id as workstation_display_id,
    c.store_id,
    d.name as store_name,
    d.store_type,
    b.workstation_name1 as uum_workstation_name,
    b.workstation_name2 as uum_workstation_name2,
    b.workstation_id2 as uum_workstation_id2
from (
--  uum 的清洗逻辑
    select
        a.category_name,
        a.workstation_name,
        a.city_name,
        a.area_name1,
        a.area_name2,
        a.workstation_name2,
        a.workstation_type,
        a.workstation_id,
        a.city_id,
        a.workstation2_id,
        a.area_id1,
        a.area_id2,
        if(a.workstation_name2 is null or a.workstation_name2 = '', a.workstation_uum_name, a.workstation_name2) as workstation_display_name,
        workstation_uum_name,
        if(category_name = '育儿嫂', '月嫂', category_name) as category_uum_name
    from (
        select  a.category_name as category_name    --业务名称
                ,coalesce(
                    if(a.category_name in ('月嫂', '育儿嫂'),
                    a.workstation_name,
                        case
                        when
                            a.workstation_type = '自营' and (a.workstation_name like '%苏州%' or a.workstation_name like '%青岛%' or a.workstation_name like '%西安%' )
                            and (a.workstation_name2 is not null and a.workstation_name2 != '')
                        then  a.workstation_name2
                        else a.workstation_name
                    end
                    )
                    ,'') as workstation_name    --运营站名称
                ,coalesce(a.city_name,'') as city_name    --城市
                ,coalesce(a.area_name1,'') as area_name1    --大区
                ,coalesce(a.area_name2,'') as area_name2    --分区
                ,coalesce(a.workstation_name2,'') as workstation_name2    --门店
                ,coalesce(a.workstation_type,'') as workstation_type    --运营站类型
                -- ,coalesce(b.id,'0') as workstation_id    --运营站id
                ,coalesce(
                    if(a.category_name = '月嫂',
                    b.id,
                        case
                        when
                            a.workstation_type = '自营' and (a.workstation_name like '%苏州%' or a.workstation_name like '%青岛%' or a.workstation_name like '%西安%' )
                            and (a.workstation_name2 is not null and a.workstation_name2 != '')
                        then  c.id
                        else b.id
                    end
                    )
                    ,'0') as workstation_id
                ,coalesce(b.bj_city_id,'0') as city_id    --城市id
                ,coalesce(c.id,'0') as workstation2_id    --门店id
                ,coalesce(a.area_id1,'0') area_id1-- 大区id
                ,coalesce(a.area_id2,'0') area_id2-- 分区id
                ,coalesce(
                    if(a.category_name in ('月嫂', '育儿嫂'),
                        case
                            when
                                a.workstation_type = '自营' and (a.workstation_name like '%苏州%' or a.workstation_name like '%青岛%' or a.workstation_name like '%西安%' )
                            then concat(a.workstation_name, '门店')
                            else a.workstation_name
                        end,
                        case
                            when
                                a.workstation_type = '自营' and (a.workstation_name like '%苏州%' or a.workstation_name like '%青岛%' or a.workstation_name like '%西安%' )
                                and (a.workstation_name2 is not null and a.workstation_name2 != '')
                            then  a.workstation_name2
                            else a.workstation_name
                    end
                    )
                    ,'') as workstation_uum_name
        from    (
                    select  '月嫂' as category_name
                            ,t1.workstation_name as workstation_name
                            ,t1.city_name as city_name
                            ,t1.area_name2 as area_name2
                            ,t1.area_name1 as area_name1
                            ,t2.name as workstation_name2
                            ,'代理' as workstation_type
                            ,t1.area_id1
                            ,t1.area_id2
                            ,t2.id as workstation_id2
                    from    (
                                select  d.id as workstation_id
                                        ,d.name as workstation_name
                                        ,replace(d.name,'月嫂代理','') as city_name
                                        ,c.name as area_name2
                                        ,a.name as area_name1
                                        ,a.id as area_id1
                                        ,c.id as area_id2
                                from    (--运营站
                                            select  id
                                                    ,parent_id
                                                    ,name
                                            from    o_jz_uum_sys_office
                                            where   dt = '${bdp.system.bizdate}'
                                            and     del_flag = 0
                                        ) d  left join    (--省区
                                            select  id
                                                    ,parent_id
                                                    ,name
                                            from    o_jz_uum_sys_office
                                            where   dt = '${bdp.system.bizdate}'
                                            and     del_flag = 0
                                        ) c
                                on      d.parent_id = c.id  left join    (--大区
                                            select  id
                                                    ,parent_id
                                                    ,name
                                            from    o_jz_uum_sys_office
                                            where   dt = '${bdp.system.bizdate}'
                                            and     del_flag = 0
                                        ) a
                                on      c.parent_id = a.id  left join    (--月嫂育儿嫂渠道
                                            select  id
                                            from    o_jz_uum_sys_office
                                            where   dt = '${bdp.system.bizdate}'
                                            and     name = '月嫂育儿嫂渠道'
                                            and     del_flag = 0
                                        ) b
                                on      a.parent_id = b.id
                                where   b.id is not null
                                and     c.name not like '%月嫂代理%'
                            ) t1 left join    (
                                select  id
                                        ,parent_id
                                        ,name
                                from    o_jz_uum_sys_office
                                where   dt = '${bdp.system.bizdate}'
                                and     del_flag = 0
                                and     name like '%店'
                            ) t2
                    on      t1.workstation_id = t2.parent_id

                    union all

                    select  '育儿嫂' as category_name
                            ,t1.workstation_name as workstation_name
                            ,t1.city_name as city_name
                            ,t1.area_name2 as area_name2
                            ,t1.area_name1 as area_name1
                            ,t2.name as workstation_name2
                            ,'代理' as workstation_type
                            ,t1.area_id1
                            ,t1.area_id2
                            ,t2.id as workstation_id2
                    from    (
                                select  d.id as workstation_id
                                        ,d.name as workstation_name
                                        ,replace(d.name,'月嫂代理','') as city_name
                                        ,c.name as area_name2
                                        ,a.name as area_name1
                                        ,a.id as area_id1
                                        ,c.id as area_id2
                                from    (
                                            select  id
                                                    ,parent_id
                                                    ,name
                                            from    o_jz_uum_sys_office
                                            where   dt = '${bdp.system.bizdate}'
                                            and     del_flag = 0
                                        ) d  left join    (
                                            select  id
                                                    ,parent_id
                                                    ,name
                                            from    o_jz_uum_sys_office
                                            where   dt = '${bdp.system.bizdate}'
                                            and     del_flag = 0
                                        ) c
                                on      d.parent_id = c.id  left join    (
                                            select  id
                                                    ,parent_id
                                                    ,name
                                            from    o_jz_uum_sys_office
                                            where   dt = '${bdp.system.bizdate}'
                                            and     del_flag = 0
                                        ) a
                                on      c.parent_id = a.id  left join    (
                                            select  id
                                            from    o_jz_uum_sys_office
                                            where   dt = '${bdp.system.bizdate}'
                                            and     name = '月嫂育儿嫂渠道'
                                            and     del_flag = 0
                                        ) b
                                on      a.parent_id = b.id
                                where   b.id is not null
                                and     c.name not like '%月嫂代理%'
                            ) t1 left join    (
                                select  id
                                        ,parent_id
                                        ,name
                                from    o_jz_uum_sys_office
                                where   dt = '${bdp.system.bizdate}'
                                and     del_flag = 0
                                and     name like '%店'
                            ) t2
                    on      t1.workstation_id = t2.parent_id
                    union all
                    select  '月嫂' as category_name
                            ,c.name as workstation_name
                            ,replace(c.name,'自营','') as city_name
                            ,'' as area_name2
                            ,a.name as area_name1
                            ,'' as workstation_name2
                            ,'自营' as workstation_type
                            ,a.id as area_id1
                            ,0 as area_id2
                            ,0 as workstation_id2
                    from    (
                                select  id
                                        ,parent_id
                                        ,name
                                from    o_jz_uum_sys_office
                                where   dt = '${bdp.system.bizdate}'
                                and     del_flag = 0
                            ) c left join    (
                                select  id
                                        ,parent_id
                                        ,name
                                from    o_jz_uum_sys_office
                                where   dt = '${bdp.system.bizdate}'
                                and     del_flag = 0
                            ) a
                    on      c.parent_id = a.id left join    (
                                select  id
                                from    o_jz_uum_sys_office
                                where   dt = '${bdp.system.bizdate}'
                                and     name = '月嫂独有'
                                and     del_flag = 0
                            ) b
                    on      a.parent_id = b.id
                    where   b.id is not null
                    union all
                    select  '育儿嫂' as category_name
                            ,c.name as workstation_name
                            ,replace(c.name,'自营','') as city_name
                            ,'' as area_name2
                            ,a.name as area_name1
                            ,'' as workstation_name2
                            ,'自营' as workstation_type
                            ,a.id as area_id1
                            ,0 as area_id2
                            ,0 as workstation_id2
                    from    (
                                select  id
                                        ,parent_id
                                        ,name
                                from    o_jz_uum_sys_office
                                where   dt = '${bdp.system.bizdate}'
                                and     del_flag = 0
                            ) c left join    (
                                select  id
                                        ,parent_id
                                        ,name
                                from    o_jz_uum_sys_office
                                where   dt = '${bdp.system.bizdate}'
                                and     del_flag = 0
                            ) a
                    on      c.parent_id = a.id left join    (
                                select  id
                                from    o_jz_uum_sys_office
                                where   dt = '${bdp.system.bizdate}'
                                and     name = '育儿嫂独有'
                                and     del_flag = 0
                            ) b
                    on      a.parent_id = b.id
                    where   b.id is not null

                    union all

                    select  '保姆' as category_name
                            ,t1.workstation_name as workstation_name
                            ,t1.city_name as city_name
                            ,t1.area_name2 as area_name2
                            ,t1.area_name1 as area_name1
                            ,t2.name as workstation_name2
                            ,'代理' as workstation_type
                            ,t1.area_id1
                            ,t1.area_id2
                            ,t2.id as workstation_id2
                    from    (
                                select  d.id as workstation_id
                                        ,d.name as workstation_name
                                        ,replace(d.name,'保姆代理','') as city_name
                                        ,c.name as area_name2
                                        ,a.name as area_name1
                                        ,a.id as area_id1
                                        ,c.id as area_id2
                                from    (--运营站
                                            select  id
                                                    ,parent_id
                                                    ,name
                                            from    o_jz_uum_sys_office
                                            where   dt = '${bdp.system.bizdate}'
                                            and     del_flag = 0
                                        ) d  left join    (--省区
                                            select  id
                                                    ,parent_id
                                                    ,name
                                            from    o_jz_uum_sys_office
                                            where   dt = '${bdp.system.bizdate}'
                                            and     del_flag = 0
                                        ) c
                                on      d.parent_id = c.id  left join    (--大区
                                            select  id
                                                    ,parent_id
                                                    ,name
                                            from    o_jz_uum_sys_office
                                            where   dt = '${bdp.system.bizdate}'
                                            and     del_flag = 0
                                        ) a
                                on      c.parent_id = a.id  left join    (--保姆渠道运营部
                                            select  id
                                            from    o_jz_uum_sys_office
                                            where   dt = '${bdp.system.bizdate}'
                                            and     name = '保姆渠道运营部'
                                            and     del_flag = 0
                                        ) b
                                on      a.parent_id = b.id
                                where   b.id is not null
                                and     c.name not like '%保姆代理%'
                            ) t1 left join    (
                                select  id
                                        ,parent_id
                                        ,name
                                from    o_jz_uum_sys_office
                                where   dt = '${bdp.system.bizdate}'
                                and     del_flag = 0
                                and     name like '%店'
                            ) t2
                    on      t1.workstation_id = t2.parent_id

                    union all

                    select  '保姆' as category_name
                            ,t1.workstation_name as workstation_name
                            ,t1.city_name as city_name
                            ,t1.area_name2 as area_name2
                            ,t1.area_name1 as area_name1
                            ,regexp_replace(t2.name, ' ', '') as workstation_name2
                            ,'自营' as workstation_type
                            ,t1.area_id1
                            ,t1.area_id2
                            ,t2.id as workstation_id2
                    from    (
                        select
                                c.name as workstation_name
                                ,c.id as workstation_id
                                ,replace(c.name,'家政','') as city_name
                                ,'' as area_name2
                                ,a.name as area_name1
                                ,'' as workstation_name2
                                ,'自营' as workstation_type
                                ,a.id as area_id1
                                ,0 as area_id2

                        from    (
                                    select  id
                                            ,parent_id
                                            ,name
                                    from    o_jz_uum_sys_office
                                    where   dt = '${bdp.system.bizdate}'
                                    and     del_flag = 0
                                ) c left join    (
                                    select  id
                                            ,parent_id
                                            ,name
                                    from    o_jz_uum_sys_office
                                    where   dt = '${bdp.system.bizdate}'
                                    and     del_flag = 0
                                ) a
                        on      c.parent_id = a.id left join    (
                                    select  id
                                    from    o_jz_uum_sys_office
                                    where   dt = '${bdp.system.bizdate}'
                                    and     name = '保姆城市运营部'
                                    and     del_flag = 0
                                ) b
                        on      a.parent_id = b.id
                        where   b.id is not null
                    ) t1 left join    (
                            select  id
                                    ,parent_id
                                    ,name
                            from    o_jz_uum_sys_office
                            where   dt = '${bdp.system.bizdate}'
                            and     del_flag = 0
                            and     name like '%店'
                    ) t2
                    on     t1.workstation_id = t2.parent_id
                ) a left join   (
                select
                        *
                    from (
                            select    id
                                    ,bj_city_id
                                    ,name,row_number() over(partition by name order by online_status) as asc_number
                            from    d_sys_workstation
                            where      del_flag = 0
                    ) a where asc_number = 1
                ) b
        on      a.workstation_name = b.name left join   (
                select
                    *
                from (
                        select    id
                                ,bj_city_id,type
                                ,name,row_number() over(partition by name order by online_status) as asc_number
                        from    d_sys_workstation
                        where      del_flag = 0
                ) a where asc_number = 1

                ) c
        on      a.workstation_name2 = c.name
    ) a
) a left join (
--  原来uum 的组织机构,通过门店名称及业务线关联
    select
        *,
        case
            when category_id = 212 then '保姆'
            when category_id = 205 then '月嫂'
            when category_id = 270 then '育儿嫂'
        end as category_name
     from (
        select
            *, row_number() over(partition by category_id,name order by del_flag, online_status) as row_num
        from
            d_sys_workstation
    ) a where row_num = 1
) b on a.category_uum_name = b.category_name and a.workstation_display_name = b.name
left join (
--  新的旧运营站对应新门店映射表
    select
        workstation_id,store_id
    from (
        select
            workstation_id,store_id
            ,row_number() over(partition by workstation_id order by create_time desc) as desc_num
        from o_jz_uum_t_workstation_store_relation
        where dt = '${bdp.system.bizdate}'
            and del_flag = 0
        ) t
    where desc_num = 1
) c on b.id = c.workstation_id
left join (
    select
        id,name,store_type
    from d_jz_zt_store_info
    --where del_flag = 0
) d on c.store_id = d.id

 

标签:workstation,name,area,门店,name2,逻辑,清洗,id,select
来源: https://www.cnblogs.com/sakura3/p/12881915.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有