开发者社区 > 大数据与机器学习 > 人工智能平台PAI > 正文

在机器学习PAI我想用这个组件来统计每个字段的有效值个数,怎么处理?

在机器学习PAI当使用全表统计SummarizerBatchOp时,如果源表都是字符串类型的字段,调用collectSummary方法,会报 java.lang.NumberFormatException: For input string: "[]" 我想用这个组件来统计每个字段的有效值个数,怎么处理? lQLPJwVFictgwPrNAmDNBXKwMnA9p_k_BLYEbXo6EQDOAA_1394_608.png

展开
收起
三分钟热度的鱼 2023-06-05 15:38:33 96 0
3 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在阿里云机器学习PAI中,如果您想要统计每个字段的有效值个数,可以使用数据处理(DataWorks)组件来实现。下面是一些具体步骤:

    1. 在数据处理工作流程中添加 SQL 脚本

    首先,创建一个数据处理工作流程,然后将需要统计有效值个数的表添加到数据处理任务中。接着添加 SQL 脚本组件,将需要统计的字段按照正常的 SQL 语法选择出来。例如:

    SELECT count(DISTINCT column1) FROM table_name WHERE column1 IS NOT NULL;
    

    在上述 SQL 脚本中,table_name 为需要统计的表名,column1 为需要统计的字段名。使用 DISTINCTcount() 函数可以统计字段的唯一非空值数量。

    1. 添加输出节点

    完成 SQL 脚本编写后,在数据处理工作流中添加输出节点。这个节点的作用是将结果输出到指定的位置,例如写入到阿里云 OSS 的某个文件中。

    1. 运行并查看结果

    添加完成输出节点后,运行数据处理任务,查看结果是否与预期一致。如果统计结果不符合预期,您可以检查 SQL 脚本是否正确,并且确保输入数据不会产生误差。

    2023-06-05 22:08:59
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    根据您提供的信息,我了解到您想使用SummarizerBatchOp组件来统计每个字段的有效值个数。但是,当源表中的所有字段都是字符串类型时,使用collectSummary方法会导致java.lang.NumberFormatException异常。这是因为SummarizerBatchOp组件的collectSummary方法需要在源表中至少有一个数值型字段才能正常工作。

    如果您想统计每个字段的有效值个数,您可以考虑使用DistinctCountBatchOp组件。DistinctCountBatchOp组件可以计算每个字段的唯一值数量,包括字符串类型的字段。以下是一个简单的例子:

    from pyalink.alink import *
    from pyalink.alink.batch import DistinctCountBatchOp
    
    # 读取源表
    source = CsvSourceBatchOp() \
        .setFilePath("source.csv") \
        .setFieldDelimiter(",") \
        .setSchemaStr("f0 string, f1 string, f2 string")
    
    # 计算每个字段的唯一值数量
    distinct_count = DistinctCountBatchOp() \
        .setSelectedCols(["f0", "f1", "f2"]) \
        .linkFrom(source) \
        .collect()
    
    # 输出结果
    for col in distinct_count:
        print(col)
    

    在这个例子中,我们首先读取了源表,然后使用DistinctCountBatchOp组件计算每个字段的唯一值数量。然后,我们遍历结果并输出每个字段的唯一值数量。

    请注意,DistinctCountBatchOp组件计算的是每个字段的唯一值数量,而不是有效值数量。如果您需要计算每个字段的有效值数量,您需要先处理数据并删除无效值,然后再计算每个字段的唯一值数量。

    2023-06-05 21:05:59
    赞同 展开评论 打赏
  • 是的,多谢反馈。现在是有这个问题,下个版本这个问题就会fix。此回答整理自钉群“Alink开源--用户群”

    2023-06-05 15:58:50
    赞同 展开评论 打赏

相关产品

  • 人工智能平台 PAI
  • 热门讨论

    热门文章

    相关电子书

    更多
    大规模机器学习在蚂蚁+阿里的应用 立即下载
    阿里巴巴机器学习平台AI 立即下载
    机器学习及人机交互实战 立即下载