更新时间:2022-04-16 GMT+08:00
分享

创建作业

联邦数据分析是可信智能计算提供的关系型数据安全共享和分析功能。您可以创建联邦数据分析作业,根据合作方已提供的数据,编写相关SQL作业并获取您所需要的分析结果,同时能够在作业运行保护数据使用方的数据查询和搜索条件,避免因查询和搜索请求造成的数据泄露。

前提条件

  • 在CCE服务中创建工作负载。

约束限制

  1. SQL语法支持
    • 关键词:select 、from 、where 、inner join/join/left outer join/right outer join、group by 、order by、limit、on 、as、union all;
    • 逻辑表达式: <、 >、 = 、<= 、>=、 <>、 between and、 in、 like、 exists;
    • 运算符:+、-、*、/ 和 case when;
    • 数据类型:字符串、 整型、 浮点型、 decimal、日期(date)、 时间(timestamp);
    • 聚合函数:max、min、sum、avg、count;
    • 系统函数:包含时间日期函数、字符串函数、数学函数。使用介绍如表1所示。
    • 通配符:%;--与like配合使用;
  2. 注意事项:
    • 不识别的数据类型被认为是字符串类型。
    • 页面上最多显示100条结果,超过100条的结果需要去存储计算节点的工作目录查询。
    • “隐私保护等级”设置为高级别后,参与多方计算的敏感字段会进行同态加密,但是该字段的数据类型只能是整型或浮点型,且乘法只支持敏感字段与非敏感字段或常量字段相乘。
    • “隐私保护等级”设置为高级别后,参与2方计算的join字段会使用psi算法输出碰撞的密文数据,且只支持a=b这类的join条件。

创建联邦分析作业

  1. 联盟成员登录进入计算节点页面。
  2. 在左侧导航树上依次选择作业管理 > 联邦数据分析,打开联邦数据分析页面。
  3. 联邦数据分析页面,在页面上方选择作业创建的联盟后,单击“创建”

    图1 创建作业

  4. 在弹出的对话框中,输入作业“名称”“描述”信息后单击“确定”

    图2 新建作业

  5. 在作业列表中查找创建的作业,单击“开发”,进入作业开发页面编写SQL语句。

    • 在作业开发页面“合作方数据”一栏可查看此联盟合作方共享的数据集。数据集第一级是合作方名称,第二级是数据集名称。SQL语句中用“合作方名.数据集名”表示一张表。
    • SQL语法支持
      • 关键词:select 、from 、where 、inner join/join/left outer join/right outer join、group by 、order by、limit、on 、as、union all;
      • 逻辑表达式: <、 >、 = 、<= 、>=、 <>、 between and、 in、 like、 exists;
      • 运算符:+、-、*、/ 和 case when;
      • 数据类型:字符串、 整型、 浮点型、 decimal、日期(date)、 时间(timestamp);
      • 聚合函数:max、min、sum、avg、count;
      • 系统函数:包含时间日期函数、字符串函数、数学函数。使用介绍如表1所示。
      • 通配符:%;--与like配合使用;
    • 编写SQL语句时,您可以参考编辑器右侧的“系统函数”,在SQL语句中输入并使用系统函数。
      表1 系统函数介绍

      系统函数类型

      函数

      命令格式

      命令说明

      参数说明

      返回值说明

      数学函数

      ABS

      abs(number)

      计算number的绝对值。

      number:必填。参数类型支持INT、BIGINT、FLOAT、DOUBLE、DECIMAL、STRING。

      如果输入为STRING类型,则隐式转换为DECIMAL类型后参与运算。

      • 输入为INT、BIGINT、FLOAT、DOUBLE、DECIMAL、STRING,则返回对应输入参数的数据类型。
      • 当输入非INT、BIGINT、FLOAT、DOUBLE、DECIMAL、STRING六种类型,返回报错。

      LN

      ln(number)

      计算number的自然对数。

      number:必填。参数类型支持INT、BIGINT、FLOAT、DOUBLE、DECIMAL、STRING。

      如果输入为STRING类型,则隐式转换为DECIMAL类型后参与运算。

      • 当number为INT、BIGINT、FLOAT、DOUBLE、DECIMAL、STRING类型时返回DOUBLE类型。
      • 当number为负数或0时,返回报错。

      RAND

      rand(seed)

      返回随机数,返回值区间是0~1。

      seed:选填。参数类型支持INT、BIGINT、FLOAT、DOUBLE、DECIMAL、STRING。

      如果输入为STRING类型,则隐式转换为DECIMAL类型后参与运算。

      返回DOUBLE类型。

      字符串操作函数

      CHAR_LENGTH

      char_length(string)

      计算字符串string的长度。

      string:必填。参数类型为STRING类型。

      如果输入为非STRING类型,则隐式转换为STRING类型后参与运算。

      返回INT类型。

      CHARACTER_LENGTH

      character_length(string)

      计算字符串string的长度。同CHAR_LENGTH。

      string:必填。参数类型为STRING类型。

      如果输入为非STRING类型,则隐式转换为STRING类型后参与运算。

      返回INT类型。

      LOWER

      lower(string)

      将字符串string中的大写字符转换为对应的小写字符。

      string:必填。参数类型为STRING类型。

      如果输入为非STRING类型,则隐式转换为STRING类型后参与运算。

      返回STRING类型。

      UPPER

      upper(string)

      将字符串string中的小写字符转换为对应的大写字符。

      string:必填。参数类型为STRING类型。

      如果输入为非STRING类型,则隐式转换为STRING类型后参与运算。

      返回STRING类型。

      SUBSTRING

      substring(string from start[ for length])

      返回字符串string从start开始,长度为length的子串。

      • string:必填。参数类型为STRING类型。

        如果输入为非STRING类型,则隐式转换为STRING类型后参与运算。

      • start: 必填。参数类型为INT类型。起始位置为1(起始位置0作1处理)。当start为负数时,表示开始位置是从字符串的尾部向前倒数。推荐start从1开始,负数及0在不同数据库中表现不同。
      • length:选填。参数类型为INT类型。表示子串的长度。值必须大于0。

      返回STRING类型。

      时间日期函数

      YEAR

      year(date)

      返回日期date的年。

      date:必填。DATE或TIMESTAMP类型,格式为yyyy-mm-dd或yyyy-MM-dd HH:mm:ss。

      返回INT类型。

      date为非DATE或TIMESTAMP类型,返回报错。

      MONTH

      month(date)

      返回日期date的月。

      date:必填。DATE或TIMESTAMP类型,格式为yyyy-mm-dd或yyyy-MM-dd HH:mm:ss。

      返回INT类型。

      date为非DATE或TIMESTAMP类型,返回报错。

      WEEK

      week(date)

      返回日期date位于当年的第几周。

      date:必填。DATE或TIMESTAMP类型,格式为yyyy-mm-dd或yyyy-MM-dd HH:mm:ss。

      返回INT类型。

      date为非DATE或TIMESTAMP类型,返回报错。

      HOUR

      hour(date)

      返回日期date的小时部分的值。

      date:必填。DATE或TIMESTAMP类型,格式为yyyy-mm-dd或yyyy-MM-dd HH:mm:ss。

      返回INT类型。

      date为非DATE或TIMESTAMP类型,返回报错。

      MINUTE

      minute(date)

      返回日期date的分钟部分的值。

      date:必填。DATE或TIMESTAMP类型,格式为yyyy-mm-dd或yyyy-MM-dd HH:mm:ss。

      返回INT类型。

      date为非DATE或TIMESTAMP类型,返回报错。

      SECOND

      second(date)

      返回日期date的秒数部分的值。

      date:必填。DATE或TIMESTAMP类型,格式为yyyy-mm-dd或yyyy-MM-dd HH:mm:ss。

      返回INT类型。

      date为非DATE或TIMESTAMP类型,返回报错。

    • SQL语句示例:

      SELECT

      column_A--字段名是租户别名.数据集名.字段名

      column_B as alias--支持别名

      SUM(column_C) AS alias--支持针对列名的聚合函数

      cloumn_A + column_B*2 as alias--支持select中加计算式

      FROM

      partner1.dataset1 table_A---表名是租户别名.数据集名, 后面可以加一个表别名tableA

      JOIN--支持的JOIN类型详见语法支持

      partner2.dataset2 table_B

      ON

      table_A.ID = table_B.ID

      WHERE

      table_A.uid = ${uid}

      GROUP BY

      table_A.ID

      ORDER BY

      table_A.ID

      LIMIT

      ${limit_count}

    SQL语句开发完成, 可点击页面上方“格式化”来对排版进行美化,完成后单击“保存”
    图3 编写SQL语句

  6. 点击编辑器右侧的“作业配置项”,进行作业配置。

    执行参数用于作业调优。当前可用执行参数介绍如下:

    • 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,具体根据实际需求和情况调整。
    • complex.sql.push.connector:ORACLE作业在开启差分隐私开关时,为避免rand语法在ORACLE执行报错,可配置该作业参数为“false”。其他场景下无需配置。
      图4 作业配置
    • join.runtime.filter:如果不希望过多的数据在网络中传输,可以设置该作业参数为”true”,则会将脱敏后的id传输给“输出数据量较多的代理”进行初筛,减少该代理的输出数量。

  7. 单击“保存并执行作业”,等待执行完成后在下方“执行结果”页签查看结果。
分享:

    相关文档

    相关产品

close