我是一名大数据开发工程师,现需建立组织或者用户的南威与钉底座的mapping关系,现在南威中有陕西省宝鸡市麟游县退役军人事务局的一系列组织数据,如敬老院、服务中心等,而在钉底座中,统一为退役军人事务局,请给我mapping映射的代码,参考之前的处理内设机构的映射案例代码:with tmp_internal_org as ( select t1.origin_org_id ,t1.nw_org_code ,t1.org_name ,t1.org_region_cd ,t1.parent_org_code ,t1.parent_org_name ,t1.up2parent_org_name ,t1.origin_org_path ,t2.org_code as ding_org_code ,t2.org_level as ding_org_level ,t2.org_path_name as ding_org_path_name ,t2.org_path as ding_org_path ,t2.region_cd as ding_region_cd from tmp_nw_org t1 left join ( select tt1.* ,tt2.parent_org_code as up2parent_org_code ,tt2.parent_org_name as up2parent_org_name from ( select org_code ,org_name ,org_level ,org_path ,org_path_name ,parent_org_code ,parent_org_name ,region_cd from dws_s02_organization_base_info_s_d where dt ='${bizdate}' ) tt1 left join (select org_code ,org_name ,parent_org_code ,parent_org_name from dws_s02_organization_base_info_s_d where dt ='${bizdate}' ) tt2 on tt1.parent_org_code = tt2.org_code ) t2 on t1.org_name = t2.org_name and t1.up2parent_org_name = t2.parent_org_name and t1.org_region_cd = t2.region_cd where t1.parent_org_name ='内设机构' )
时间: 2025-09-04 09:10:47 AIGC 浏览: 15
为了建立南威组织(如陕西省宝鸡市麟游县退役军人事务局下的敬老院、服务中心等)与钉底座中“退役军人事务局”之间的映射关系,我们可以借鉴你提供的“内设机构”的映射逻辑。核心思想是:**通过组织名称、上级组织名称、行政区划代码三者进行匹配,将南威组织映射到钉底座中的标准组织结构中。**
以下是一个基于 Hive SQL 的完整映射代码示例:
```sql
with tmp_nw_to_ding_mapping as (
select
t1.origin_org_id
,t1.nw_org_code
,t1.org_name
,t1.org_region_cd
,t1.parent_org_code
,t1.parent_org_name
,t1.up2parent_org_name
,t1.origin_org_path
,t2.org_code as ding_org_code
,t2.org_level as ding_org_level
,t2.org_path_name as ding_org_path_name
,t2.org_path as ding_org_path
,t2.region_cd as ding_region_cd
from tmp_nw_org t1
left join (
select tt1.*
,tt2.parent_org_code as up2parent_org_code
,tt2.parent_org_name as up2parent_org_name
from (
select org_code
,org_name
,org_level
,org_path
,org_path_name
,parent_org_code
,parent_org_name
,region_cd
from dws_s02_organization_base_info_s_d
where dt = '${bizdate}'
) tt1
left join (
select org_code
,org_name
,parent_org_code
,parent_org_name
from dws_s02_organization_base_info_s_d
where dt = '${bizdate}'
) tt2
on tt1.parent_org_code = tt2.org_code
) t2
on t1.org_name = t2.org_name
and t1.up2parent_org_name = t2.parent_org_name
and t1.org_region_cd = t2.region_cd
where t1.up2parent_org_name = '退役军人事务局'
)
select * from tmp_nw_to_ding_mapping;
```
---
### 代码解释
1. **CTE `tmp_nw_to_ding_mapping`**:
- 从南威组织表 `tmp_nw_org` 中取出所有与“退役军人事务局”相关的组织数据。
- 通过左连接钉底座的组织信息表 `dws_s02_organization_base_info_s_d`,进行组织名称、上级组织名称、行政区划码的匹配。
2. **子查询 `t2`**:
- 从钉底座中提取组织信息,并通过自连接获取上两级的组织名称和编码,以便与南威的组织结构层级进行匹配。
3. **`on` 条件**:
- `t1.org_name = t2.org_name`:组织名称一致。
- `t1.up2parent_org_name = t2.parent_org_name`:上两级组织名称一致。
- `t1.org_region_cd = t2.region_cd`:行政区划编码一致。
4. **`where` 条件**:
- `t1.up2parent_org_name = '退役军人事务局'`:限定只处理“退役军人事务局”下的组织结构。
---
###
阅读全文
相关推荐
















