【问题标题】:Count the number of null value per column with pentaho用 pentaho 计算每列空值的数量
【发布时间】:2016-02-12 17:23:04
【问题描述】:

我有一个包含超过 60 列和 2 000 000 行的 csv 文件,我正在尝试计算每个变量(每列)的空值数量,然后对新行求和以获得整个 csv 中空值的总数。例如,如果我们在输入中得到这个文件:

我们期望输出中的这个其他文件:

我知道如何计算每行空值的数量,但是我不知道如何计算每列空值的数量。

【问题讨论】:

    标签: pentaho kettle


    【解决方案1】:

    必须有更好的方法来做到这一点,但我做了一个非常讨厌的 JavaScript 来完成这项工作。

    它对于不同的列类型有一些问题,因为它没有设置列类型。 (它应该将所有列设置为整数,但我不知道这是否可以从 JavaScript 中实现。)

    您必须先运行Identify last row in a stream,然后将其保存到last 列(或更改脚本)。

    var nulls;
    var seen;
    
    if (!seen) {
        // Initialize array
        seen = 1;
        nulls = [];
        for (var i = 0; i < getInputRowMeta().size(); i++) {
            nulls[i] = 0;
        }
    }
    
    for (var i = 0; i < getInputRowMeta().size(); i++) {
        if (row[i] == null) {
            nulls[i] += 1;
        }
        // Hack to find empty strings
        else if (getInputRowMeta().getValueMeta(i).getType() == 2 && row[i].length() == 0) {
            nulls[i] += 1;
        }
    }
    
    // Don't store any values
    trans_Status = SKIP_TRANSFORMATION;
    
    // Only store the nulls at the last row
    if (last == true) {
        putRow(nulls);
    }
    

    【讨论】:

    【解决方案2】:

    请将以下步骤拖放到画布中。

    step1:添加常量:创建一个名为constant且value = 1的变量

    第二步:过滤行:你有过滤所有列的空值。

    step3: Group by:这里按字段常量变量分组 聚合部分,我们必须指定剩余的列,如 ct_inc。类型是 Number of Values (N)

    如果您有任何疑问,请随时提出。

    skype_id : panabakavenkatesh

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-10
      • 2015-08-19
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      相关资源
      最近更新 更多