pentaho/pentaho-kettle · error · KettleException
LoadFileInput.Log.NoField
LoadFileInput.Log.NoField
Error message
LoadFileInput.Log.NoField
What it means
LoadFileInput.openNextFile throws this when the step is set to take filenames from an incoming field ('file content in field' / dynamic filename mode) but the 'filename field' setting is empty. Without a source field the step cannot determine which file to load, so it aborts with Log.NoField.
Solutions
- Open Load File Input settings and choose the actual filename field from the dropdown.
- Confirm the upstream step outputs that field (Preview the previous step).
- If files are fixed, disable dynamic-filename mode and list files explicitly.
- Save and rerun.
Example fix
// before // dynamicFilenameField = "" with fileInFields=true // after // dynamicFilenameField = "filepath" (field from previous step)
Defensive patterns
Strategy: validation
Validate before calling
StepMeta lfStep = transMeta.findStep("Load File Input");
LoadFileInputMeta meta = (LoadFileInputMeta) lfStep.getStepMetaInterface();
if (meta.getFileInFields() && (meta.getDynamicFilenameField() == null || meta.getDynamicFilenameField().isEmpty())) {
throw new IllegalStateException("Load File Input: filename field not configured");
} Try / catch
try {
trans.execute(null);
} catch (KettleException e) {
if (e.getMessage().contains("NoField")) {
log.error("Set the filename field in Load File Input settings");
}
} Prevention
- Select the filename field whenever dynamic-filename mode is enabled
- Preview upstream output before running
- Avoid copying steps between transformations without re-checking settings
When it happens
Trigger: meta.getFileInFields() is true and the first row triggers openNextFile, but meta.getDynamicFilenameField() is empty/null.
Common situations: User enabled 'filename defined in a field' but never selected the field; transformation copied between environments losing the setting; upstream step that previously supplied the field was removed.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- LDIFInput.Log.NoField
- LoadFileInput.Exception.CouldnotFindField
- SFTPPut.Error.MoveToDestinationFolderIsEmpty
- SFTPPut.Error.RemoteFilenameFieldMissing
- SFTPPut.Error.RemoteFolderNameFieldMissing
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/2b044e53ebd1d289.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/loadfileinput/LoadFileInput.java:100
}
if ( first ) {
first = false;
data.inputRowMeta = getInputRowMeta();
data.outputRowMeta = data.inputRowMeta.clone();
meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,
metaStore );
// Create convert meta-data objects that will contain Date & Number formatters
// All non binary content is handled as a String. It would be converted to the target type after the processing.
data.convertRowMeta = data.outputRowMeta.cloneToType( ValueMetaInterface.TYPE_STRING );
if ( meta.getFileInFields() ) {
// Check is filename field is provided
if ( Utils.isEmpty( meta.getDynamicFilenameField() ) ) {
logError( BaseMessages.getString( PKG, "LoadFileInput.Log.NoField" ) );
throw new KettleException( BaseMessages.getString( PKG, "LoadFileInput.Log.NoField" ) );
}
// cache the position of the field
if ( data.indexOfFilenameField < 0 ) {
data.indexOfFilenameField = data.inputRowMeta.indexOfValue( meta.getDynamicFilenameField() );
if ( data.indexOfFilenameField < 0 ) {
// The field is unreachable !
logError( BaseMessages.getString( PKG, "LoadFileInput.Log.ErrorFindingField" )
+ "[" + meta.getDynamicFilenameField() + "]" );
throw new KettleException( BaseMessages.getString(
PKG, "LoadFileInput.Exception.CouldnotFindField", meta.getDynamicFilenameField() ) );
}
}
// Get the number of previous fields
data.totalpreviousfields = data.inputRowMeta.size();
}
} // end if firstView on GitHub (pinned to f3058517a1)