
# 批量隐匿查询
隐匿查询，也称隐私信息检索，是指查询方隐藏被查询对象关键词或客户id信息，数据服务方提供匹配的查询结果却无法获知具体对应哪个查询对象。数据不出门且能计算，杜绝数据缓存的可能性。
例如查询方希望查询身份证id为"张三"的人信贷公式数据，发起了一个类似于SELECT salary \* 16 + age\*10 FROM t WHERE id = '张三'的单数据集查询。t表存储在数据提供方计算节点中。查询方不希望有人知道自己查询的是"张三"这个人，也不希望知道查出的这条信贷公式结果具体值。
具体操作步骤如下：
1. 空间管理员登录TICS控制台。
2. 作业发起方进入自己所属的计算节点，进入作业管理-\>隐匿查询-\>批量隐匿查询作业，单击创建。
3. 编写完作业之后。单击保存，提交审批。 
   图1编写批量隐匿查询作业   
   ![](https://support.huaweicloud.com/usermanual-tics/zh-cn_image_0000001988382448.png "点击放大")
   
   
4. 隐匿查询过滤条件出现多个字段时，需要使用.pir或.PIR标识隐匿查询字段。 
   图2pir或.PIR标识隐匿查询字段   
   ![](https://support.huaweicloud.com/usermanual-tics/zh-cn_image_0000001988384796.png "点击放大")
   
   
5. 单击编辑器右侧的"作业配置项"，进行作业配置。 
   **重试**：开关开启后，执行失败的作业会根据配置定时进行重试，仅对开启后的执行作业生效。开关关闭后，关闭前已触发重试的作业不受影响，仅对关闭后的执行作业生效。
   **执行参数**：用于作业调优。当前可用执行参数介绍如下：
   - job.ins.memory.size：本次作业在各执行节点分配的内存大小，默认200MB。如果作业中间结果过大，需要调高该参数。
   
   - max.result.file.size：最大存储文件大小，默认10GB。如果最终结果存储超过这个大小，则会执行失败，需要调大该值。
   
   - tics.task.concurrency：在TICS所属计算节点执行计算时的并行度，默认值为1。当需要提升作业性能时，可以修改该参数，参考配置为CCE集群中规格时建议配置范围为4\~8，大规格部署时建议配置范围为8\~16，具体根据实际需求和情况调整。
   
   - user.task.concurrency：在用户所属计算节点计算时的并行度，默认值为1。当需要提升作业性能时，可以修改该参数，参考配置为CCE集群中规格时建议配置范围为4\~8，大规格部署时建议配置范围为8\~16，具体根据实际需求和情况调整。
   
   - apsi.num.threads：数据提供方处理查询并发线程数，默认1，取值正整数，并发线程数越大，性能越优。
   
   - id.byte.length：查询id序列化字节长度，默认20，需要根据实际情况调整。
   
   - query.fields.byte.length：查询字段序列化字节长度，默认20，需要根据实际情况调整。
   
   
   图3作业配置   
   ![](https://support.huaweicloud.com/usermanual-tics/zh-cn_image_0000001737797794.png "点击放大")
   
   
6. 合作方进入自己所属的计算节点，进入审批管理页面，单击审批详情，查看查询方的sql请求的id为"？？？？"，无法获取查询具体查询数据。 
   图4审批详情   
   ![](https://support.huaweicloud.com/usermanual-tics/zh-cn_image_0000001443346884.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-tics/public_sys-resources/note_3.0-zh-cn.png)
   - 仅限单表查询，不支持多表查询。
   
   - Sql中必须包含where条件。不支持join操作，即使是单方内的join操作。
   
   - where条件后必须包含隐匿查询字段，隐匿查询字段只能是非敏感唯一标识，且字段数值类型只能是字符串或整数。
   
   - where条件后出现多个字段时必须使用.pir或.PIR标识隐匿查询字段。
   
   - where条件后不支持or语句，多个条件必须使用and进行拼接。
   
   - 隐匿查询字段只能用于where id='xxx'或where id in ('xxx' 'xxx')或where id in (select xx from table)语句。
   
   - 隐匿查询条件为in+子查询时，子查询中数据集只能是发起方数据集。
    
   
   
 
