TICS多方计算场景应用之积分落户
由于人口增长和城市发展需要, 各政府对于积分落户的要求和规则越来越多。
以某市的积分落户政策为例,涉及学历、年龄、纳税、社保等多项个人数据, 其中纳税、社保、身份信息都是个人隐私信息, 并且其数据可能来自不同的提供方,数据格式也不同。
那么如何让各提供方提供数据计算落户积分时,不泄露个人隐私呢? 这就是多方计算这个概念的应用场景。
下面给出这个场景的具体使用例子,其中的截图会以EI可信智能计算服务Tics的页面举例:
场景需求
某政府希望根据入户积分规则, 计算出当前市内积分排名和分布的情况, 该积分的计算需要教育局、人社局、税务局等一起提供相关数据, 计算出积分并排名。
同时为了简化该用例,只计算 学历积分、年龄积分和社保积分, 并对实际规则做了调整和简化。
要求: 只统计出各积分内的人数,但是不暴露具体的隐私信息比如身份证、缴纳记录等。
注意该用例只是作为举例和应用场景说明,并非真实的生产环境用例!!!
该例子中的规则:
1、学历
1. 本科及以上: 积分100
2. 非全日制本科(自考函授网教):积分80;
3. 全日制大专(35岁以上):积分70;
4. 非全日制专科(自考函授网教):积分60;
(中专、高中、初中等学历不加分)
2、社保
每满1年可积7分
3、年龄
●18~35岁:加5分
● 35~40岁:不加分不减分
● 40~45岁:每加1岁减2分。
数据提供方(或者叫参与方)
该场景共2个参与方:
●教育局, 其在联盟中的别名为JiaoYuJu
●人社局, 其在联盟中的别名为RenSheJu
各方提供数据集
数据集里的隐私规则含义如下:
配置数据参数时,若“连接器”为MRS、JDBC类型时,可对字段信息进行隐私策略的配置:
可用:勾选后,该字段允许被联盟各参与方使用。
可见:勾选后,该字段内容将在分析结果中明文呈现,否则不呈现。如果结果中涉及对不可见字段的聚合,则同样会不可见。
脱敏:勾选后,该字段内容将在分析结果中脱敏呈现,否则明文呈现。默认不勾选,当前的脱敏方式默认为哈希。
§ 1.学历信息表
根据学历的计分规则,需要教育局提供各学生的学历数据集 XUE_LI。
字段名称 | 字段描述 | 隐私规则 | 数据格式 |
---|---|---|---|
SFZID | 身份证号码,以确认唯一性 | 不可见 | 18位数字 |
XL | 学历 | 可见 | 研究生、本科、大专、非全日制本科、全日制大专、非全日制大专 |
ZSID | 学历证书id | 不可见 | 数字/th> |
YEAR | 毕业年份 | 脱敏 | 4位数字 |
样例数据:
§ 2.社保缴纳表
根据社保规则,需要人社局提供每年社保缴纳表 SHE_BAO。
字段名称 | 字段描述 | 隐私规则 | 数据格式 |
---|---|---|---|
SFZID | 身份证号码,以确认唯一性 | 不可见 | 18位数字 |
JSRQ | 缴纳日期,这里理解为满整年的年份,避免浮点计算 | 可见 | YYYY格式,每年最多一次 |
JSJE | 缴纳金额 | 脱敏 | 数字 |
样例数据:
§ 3.公民身份信息表
根据年龄计分规则,需要人社局提供公民身份信息表 SHEN_FEN_XIN_XI
字段名称 | 字段描述 | 隐私规则 | 数据格式 |
---|---|---|---|
SFZID | 身份证号码,以确认唯一性 | 不可见 | 18位数字 |
XM | 姓名 | 可见 | 中文 |
NL | 年龄 | 可见 | 数字 |
HJ | 户籍 | 可见 | 龙岗户籍/非深户籍/深圳其他区户籍 |
CSRQ | 出生日期 | 不可见 | yyyy-mm-dd |
样例数据:
联合分析sql设计
首先根据需要计算的部分,编写子sql,再将其聚合
根据计分规则, 需要根据学历表里的学历, 使用case when计算出每个人的分数, 该子sql如下:
Select SFZID, case when XL== '博士' or XL== '研究生' or XL== '本科' then 100 when XL== '非全日制本科' then 80 when XL== '全日制大专' then 70 when XL== '非全日制专科' then 60 else 0 end as xl_grade from JiaoYuJu.XUE_LI
需要根据社保缴纳记录,统计社保部分的分数,每交一年加7分。这部分的sql如下:
Select SFZID, count(SFZID) *7 as sb_grade from RenSheJu.SHE_BAO group by SFZID
需要根据年龄, 按照不同年龄计算分数,并得到姓名和分数
Select SFZID, XM, case when NL <= 35 then 5 when NL >= 40 and NL <= 45 then (40 - NL) * 2 else 0 end as nl_grade from RenSheJu.SHEN_FEN_XIN_XI
然后需要把这个3个表进行合并,并得到最终相加后的分数以及对应人名,并进行排序。
因此实际运行作业时的sql如下:
select t.final_grade, count(t.final_grade) from ( Select shenfen.grade + xueli.grade + shebao.grade as final_grade from ( Select SFZID, case when XL = '博士' or XL = '研究生' or XL = '本科' then 100 when XL = '非全日制本科' then 80 when XL = '全日制大专' then 70 when XL = '非全日制专科' then 60 else 0 end as grade from JiaoYuJu.XUE_LI ) xueli, ( Select SFZID, count(SFZID) * 7 as grade from RenSheJu.SHE_BAO group by SFZID ) shebao, ( Select SFZID, XM, case when NL <= 35 then 5 when NL >= 40 and NL <= 45 then (40 - NL) * 2 else 0 end as grade from RenSheJu.SHEN_FEN_XIN_XI ) shenfen where shenfen.SFZID = xueli.SFZID and xueli.SFZID = shebao.SFZID ) t group by t.final_grade order by t.final_grade desc
作业创建和运行
创建联邦数据分析作业
联盟成员登录TICS控制台。
在左侧导航树上依次选择“创建”。 ,在页面上方选择作业创建的联盟后,单击
图1 创建联邦数据分析作业
在弹出的对话框中,输入作业“名称”和“描述”信息后单击“确定”。
图2 新建作业
在作业列表中查找创建的作业,单击“开发”,进入作业开发页面编写SQL语句。SQL语句开发完成后单击“保存”。
图4 设置结果输出位置
图5 执行结果
5.点击右侧的“作业配置项”,可以设置结果直接输出到控制台还是存储到Agent。
6.单击“保存并执行作业”,等待执行完成后在下方“执行结果”页签查看结果。
- 点赞
- 收藏
- 关注作者
评论(0)