类型转换

类型转换是一种数据处理组件,能够将任意类型的特征转换为STRING、DOUBLEINT类型特征。该组件还支持在转换异常时进行缺失值填充,以保证数据完整性和一致性。

算法说明

  • 支持将表的字段类型转成另一个类型。

  • 支持多个字段同时转换成不同的类型。

  • 支持ODPS2.0数值类型字段的转换,例如decimal,float,int。

    说明

    该功能仅支持在华北2(北京)、华东2(上海)、华东1(杭州)、华南1(深圳)、华北3(张家口)和西南1(成都)使用。

  • 可以选择是否保持原来的转换前的数据列。

组件配置

方式一:可视化方式

Designer工作流页面添加类型转换组件,并在界面右侧配置相关参数:

参数类型

参数

描述

字段设置

转换为double类型的列

转换所选字段为DOUBLE类型。

转换为double异常时默认填充值

转换为DOUBLE类型异常时的默认填充值。

转换为int类型的列

转换所选字段为INT类型。

转换为int异常时默认填充值

转换为INT类型异常时的默认填充值。

转换为string类型的列

转换所选字段为STRING类型。

转换为string异常时默认填充值

转换为STRING类型异常时的默认填充值。

是否保留原列

列名增加前缀“typed_”。

单个结点内存大小

取值范围为1024 MB~64*1024 MB。

节点个数

与参数单个节点内存大小搭配使用,取值范围为[1, 9999]。

方式二:PAI命令方式

使用PAI命令配置类型转换组件参数。您可以使用SQL脚本组件进行PAI命令调用,详情请参见SQL脚本

pai -project algo_public
    -name type_transform_v1
    -DinputTable=type_test
    -Dcols_to_string="f0"
    -Ddefault_double_value=0.0
    -DoutputTable=type_test_output;

参数

是否必选

默认值

参数描述

inputTable

输入表的表名。

inputTablePartitions

所有分区

输入表中,参与训练的分区。支持以下格式:

  • Partition_name=value

  • name1=value1/name2=value2:多级格式

说明

如果指定多个分区,则使用英文逗号(,)分隔。

outputTable

类型转换的结果表。

reserveOldFeat

是否保持原来变换前的数据列。

cols_to_double

需要类型转换到DOUBLE的特征列。

cols_to_string

需要类型转换到STRING的特征列。

cols_to_int

需要类型转换到INT的特征列。

default_int_value

0

当特征字段为空时的值。

default_double_value

0.0

当特征字段为空时的值。

default_string_value

“”

当特征字段为空时的值。

coreNum

默认自动计算

节点数量。与memSizePerCore搭配使用,取值范围为[1, 9999]。

memSizePerCore

默认自动计算

单个节点内存大小,单位M,取值范围为[1024, 64 *1024]。

lifecycle

7

输出表生命周期。

示例

  • 测试数据生成

    create table transform_test as
    select * from
    (
    select true as f0,2.0 as f1,1 as f2 union all
    select false as f0,3.0 as f1,1 as f2 union all
    select false as f0,4.0 as f1,1 as f2 union all
    select true as f0,3.0 as f1,1 as f2 union all
    select false as f0,3.0 as f1,1 as f2 union all
    select false as f0,4.0 as f1,1 as f2 union all
    select true as f0,3.0 as f1,1 as f2 union all
    select false as f0,5.0 as f1,1 as f2 union all
    select false as f0,3.0 as f1,1 as f2 union all
    select true as f0,4.0 as f1,1 as f2 union all
    select false as f0,3.0 as f1,1 as f2 union all
    select true as f0,4.0 as f1,1 as f2
    )tmp;
  • 训练数据展示

    f0

    f1

    f2

    false

    3.0

    1

    false

    3.0

    1

    true

    2.0

    1

    true

    4.0

    1

    false

    4.0

    1

    false

    3.0

    1

    false

    3.0

    1

    true

    3.0

    1

    false

    4.0

    1

    true

    4.0

    1

    false

    5.0

    1

    true

    3.0

    1

  • 训练PAI命令

    pai -project projectxlib4
        -name type_transform_v1
        -DinputTable=transform_test
        -Dcols_to_double=f0
        -Dcols_to_int=f1
        -Dcols_to_string=f2
        -DoutputTable=trans_test_output;
  • 输出说明

    结果表

    f0

    f1

    f2

    0.0

    3

    1

    0.0

    3

    1

    1.0

    2

    1

    1.0

    4

    1

    0.0

    4

    1

    0.0

    3

    1

    1.0

    3

    1

    0.0

    4

    1

    0.0

    3

    1

    0.0

    5

    1

    1.0

    3

    1

    1.0

    4

    1