{"record":{"id":"188685c07e1970e3","repo":"pentaho/pentaho-kettle","slug":"dimoutput-failed-to-find-input-row-meta-for","errorCode":null,"errorMessage":"DimOutput: failed to find input row meta for ","messagePattern":"DimOutput: failed to find input row meta for ","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/dimoutput/PaloDimOutput.java","lineNumber":70,"sourceCode":"    Object[] r = getRow();\n\n    if ( first ) {\n      first = false;\n      this.logBasic( \"First Row Analysis:\" );\n      if ( meta.getLevels().size() == 0 ) {\n        throw new KettleException( \"Number of levels must be greater that 0 to process the rows\" );\n      }\n      this.logBasic( \"Number of defined levels: \" + meta.getLevels().size() );\n\n      /* Indexes will follow [data index],[consolidation index],[data index],[consolidation index] .... */\n      data.indexes = new int[meta.getLevels().size() * 2];\n      for ( int i = 0; i < meta.getLevels().size(); i++ ) {\n\n        /* Get data field index */\n        String dataFieldName = meta.getLevels().get( i ).getFieldName();\n        int numRow = getInputRowMeta().indexOfValue( dataFieldName );\n        if ( numRow < 0 ) {\n          throw new KettleException( \"DimOutput: failed to find input row meta for \".concat( meta.getLevels().get( i )\n            .getLevelName() ) );\n        }\n        data.indexes[i * 2] = numRow;\n        this.logDebug( meta.getLevels().get( i ).getLevelName() + \" has index: \" + numRow );\n\n        /* Get consolidation field index */\n        String consolidationFieldName = meta.getLevels().get( i ).getConsolidationFieldName();\n        if ( consolidationFieldName == null ) {\n          numRow = -1;\n          this.logDebug( \"Consolidation factor was left to the default\" );\n        } else {\n          numRow = getInputRowMeta().indexOfValue( consolidationFieldName );\n          if ( numRow < 0 ) {\n            throw new KettleException( \"DimOutput: failed to find input row meta for \".concat( meta.getLevels().get( i )\n              .getConsolidationFieldName() ) );\n          }\n          this.logDebug( meta.getLevels().get( i ).getConsolidationFieldName() + \" has index: \" + numRow );\n        }","sourceCodeStart":52,"sourceCodeEnd":88,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/dimoutput/PaloDimOutput.java#L52-L88","documentation":"PaloDimOutput.processRow iterates the configured dimension levels and resolves each level's data field name to a column index in the incoming row via getInputRowMeta().indexOfValue(). If the level's field name is not a column of the input row (index < 0), the step cannot populate data.indexes and throws this KettleException. It is a step-configuration vs. upstream-row-layout mismatch.","triggerScenarios":"A level in the Palo DimOutput step dialog references a fieldName that does not exist in the row arriving at the step (renamed/deleted upstream column, wrong step order, no fields mapped).","commonSituations":"Upstream step renamed a field after configuring this step; copying a transformation between environments where field casing differs; running the step with no prior step producing rows with those columns.","solutions":["Open the Palo DimOutput step dialog and re-select the field for every level so it matches an actual incoming column","Check the preceding step's output fields (right-click > Show output fields) and rename/restore the missing column there","Ensure the step actually receives rows from an upstream hop with the expected fields","Use a 'Select values' / 'Field exists' repair step to guarantee column names before this step"],"exampleFix":"// before (stream lacks column 'LevelName')\nlevels: [{ levelName: 'Year', fieldName: 'LevelName' }]\n// after\nlevels: [{ levelName: 'Year', fieldName: 'year_field' }] // matches an existing input column","handlingStrategy":"validation","validationCode":"for (PaloDimensionLevel lvl : meta.getLevels()) {\n  if (inputRowMeta.indexOfValue(lvl.getFieldName()) < 0) {\n    throw new KettleException(\"Level '\" + lvl.getLevelName() + \"' field '\" + lvl.getFieldName() + \"' not in input row\");\n  }\n}","typeGuard":"boolean hasField(RowMetaInterface row, String name) { return name != null && row.indexOfValue(name) >= 0; }","tryCatchPattern":"try { processStep(); } catch (KettleException e) { logError(\"Missing input field for level: \" + e.getMessage(), e); setErrors(1); }","preventionTips":["Re-open and re-validate step mappings after renaming upstream fields","Use 'Show output fields' on the preceding step to confirm column names","Add a Field existence check / abort step before Palo steps","Avoid hand-editing field names in the dialog"],"tags":["etl","palo","field-lookup","step-configuration"],"backgroundTag":"record-not-found","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}