blob: 088e786b7b93b2b8c75e01edc6fab72796308d47 [file] [log] [blame]
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Metadata Injection :: Apache Hop (Incubating)</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/plugins/transforms/metainject.html"> <meta name="generator" content="Antora 2.3.4"> <link rel="stylesheet" href="../../../../_/css/site-8ea79c1e80.css"> </head> <body class="article"> <div class="cookie-banner" id="cookies-eu-banner" style="display: none;"> <div id="cookies-eu-content"> By continuing to visit this site, you accept the use of <a href="../../../../cookie-info/">cookies.</a> <button id="cookies-eu-accept">Accept</button> </div> <button id="cookies-eu-reject">Reject</button> </div> <header class="header"> <nav class="navbar"> <div class="navbar-brand"> <a class="nav-logo" href="../../../.."><span>Apache Hop (Incubating)</span></a> <div id="topbar-nav" class="navbar-menu"> <div class="navbar-end"> <a class="navbar-item" href="../../../..../../../../blog/">Blog</a> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link" href="#">Documentation</a> <div class="navbar-dropdown"> <a class="navbar-item" href="../../../../manual/latest/getting-started.html">Getting started</a> <a class="navbar-item" href="../../../../manual/latest/">User manual</a> <a class="navbar-item" href="../../../../tech-manual/latest/">Technical Documentation</a> <a class="navbar-item" href="../../../../dev-manual/latest/">Developer Documentation</a> <a class="navbar-item" href="../../../../docs/architecture/">Architecture</a> <a class="navbar-item" href="../../../../docs/roadmap/">Roadmap</a> <a class="navbar-item" href="../../../../docs/qa">Q&amp;A</a> </div> </div> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link" href="#">Community</a> <div class="navbar-dropdown"> <a class="navbar-item" href="../../../../community/contributing/">Contributing</a> <a class="navbar-item" href="../../../../community/tools/">Tools</a> <a class="navbar-item" href="../../../../community/team/">Team</a> </div> </div> <a class="navbar-item" href="../../../..../../../../download/">Download</a> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link" href="#">About</a> <div class="navbar-dropdown"> <a class="navbar-item" href="https://www.apache.org/licenses/LICENSE-2.0">License</a> </div> </div> </div> </div> <div class="navbar-search"> <input id="search-input" type="text" placeholder="Search docs" class="ds-input" autocomplete="off" spellcheck="false" role="combobox" aria-autocomplete="list" aria-expanded="false" aria-owns="algolia-autocomplete-listbox-0" dir="auto"> </div> <div class="navbar-tools"> <a href="https://chat.project-hop.org" title="Chat with us" target="_blank"><svg height="30" width="30" viewBox="0 0 30 30" class="brand-icon"><path d="m 23.399705,7.0517653 c -0.811583,-1.755522 -1.98643,-3.2324028 -3.542396,-4.4727237 0.04144,0.8420009 0.131904,2.6427217 0.131904,2.6427217 0,0 0.09696,0.1272 0.13632,0.182401 1.572478,2.199681 2.147037,4.6376017 1.623358,7.2857637 -1.050239,5.309843 -6.218105,8.549046 -11.455186,7.224805 C 5.6960779,18.752172 2.6254257,14.043529 3.4949926,9.3753663 4.1813918,5.6900843 6.3558852,3.2350424 9.8870488,1.9875216 l 0.1279682,-0.048 0.100416,-0.072 C 10.543401,1.2611208 10.961,0.6477608 11.406631,0 6.0547335,0.2656 0.67230798,4.5661633 0.05570071,11.107927 -0.54103457,17.438011 3.7200163,23.083134 9.8089048,24.321855 16.154114,25.612736 22.194522,21.863214 24.019864,15.86257 24.932631,12.862008 24.719032,9.9083263 23.399704,7.0542453 Z M 8.2979624,11.010647 c 0.267552,2.546882 2.4715176,4.282562 5.0209866,4.000322 2.504829,-0.2776 4.335931,-2.731601 3.861787,-5.2146427 -0.3696,-1.936001 -0.77808,-3.864402 -1.170046,-5.796084 -0.162144,-0.7991999 -0.326208,-1.5984007 -0.49824,-2.4414407 -0.06784,0.056 -0.09936,0.0848 -0.128064,0.1128 -0.858239,0.84272 -1.715997,1.6859209 -2.574236,2.5285617 -1.045056,1.02632 -2.08867,2.053921 -3.1362212,3.077522 -1.0506224,1.02664 -1.5288936,2.279601 -1.3760624,3.7327217 z"/></svg></a> <a href="https://twitter.com/projhop" title="Follow us on Twitter" target="_blank"><svg height="30" width="30" viewBox="0 0 30 30" class="brand-icon"><path d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm6.5 8.778c-.441.196-.916.328-1.414.388.509-.305.898-.787 1.083-1.362-.476.282-1.003.487-1.564.597-.448-.479-1.089-.778-1.796-.778-1.59 0-2.758 1.483-2.399 3.023-2.045-.103-3.86-1.083-5.074-2.572-.645 1.106-.334 2.554.762 3.287-.403-.013-.782-.124-1.114-.308-.027 1.14.791 2.207 1.975 2.445-.346.094-.726.116-1.112.042.313.978 1.224 1.689 2.3 1.709-1.037.812-2.34 1.175-3.647 1.021 1.09.699 2.383 1.106 3.773 1.106 4.572 0 7.154-3.861 6.998-7.324.482-.346.899-.78 1.229-1.274z"/></svg></a> <a href="https://www.linkedin.com/company/hop-project/" title="Follow us on LinkedIn" target="_blank"><svg height="30" width="30" viewBox="0 0 30 30" class="brand-icon"><path d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z"/></svg></a> <a href="https://www.youtube.com/channel/UCGlcYslwe03Y2zbZ1W6DAGA" title="Subscribe to our YouTube channel" target="_blank"><svg height="30" width="30" viewBox="0 0 30 30" class="brand-icon"><path fill-rule="evenodd" d="M4.652 0h1.44l.988 3.702.916-3.702h1.454l-1.665 5.505v3.757h-1.431v-3.757l-1.702-5.505zm6.594 2.373c-1.119 0-1.861.74-1.861 1.835v3.349c0 1.204.629 1.831 1.861 1.831 1.022 0 1.826-.683 1.826-1.831v-3.349c0-1.069-.797-1.835-1.826-1.835zm.531 5.127c0 .372-.19.646-.532.646-.351 0-.554-.287-.554-.646v-3.179c0-.374.172-.651.529-.651.39 0 .557.269.557.651v3.179zm4.729-5.07v5.186c-.155.194-.5.512-.747.512-.271 0-.338-.186-.338-.46v-5.238h-1.27v5.71c0 .675.206 1.22.887 1.22.384 0 .918-.2 1.468-.853v.754h1.27v-6.831h-1.27zm2.203 13.858c-.448 0-.541.315-.541.763v.659h1.069v-.66c.001-.44-.092-.762-.528-.762zm-4.703.04c-.084.043-.167.109-.25.198v4.055c.099.106.194.182.287.229.197.1.485.107.619-.067.07-.092.105-.241.105-.449v-3.359c0-.22-.043-.386-.129-.5-.147-.193-.42-.214-.632-.107zm4.827-5.195c-2.604-.177-11.066-.177-13.666 0-2.814.192-3.146 1.892-3.167 6.367.021 4.467.35 6.175 3.167 6.367 2.6.177 11.062.177 13.666 0 2.814-.192 3.146-1.893 3.167-6.367-.021-4.467-.35-6.175-3.167-6.367zm-12.324 10.686h-1.363v-7.54h-1.41v-1.28h4.182v1.28h-1.41v7.54zm4.846 0h-1.21v-.718c-.223.265-.455.467-.696.605-.652.374-1.547.365-1.547-.955v-5.438h1.209v4.988c0 .262.063.438.322.438.236 0 .564-.303.711-.487v-4.939h1.21v6.506zm4.657-1.348c0 .805-.301 1.431-1.106 1.431-.443 0-.812-.162-1.149-.583v.5h-1.221v-8.82h1.221v2.84c.273-.333.644-.608 1.076-.608.886 0 1.18.749 1.18 1.631v3.609zm4.471-1.752h-2.314v1.228c0 .488.042.91.528.91.511 0 .541-.344.541-.91v-.452h1.245v.489c0 1.253-.538 2.013-1.813 2.013-1.155 0-1.746-.842-1.746-2.013v-2.921c0-1.129.746-1.914 1.837-1.914 1.161 0 1.721.738 1.721 1.914v1.656z"/></svg> <a href="https://github.com/project-hop/" title="Collaborate on GitHub"><svg class="brand-icon" viewBox="0 0 22 22"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg></a> </a></div> <button class="navbar-burger" data-target="topbar-nav" type="button"> <span></span> <span></span> <span></span> </button> </div> </nav> </header> <div class="body"> <div class="nav-container" data-component="manual" data-version="latest"> <aside class="nav"> <div class="panels"> <div class="nav-panel-menu is-active" data-panel="menu"> <nav class="nav-menu"> <h3 class="title"><a href="../../index.html">User manual</a></h3> <ul class="nav-list"> <li class="nav-item" data-depth="0"> <ul class="nav-list"> <li class="nav-item" data-depth="1"> <a class="nav-link" href="../../getting-started.html">Getting Started</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="../../concepts.html">Concepts</a> </li> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle"></button> <a class="nav-link" href="../../hop-vs-kettle/index.html">Kettle &#8594; Hop</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="../../hop-vs-kettle/hop-vs-kettle.html">Hop vs Kettle</a> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="../../hop-vs-kettle/if-you-know-kettle.html">If You Know Kettle/PDI</a> </li> </ul> </li> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle"></button> <a class="nav-link" href="../../hop-gui/index.html">Hop Gui</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="../../hop-gui/environments/environments.html">Hop Environments</a> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle"></button> <a class="nav-link" href="../../hop-gui/pipelines/pipelines.html">Pipelines</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../hop-gui/pipelines/hop-pipeline-editor.html">Pipeline Editor</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../hop-gui/pipelines/create-pipeline.html">Create a Pipeline</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../hop-gui/pipelines/run-preview-debug-pipeline.html">Run, Preview and Debug a Pipeline</a> </li> <li class="nav-item" data-depth="3"> <button class="nav-item-toggle"></button> <a class="nav-link" href="../../hop-gui/pipelines/pipeline-run-configurations/pipeline-run-configurations.html">Pipeline Run Configurations</a> <ul class="nav-list"> <li class="nav-item" data-depth="4"> <a class="nav-link" href="../../hop-gui/pipelines/pipeline-run-configurations/beam-dataflow-pipeline-engine.html">Beam Google DataFlow</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="../../hop-gui/pipelines/pipeline-run-configurations/beam-direct-pipeline-engine.html">Beam Direct</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="../../hop-gui/pipelines/pipeline-run-configurations/beam-flink-pipeline-engine.html">Beam Flink</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="../../hop-gui/pipelines/pipeline-run-configurations/beam-spark-pipeline-engine.html">Beam Spark</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="../../hop-gui/pipelines/pipeline-run-configurations/local-pipeline-engine.html">Local Native</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="../../hop-gui/pipelines/pipeline-run-configurations/remote-pipeline-engine.html">Remote Native</a> </li> </ul> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../hop-gui/pipelines/metadata-injection.html">Metadata Injection</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle"></button> <a class="nav-link" href="../../hop-gui/workflows/workflows.html">Workflows</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../hop-gui/workflows/create-workflow.html">Create a Workflow</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../hop-gui/workflows/run-debug-workflow.html">Run and Debug a Workflow</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../hop-gui/workflows/workflow-run-configurations/workflow-run-configurations.html">Workflow Run Configurations</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <a class="nav-link" href="../../hop-gui/variables/variables.html">Variables</a> </li> </ul> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="../../hop-run/index.html">Hop Run</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="../../hop-server/index.html">Hop Server</a> </li> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle"></button> <a class="nav-link" href="../plugins.html">Plugins</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle"></button> <a class="nav-link" href="../transforms.html">Transform Plugins</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="abort.html">Abort</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="checksum.html">Add a checksum</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="constant.html">Add Constants</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="addsequence.html">Add Sequence</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="fieldschangesequence.html">Add value fields changing sequence</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="addxml.html">Add XML</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="analyticquery.html">Analytic Query</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="append.html">Append Streams</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="beambigqueryinput.html">Beam BigQuery Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="beambigqueryoutput.html">Beam BigQuery Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="beampublisher.html">Beam GCP Pub/Sub : Publish</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="beamsubscriber.html">Beam GCP Pub/Sub : Subscribe</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="beaminput.html">Beam Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="beamconsume.html">Beam Kafka Consume</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="beamproduce.html">Beam Kafka Produce</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="beamoutput.html">Beam Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="beamtimestamp.html">Beam Timestamp</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="beamwindow.html">Beam Window</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="blockingtransform.html">Blocking transform</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="blockuntiltransformsfinish.html">Blocking until transforms finish</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="calculator.html">Calculator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="dbproc.html">Call DB procedure</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="changefileencoding.html">Change file encoding</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="filelocked.html">Check if file is locked</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="webserviceavailable.html">Check if webservice is available</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="clonerow.html">Clone row</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="closure.html">Closure</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="columnexists.html">Column exists</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="combinationlookup.html">Combination lookup/update</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="concatfields.html">Concat Fields</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="rowstoresult.html">Copy rows to result</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="creditcardvalidator.html">Credit card validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="csvinput.html">CSV File Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="cubeinput.html">Cube input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="cubeoutput.html">Cube output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="databasejoin.html">Database Join</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="databaselookup.html">Database Lookup</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="datagrid.html">Data Grid</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="validator.html">Data Validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="delay.html">Delay row</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="delete.html">Delete</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="detectemptystream.html">Detect Empty Stream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="dimensionlookup.html">Dimension lookup/update</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="dummy.html">Dummy (do nothing)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="dynamicsqlrow.html">Dynamic SQL row</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="edi2xml.html">Edi to XML</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="mailinput.html">Email Messages Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="excelwriter.html">Excel writer</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="execprocess.html">Execute a process</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="execsqlrow.html">Execute row SQL script</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="sql.html">Execute SQL script</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="fake.html">Fake data</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="fileexists.html">File exists</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="filesfromresult.html">Files from result</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="filestoresult.html">Files to result</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="filterrows.html">Filter Rows</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="fuzzymatch.html">Fuzzy match</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="randomvalue.html">Generate Random Value</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="getxmldata.html">Get Data From XML</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="getfilenames.html">Get filenames</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="getfilesrowcount.html">Get files rowcount</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="getslavesequence.html">Get ID from slave server</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="recordsfromstream.html">Get records from stream </a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="rowsfromresult.html">Get Rows from Result</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="getsubfolders.html">Get SubFolder names</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="systemdata.html">Get System Info</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="gettablenames.html">Get table names</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="getvariable.html">Get variables</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="groupby.html">Group By</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="http.html">HTTP client</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="httppost.html">HTTP Post</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="detectlastrow.html">Identify last row in a stream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ifnull.html">If Null</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="injector.html">Injector</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="insertupdate.html">Insert / Update</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="javafilter.html">Java Filter</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="javascript.html">JavaScript</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="joinrows.html">Join Rows</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="jsoninput.html">JSON Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="jsonoutput.html">JSON Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ldapinput.html">LDAP Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ldapoutput.html">LDAP Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ldifinput.html">LDIF Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="loadfileinput.html">Load file content in memory</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="mail.html">Mail</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="mailvalidator.html">Mail Validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="memgroupby.html">Memory Group By</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="mergejoin.html">Merge Join</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="mergerows.html">Merge rows (diff)</a> </li> <li class="nav-item is-current-page" data-depth="3"> <a class="nav-link" href="metainject.html">Metadata Injection</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="excelinput.html">Microsoft Excel input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="exceloutput.html">Microsoft Excel output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="mongodbinput.html">MongoDB Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="mongodboutput.html">MongoDB Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="multimerge.html">Multiway Merge Join</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="nullif.html">Null If</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="numberrange.html">Number range</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="pgpdecryptstream.html">PGP decrypt stream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="pgpencryptstream.html">PGP encrypt stream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="pipelineexcecutor.html">Pipeline Executor</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="pgbulkloader.html">PostgreSQL Bulk Loader</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="processfiles.html">Process files</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="propertyinput.html">Read data (key, value) from properties files.</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="regexeval.html">Regex Evaluation</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="replacestring.html">Replace in String</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="reservoirsampling.html">Reservoir Sampling</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="rest.html">REST Client</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="denormaliser.html">Row Denormaliser</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="flattener.html">Row Flattener</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="rowgenerator.html">Row Generator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="normaliser.html">Row Normaliser</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="ssh.html">Run SSH commands</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="selectvalues.html">Select Values</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="syslog.html">Send Message to Syslog</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="setvaluefield.html">Set field Value</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="setvalueconstant.html">Set field value to a constant</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="setvariable.html">Set Variables</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="sortedmerge.html">Sorted Merge</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="sort.html">Sort Rows</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="splitfieldtorows.html">Split fields</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="fieldsplitter.html">Split Fields</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="sqlfileoutput.html">SQL File Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="streamlookup.html">Stream Lookup</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="streamschemamerge.html">Stream Schema Merge</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="stringoperations.html">String operations</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="stringcut.html">Strings cut</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="switchcase.html">Switch / Case</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="synchronizeaftermerge.html">Synchronize after merge </a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="tablecompare.html">Table Compare</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="tableexists.html">Table Exists</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="tableinput.html">Table Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="tableoutput.html">Table Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="terafast.html">Teradata Bulk Loader</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="textfileinput.html">Text File Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="textfileoutput.html">Text File Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="tokenreplacement.html">Token Replacement</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="uniquerows.html">Unique Rows</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="uniquerowsbyhashset.html">Unique Rows (HashSet)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="update.html">Update</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="userdefinedjavaclass.html">User Defined Java Class</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="janino.html">User Defined Java Expression</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="valuemapper.html">Value Mapper</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="webservices.html">Web services lookup</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="workflowexecutor.html">Workflow Executor</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="propertyoutput.html">Write data to properties file</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="writetolog.html">Write to log</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="xmlinputstream.html">XML Input Stream (StAX) </a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="xmljoin.html">XML Join</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="xmloutput.html">XML Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="xsdvalidator.html">XSD Validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="xslt.html">XSL Transformation</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="yamlinput.html">Yaml Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="zipfile.html">Zip file</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle"></button> <a class="nav-link" href="../databases.html">Database Plugins</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/derby.html">Apache Derby</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/as400.html">AS400</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/cache.html">Cache</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/db2.html">DB2</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/exasol.html">Exasol</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/firebird.html">firebird</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/googlebigquery.html">Google BigQuery</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/greenplum.html">Greenplum</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/sqlbase.html">Gupta SQLBase</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/h2.html">H2</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/hypersonic.html">Hypersonic</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/universe.html">IBM Universe</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/infinidb.html">InfiniDB</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/infobright.html">Infobright DB</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/informix.html">informix</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/ingres.html">ingres</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/interbase.html">interbase</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/kingbasees.html">kingbase es</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/mariadb.html">Mariadb</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/sapdb.html">MaxDB (SAP DB)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/monetdb.html">monetdb</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/mssql.html">MS SqlServer</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/mssqlnative.html">MS SqlServer (Native)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/mysql.html">MySql</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/netezza.html">Netezza</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/oracle.html">Oracle</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/oraclerdb.html">Oracle RDB</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/postgresql.html">PostgreSQL</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/redshift.html">Redshift</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/snowflake.html">Snowflake</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/sqlite.html">SqLite</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/sybase.html">Sybase</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/sybaseiq.html">Sybase IQ</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/teradata.html">Teradata</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/vectorwise.html">Vectorwise</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../databases/vertica.html">Vertica</a> </li> </ul> </li> <li class="nav-item" data-depth="2"> <button class="nav-item-toggle"></button> <a class="nav-link" href="../actions.html">Action Plugins</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/abort.html">Abort</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/addresultfilenames.html">Add filenames to result</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/checkdbconnection.html">Check Db connections</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/checkfilelocked.html">Check Files Locked</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/webserviceavailable.html">Check if Webservice is available</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/xmlwellformed.html">Check if XML file is well formed</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/filesexist.html">Checks if files exists</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/columnsexist.html">Columns exist in a table</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/copyfiles.html">Copy Files</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/copymoveresultfilenames.html">Copy Or Move Files from result</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/createfile.html">Create File</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/createfolder.html">Create Folder</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/pgpdecryptfiles.html">Decrypt files with PGP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/delay.html">Delay</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/deletefile.html">Delete File</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/deleteresultfilenames.html">Delete filenames from result</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/deletefiles.html">Delete Files</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/deletefolders.html">Delete Folders</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/msgboxinfo.html">Display Msgbox info</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/dostounix.html">Dos To Unix</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/dtdvalidator.html">DTD Validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/dummy.html">Dummy</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/pgpencryptfiles.html">Encrypt files with PGP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/repeat-end.html">End Repeat</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/evalfilesmetrics.html">Evaluate File Metrics</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/evaluatetablecontent.html">Evaluate rows number in a table</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/filecompare.html">File compare</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/fileexists.html">File Exists</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/folderisempty.html">Folder is Empty</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/folderscompare.html">Folders Compare</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/ftpdelete.html">FTP delete</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/ftp.html">Get a file with FTP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/ftpsget.html">Get a file with FTPS</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/sftp.html">Get a file with SFTP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/getpop.html">Get Mail from POP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/http.html">Http Get</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/eval.html">JavaScript</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/mail.html">Mail</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/mailvalidator.html">Mail Validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/movefiles.html">Move Files</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/mssqlbulkload.html">MS SQL Server Bulk Loader</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/mysqlbulkfile.html">MySQL Bulk File</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/mysqlbulkload.html">MySQL Bulk Loader</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/pgpfiles.html">PGP Files</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/ping.html">Ping</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/pipeline.html">Pipeline</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/ftpput.html">Put a file with FTP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/sftpput.html">Put a file with SFTP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/repeat.html">Repeat</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/syslog.html">Send information using Syslog</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/sendnagiospassivecheck.html">Send Nagios check</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/setvariables.html">Set Variables</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/shell.html">Shell Action</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/simpleeval.html">Simple Evaluation</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/snmptrap.html">Snmp Trap</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/sql.html">SQL Script Executor</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/start.html">Start</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/success.html">Success Action</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/tableexists.html">Table Exists</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/telnet.html">Telnet a host</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/truncatetables.html">Truncate Tables</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/unzip.html">Unzip</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/ftpsput.html">Upload files to FTPS</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/pgpverify.html">Verify file signature with PGP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/waitforfile.html">Wait for file</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/waitforsql.html">Wait for SQL</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/workflow.html">Workflow</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/writetofile.html">Write to File</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/writetolog.html">Write to Log</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/xsdvalidator.html">XSD Validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/xslt.html">XSL Transformation</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../actions/zipfile.html">Zip File</a> </li> </ul> </li> </ul> </li> <li class="nav-item" data-depth="1"> <button class="nav-item-toggle"></button> <a class="nav-link" href="../../samples/samples.html">Samples</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="../../samples/dummy-sample.html">Dummy Sample</a> </li> </ul> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="../../faq/faq.html">Frequently Asked Questions</a> </li> <li class="nav-item" data-depth="1"> <a class="nav-link" href="../../image-testpage.html">Image testing page</a> </li> </ul> </li> </ul> </nav> </div> <div class="nav-panel-explore" data-panel="explore"> <div class="context"> <span class="title">User manual</span> <span class="version">latest</span> </div> <ul class="components"> <li class="component"> <span class="title">Development Documentation</span> <ul class="versions"> <li class="version is-latest"> <a href="../../../../dev-manual/latest/index.html">latest</a> </li> </ul> </li> <li class="component"> <span class="title">Technical Documentation</span> <ul class="versions"> <li class="version is-latest"> <a href="../../../../tech-manual/latest/index.html">latest</a> </li> </ul> </li> <li class="component is-current"> <span class="title">User manual</span> <ul class="versions"> <li class="version is-current is-latest"> <a href="../../index.html">latest</a> </li> </ul> </li> </ul> </div> </div> </aside> </div> <main> <div class="toolbar" role="navigation"> <button class="nav-toggle"></button> <a href="../../index.html" class="home-link"></a> <nav class="breadcrumbs" aria-label="breadcrumbs"> <ul> <li><a href="../../index.html">User manual</a></li> <li><a href="../plugins.html">Plugins</a></li> <li><a href="../transforms.html">Transform Plugins</a></li> <li><a href="metainject.html">Metadata Injection</a></li> </ul> </nav> <div class="edit-this-page"><a href="https://github.com/apache/incubator-hop/edit/master/plugins/transforms/metainject/src/main/doc/metainject.adoc">Edit this Page</a></div> </div> <article class="doc"> <h1 class="page">Metadata Injection</h1> <div class="sect1"> <h2 id="_description"><a class="anchor" href="#_description"></a>Description</h2> <div class="sectionbody"> <div class="paragraph"> <p>Metadata injection inserts data from various sources into a pipeline at runtime. This insertion reduces repetitive ETL tasks.</p> </div> <div class="paragraph"> <p>For example, you might have a simple pipeline to load transaction data values from a supplier, filter specific values, and output them to a file. If you have more than one supplier, you would need to run this simple pipeline for each supplier. Yet, with metadata injection, you can expand this simple repetitive pipeline by inserting metadata from another pipeline that contains the ETL Metadata Injection transform. This transform coordinates the data values from the various inputs through the metadata you define. This process reduces the need for you to adjust and run the repetitive pipeline for each specific input.</p> </div> <div class="paragraph"> <p>The repetitive pipeline is known as the template pipeline. The template pipeline is called by the ETL Metadata Injection transform. You will create a pipeline to prepare what common values you want to use as metadata and inject these specific values through the ETL Metadata Injection transform.</p> </div> <div class="paragraph"> <p>We recommend the following basic procedure for using this transform to inject metadata:</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p>Optimize your data for injection, such as preparing folder structures and inputs.</p> </li> <li> <p>Develop pipelines for the repetitive process (the template pipeline), for metadata injection through the ETL Metadata Injection transform, and for handling multiple inputs.</p> </li> </ol> </div> <div class="paragraph"> <p>The metadata is injected into the template pipeline through any transform that supports metadata injection.</p> </div> </div> </div> <div class="sect1"> <h2 id="_options"><a class="anchor" href="#_options"></a>Options</h2> <div class="sectionbody"> <div class="sect2"> <h3 id="_general"><a class="anchor" href="#_general"></a>General</h3> <div class="table-wrapper"><table class="tableblock frame-all grid-all"> <colgroup> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Option</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Transform name</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Name of the transform.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Pipeline</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Specify your template pipeline by entering in its path. Click Browse to display and enter the path details using the Virtual File System Browser.</p> <p class="tableblock">If you select a pipeline that has the same root path as the current pipeline, the variable ${Internal.Transform.Current.Directory} will automatically be inserted in place of the common root path. For example, if the current pipeline&#8217;s path is /home/admin/pipeline.hpl and you select a pipeline in the folder /home/admin/path/sub.hpl then the path will automatically be converted to ${Internal.Transform.Current.Directory}/path/sub.hpl.</p></td> </tr> </tbody> </table></div> <div class="paragraph"> <p>The ETL Metadata Injection transform features the two tabs with fields. Each tab is described below.</p> </div> </div> <div class="sect2"> <h3 id="_inject_metadata_tab"><a class="anchor" href="#_inject_metadata_tab"></a>Inject Metadata Tab</h3> <div class="table-wrapper"><table class="tableblock frame-all grid-all"> <colgroup> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Option</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Target injection transform key</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Lists the available fields in each transform of the template pipeline that can be injected with metadata.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Target description</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Describes how the target fields relate to their target transforms.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Source transform</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Lists the transform associated with the fields to be injected into the target fields as metadata.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Source field</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Lists the fields to be injected into the target fields as metadata.</p></td> </tr> </tbody> </table></div> <div class="paragraph"> <p>To specify the source field as metadata to be injected, perform the following transforms:</p> </div> <div class="olist arabic"> <ol class="arabic"> <li> <p>In the Target injection transform key column, double-click the field for which you want to specify a source field. The Source field dialog box opens.</p> </li> <li> <p>Select a source field and click OK.</p> </li> <li> <p>Optionally, select Use constant value to specify a constant value for the injected metadata through one of the following actions:</p> <div class="ulist"> <ul> <li> <p>Manually entering a value.</p> </li> <li> <p>Using an internal variable to set the value (${Internal.transform.Unique.Count} for example).</p> </li> <li> <p>Using a combination of manually specified values and parameter values (${FILE_PREFIX}_${FILE_DATE}.txt for example).</p> </li> </ul> </div> </li> </ol> </div> <div class="sect3"> <h4 id="_injecting_metadata_into_the_etl_metadata_injection_transform"><a class="anchor" href="#_injecting_metadata_into_the_etl_metadata_injection_transform"></a>Injecting Metadata into the ETL Metadata Injection transform</h4> <div class="paragraph"> <p>For injecting metadata into the ETL Metadata Injection transform itself, the following exceptions apply:</p> </div> <div class="ulist"> <ul> <li> <p>To inject a method for how to specify a field (such as by FILENAME), set a PIPELINE_SPECIFICATION_METHOD constant to the field of an input transform. You can then map the field as a source to the PIPELINE_SPECIFICATION_METHOD constant in the ETL Metadata Injection transform.</p> </li> <li> <p>The target field for the ETL Metadata Injection transform inserting the metadata into the original injection is defined by [GROUP NAME].[FIELD NAME]. For example, if the GROUP NAME is 'OUTPUT_FIELDS' and the FIELD NAME is 'OUTPUT_FIELDNAME', you would set the target field to 'OUTPUT_FIELDS.OUTPUT_FIELDNAME'.</p> </li> </ul> </div> </div> </div> <div class="sect2"> <h3 id="_options_tab"><a class="anchor" href="#_options_tab"></a>Options Tab</h3> <div class="table-wrapper"><table class="tableblock frame-all grid-all"> <colgroup> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Option</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">transform to read from (optional)</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Optionally, select a transform in your template pipeline to pass data directly to a transform following the ETL Metadata Injection transform in your current pipeline.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Field name</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If transform to read from is selected, enter the name of the field passed directly from the transform in the template pipeline.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Type</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If transform to read from is selected, select the type of the field passed directly from the transform in the template pipeline.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Length</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If transform to read from is selected, enter the length of the field passed directly from the transform in the template pipeline.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Precision</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If transform to read from is selected, enter the precision of the field passed directly from the transform in the template pipeline.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Optional target file (hpl after injection)</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">For initial pipeline development or debugging, specify an optional file for creating and saving a pipeline of your template after metadata injection occurs. The resulting pipeline will be your template pipeline with the metadata already injected as constant values.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Streaming source transform</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Select a source transform in your current pipeline to directly pass data to the Streaming target transform in the template pipeline.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Streaming target transform</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Select the target transform in your template pipeline to receive data directly from the Streaming source transform.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Run resulting pipeline</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Select to inject metadata and run the template pipeline. If this option is not selected, metadata injection occurs, but the template pipeline does not run.</p></td> </tr> </tbody> </table></div> </div> </div> </div> </article> </main> </div> <footer> <div class="footer"> <dl> <dt>Overview</dt> <dd><a href="../../../../download/">Download</a></dd> <dd><a href="../../../../manual/latest/">Getting started</a></dd> </dl> <dl> <dt>Community</dt> <dd><a target="_blank" href="https://issues.apache.org/jira/projects/HOP/issues">Jira</a></dd> <dd><a target="_blank" href="https://chat.project-hop.org">Chat</a></dd> <dd><a target="_blank" href="../../../../community/team/">Team</a></dd> </dl> <dl> <dt>About</dt> <dd><a target="_blank" href="https://www.apache.org/licenses/" title="License">License</a></dd> </dl> <p> &copy; 2019-2021 The Hop Team.<br> All marks mentioned may be trademarks or registered trademarks of their respective owners. </p> </div> </footer> <script src="../../../../_/js/site-8ed57175ed.js"></script> <script async src="../../../../_/js/vendor/highlight-41b831b4c4.js"></script> <script src="../../../../_/js/vendor/cookies-eu-banner-d4a1518c50.js"></script> <script> new CookiesEuBanner(function () {
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-151580460-1', 'auto' ,{'anonymize_ip':true});
ga('send', 'pageview');
}, true, false); </script> <script src="../../../../_/js/vendor/docsearch-4983f0f1ec.min.js"></script> <!-- fetched from https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js --> <script> var search = docsearch({
appId: 'IEDZCR8JT4',
apiKey: '587e7bafb978fa5e4640ab18bfbd9b99',
indexName: 'hop-doc',
inputSelector: '#search-input',
autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
algoliaOptions: { hitsPerPage: 10 }
}).autocomplete
search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
function focusSearchInput () { document.querySelector('#search-input').focus() }
if (document.querySelector('.home-link.is-current')) window.addEventListener('load', focusSearchInput) </script> </body> </html>