blob: 545ac0e157f29991c1beb5a1393c10f9f0a618cb [file] [log] [blame]
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Create a Pipeline :: Apache Hop (Incubating)</title> <link rel="canonical" href="https://hop.apache.org/manual/latest/hop-gui/pipelines/create-pipeline.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="../index.html">Hop Gui</a> <ul class="nav-list"> <li class="nav-item" data-depth="2"> <a class="nav-link" href="../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="pipelines.html">Pipelines</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="hop-pipeline-editor.html">Pipeline Editor</a> </li> <li class="nav-item is-current-page" data-depth="3"> <a class="nav-link" href="create-pipeline.html">Create a Pipeline</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="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="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="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="pipeline-run-configurations/beam-direct-pipeline-engine.html">Beam Direct</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="pipeline-run-configurations/beam-flink-pipeline-engine.html">Beam Flink</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="pipeline-run-configurations/beam-spark-pipeline-engine.html">Beam Spark</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="pipeline-run-configurations/local-pipeline-engine.html">Local Native</a> </li> <li class="nav-item" data-depth="4"> <a class="nav-link" href="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="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="../workflows/workflows.html">Workflows</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../workflows/create-workflow.html">Create a Workflow</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../workflows/run-debug-workflow.html">Run and Debug a Workflow</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../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="../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/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="../../plugins/transforms.html">Transform Plugins</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/abort.html">Abort</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/checksum.html">Add a checksum</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/constant.html">Add Constants</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/addsequence.html">Add Sequence</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/fieldschangesequence.html">Add value fields changing sequence</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/addxml.html">Add XML</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/analyticquery.html">Analytic Query</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/append.html">Append Streams</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/beambigqueryinput.html">Beam BigQuery Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/beambigqueryoutput.html">Beam BigQuery Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/beampublisher.html">Beam GCP Pub/Sub : Publish</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/beamsubscriber.html">Beam GCP Pub/Sub : Subscribe</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/beaminput.html">Beam Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/beamconsume.html">Beam Kafka Consume</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/beamproduce.html">Beam Kafka Produce</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/beamoutput.html">Beam Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/beamtimestamp.html">Beam Timestamp</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/beamwindow.html">Beam Window</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/blockingtransform.html">Blocking transform</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/blockuntiltransformsfinish.html">Blocking until transforms finish</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/calculator.html">Calculator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/dbproc.html">Call DB procedure</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/changefileencoding.html">Change file encoding</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/filelocked.html">Check if file is locked</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/webserviceavailable.html">Check if webservice is available</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/clonerow.html">Clone row</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/closure.html">Closure</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/columnexists.html">Column exists</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/combinationlookup.html">Combination lookup/update</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/concatfields.html">Concat Fields</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/rowstoresult.html">Copy rows to result</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/creditcardvalidator.html">Credit card validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/csvinput.html">CSV File Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/cubeinput.html">Cube input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/cubeoutput.html">Cube output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/databasejoin.html">Database Join</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/databaselookup.html">Database Lookup</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/datagrid.html">Data Grid</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/validator.html">Data Validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/delay.html">Delay row</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/delete.html">Delete</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/detectemptystream.html">Detect Empty Stream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/dimensionlookup.html">Dimension lookup/update</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/dummy.html">Dummy (do nothing)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/dynamicsqlrow.html">Dynamic SQL row</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/edi2xml.html">Edi to XML</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/mailinput.html">Email Messages Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/excelwriter.html">Excel writer</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/execprocess.html">Execute a process</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/execsqlrow.html">Execute row SQL script</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/sql.html">Execute SQL script</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/fake.html">Fake data</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/fileexists.html">File exists</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/filesfromresult.html">Files from result</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/filestoresult.html">Files to result</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/filterrows.html">Filter Rows</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/fuzzymatch.html">Fuzzy match</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/randomvalue.html">Generate Random Value</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/getxmldata.html">Get Data From XML</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/getfilenames.html">Get filenames</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/getfilesrowcount.html">Get files rowcount</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/getslavesequence.html">Get ID from slave server</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/recordsfromstream.html">Get records from stream </a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/rowsfromresult.html">Get Rows from Result</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/getsubfolders.html">Get SubFolder names</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/systemdata.html">Get System Info</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/gettablenames.html">Get table names</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/getvariable.html">Get variables</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/groupby.html">Group By</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/http.html">HTTP client</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/httppost.html">HTTP Post</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/detectlastrow.html">Identify last row in a stream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/ifnull.html">If Null</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/injector.html">Injector</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/insertupdate.html">Insert / Update</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/javafilter.html">Java Filter</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/javascript.html">JavaScript</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/joinrows.html">Join Rows</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/jsoninput.html">JSON Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/jsonoutput.html">JSON Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/ldapinput.html">LDAP Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/ldapoutput.html">LDAP Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/ldifinput.html">LDIF Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/loadfileinput.html">Load file content in memory</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/mail.html">Mail</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/mailvalidator.html">Mail Validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/memgroupby.html">Memory Group By</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/mergejoin.html">Merge Join</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/mergerows.html">Merge rows (diff)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/metainject.html">Metadata Injection</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/excelinput.html">Microsoft Excel input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/exceloutput.html">Microsoft Excel output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/mongodbinput.html">MongoDB Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/mongodboutput.html">MongoDB Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/multimerge.html">Multiway Merge Join</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/nullif.html">Null If</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/numberrange.html">Number range</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/pgpdecryptstream.html">PGP decrypt stream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/pgpencryptstream.html">PGP encrypt stream</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/pipelineexcecutor.html">Pipeline Executor</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/pgbulkloader.html">PostgreSQL Bulk Loader</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/processfiles.html">Process files</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/propertyinput.html">Read data (key, value) from properties files.</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/regexeval.html">Regex Evaluation</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/replacestring.html">Replace in String</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/reservoirsampling.html">Reservoir Sampling</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/rest.html">REST Client</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/denormaliser.html">Row Denormaliser</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/flattener.html">Row Flattener</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/rowgenerator.html">Row Generator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/normaliser.html">Row Normaliser</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/ssh.html">Run SSH commands</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/selectvalues.html">Select Values</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/syslog.html">Send Message to Syslog</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/setvaluefield.html">Set field Value</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/setvalueconstant.html">Set field value to a constant</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/setvariable.html">Set Variables</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/sortedmerge.html">Sorted Merge</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/sort.html">Sort Rows</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/splitfieldtorows.html">Split fields</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/fieldsplitter.html">Split Fields</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/sqlfileoutput.html">SQL File Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/streamlookup.html">Stream Lookup</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/streamschemamerge.html">Stream Schema Merge</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/stringoperations.html">String operations</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/stringcut.html">Strings cut</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/switchcase.html">Switch / Case</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/synchronizeaftermerge.html">Synchronize after merge </a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/tablecompare.html">Table Compare</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/tableexists.html">Table Exists</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/tableinput.html">Table Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/tableoutput.html">Table Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/terafast.html">Teradata Bulk Loader</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/textfileinput.html">Text File Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/textfileoutput.html">Text File Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/tokenreplacement.html">Token Replacement</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/uniquerows.html">Unique Rows</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/uniquerowsbyhashset.html">Unique Rows (HashSet)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/update.html">Update</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/userdefinedjavaclass.html">User Defined Java Class</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/janino.html">User Defined Java Expression</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/valuemapper.html">Value Mapper</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/webservices.html">Web services lookup</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/workflowexecutor.html">Workflow Executor</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/propertyoutput.html">Write data to properties file</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/writetolog.html">Write to log</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/xmlinputstream.html">XML Input Stream (StAX) </a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/xmljoin.html">XML Join</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/xmloutput.html">XML Output</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/xsdvalidator.html">XSD Validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/xslt.html">XSL Transformation</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/yamlinput.html">Yaml Input</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/transforms/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="../../plugins/databases.html">Database Plugins</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/derby.html">Apache Derby</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/as400.html">AS400</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/cache.html">Cache</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/db2.html">DB2</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/exasol.html">Exasol</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/firebird.html">firebird</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/googlebigquery.html">Google BigQuery</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/greenplum.html">Greenplum</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/sqlbase.html">Gupta SQLBase</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/h2.html">H2</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/hypersonic.html">Hypersonic</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/universe.html">IBM Universe</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/infinidb.html">InfiniDB</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/infobright.html">Infobright DB</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/informix.html">informix</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/ingres.html">ingres</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/interbase.html">interbase</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/kingbasees.html">kingbase es</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/mariadb.html">Mariadb</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/sapdb.html">MaxDB (SAP DB)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/monetdb.html">monetdb</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/mssql.html">MS SqlServer</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/mssqlnative.html">MS SqlServer (Native)</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/mysql.html">MySql</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/netezza.html">Netezza</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/oracle.html">Oracle</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/oraclerdb.html">Oracle RDB</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/postgresql.html">PostgreSQL</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/redshift.html">Redshift</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/snowflake.html">Snowflake</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/sqlite.html">SqLite</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/sybase.html">Sybase</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/sybaseiq.html">Sybase IQ</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/teradata.html">Teradata</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/databases/vectorwise.html">Vectorwise</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/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="../../plugins/actions.html">Action Plugins</a> <ul class="nav-list"> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/abort.html">Abort</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/addresultfilenames.html">Add filenames to result</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/checkdbconnection.html">Check Db connections</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/checkfilelocked.html">Check Files Locked</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/webserviceavailable.html">Check if Webservice is available</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/xmlwellformed.html">Check if XML file is well formed</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/filesexist.html">Checks if files exists</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/columnsexist.html">Columns exist in a table</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/copyfiles.html">Copy Files</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/copymoveresultfilenames.html">Copy Or Move Files from result</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/createfile.html">Create File</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/createfolder.html">Create Folder</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/pgpdecryptfiles.html">Decrypt files with PGP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/delay.html">Delay</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/deletefile.html">Delete File</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/deleteresultfilenames.html">Delete filenames from result</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/deletefiles.html">Delete Files</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/deletefolders.html">Delete Folders</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/msgboxinfo.html">Display Msgbox info</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/dostounix.html">Dos To Unix</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/dtdvalidator.html">DTD Validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/dummy.html">Dummy</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/pgpencryptfiles.html">Encrypt files with PGP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/repeat-end.html">End Repeat</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/evalfilesmetrics.html">Evaluate File Metrics</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/evaluatetablecontent.html">Evaluate rows number in a table</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/filecompare.html">File compare</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/fileexists.html">File Exists</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/folderisempty.html">Folder is Empty</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/folderscompare.html">Folders Compare</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/ftpdelete.html">FTP delete</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/ftp.html">Get a file with FTP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/ftpsget.html">Get a file with FTPS</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/sftp.html">Get a file with SFTP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/getpop.html">Get Mail from POP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/http.html">Http Get</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/eval.html">JavaScript</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/mail.html">Mail</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/mailvalidator.html">Mail Validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/movefiles.html">Move Files</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/mssqlbulkload.html">MS SQL Server Bulk Loader</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/mysqlbulkfile.html">MySQL Bulk File</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/mysqlbulkload.html">MySQL Bulk Loader</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/pgpfiles.html">PGP Files</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/ping.html">Ping</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/pipeline.html">Pipeline</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/ftpput.html">Put a file with FTP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/sftpput.html">Put a file with SFTP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/repeat.html">Repeat</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/syslog.html">Send information using Syslog</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/sendnagiospassivecheck.html">Send Nagios check</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/setvariables.html">Set Variables</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/shell.html">Shell Action</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/simpleeval.html">Simple Evaluation</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/snmptrap.html">Snmp Trap</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/sql.html">SQL Script Executor</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/start.html">Start</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/success.html">Success Action</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/tableexists.html">Table Exists</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/telnet.html">Telnet a host</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/truncatetables.html">Truncate Tables</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/unzip.html">Unzip</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/ftpsput.html">Upload files to FTPS</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/pgpverify.html">Verify file signature with PGP</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/waitforfile.html">Wait for file</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/waitforsql.html">Wait for SQL</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/workflow.html">Workflow</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/writetofile.html">Write to File</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/writetolog.html">Write to Log</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/xsdvalidator.html">XSD Validator</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/actions/xslt.html">XSL Transformation</a> </li> <li class="nav-item" data-depth="3"> <a class="nav-link" href="../../plugins/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="../index.html">Hop Gui</a></li> <li><a href="pipelines.html">Pipelines</a></li> <li><a href="create-pipeline.html">Create a Pipeline</a></li> </ul> </nav> <div class="edit-this-page"><a href="https://github.com/apache/incubator-hop-docs/edit/asf-site/hop-user-manual/modules/ROOT/pages/hop-gui/pipelines/create-pipeline.adoc">Edit this Page</a></div> </div> <article class="doc"> <h1 class="page">Create a Pipeline</h1> <div id="preamble"> <div class="sectionbody"> <div class="paragraph"> <p>TODO: this content is based on the <a href="https://hop.apache.org/manual/latest/getting-started.html">Getting Started Guide</a>. Elaborate more.</p> </div> <div class="paragraph"> <p>Pipelines are the fundamentals of your project. A pipeline contains operations executed in a predefined order. Pipelines consist of a chain of transforms that read, process or write data. The image below shows a simple pipeline that reads data from a table, adds a message to the data and sends out an email.</p> </div> <div class="imageblock text-left"> <div class="content"> <img src="../../_images/hop-gui/pipeline/simple-pipeline.png" alt="Hop - Simple Pipeline" width="75%"> </div> </div> </div> </div> <div class="sect1"> <h2 id="_concepts"><a class="anchor" href="#_concepts"></a>Concepts</h2> <div class="sectionbody"> <div class="paragraph"> <p>Pipelines consist of transforms connected by hops. In the mail example 'Table input', 'Add message' and 'Mail' are all transforms.</p> </div> <div class="ulist"> <ul> <li> <p><strong>transforms</strong> are the basic operations in your pipeline. A pipeline typically consists of a lot of transforms that are chained together by hops. Transforms are granular, in the sense that each transform is designed and optimized to perform one and only one task. Although one transform by itself may not offer spectacular functionality, the combination of all transforms in a pipeline is makes your pipelines powerful.</p> </li> <li> <p><strong>hops</strong> link transforms together. When a transform finishes processing the data set it received, that data set is passed to the next transform through a hop. Hops are uni-directional (data can&#8217;t flow backwards). Hops only buffer and pass data around, the hop itself is transform-agnostic, it doesn&#8217;t know anything about the transforms it passes data from or to. Some transforms can read from or write to other transforms conditionally to or from a number of other transforms, but this a transform-specific configuration. The hop is unaware of it. Hops can be disabled by clicking on them, or through right-click &#8594; disable.</p> </li> </ul> </div> </div> </div> <div class="sect1"> <h2 id="_creation"><a class="anchor" href="#_creation"></a>Creation</h2> <div class="sectionbody"> <div class="paragraph"> <p>Create a new pipeline through the <a href="https://hop.apache.org/manual/latest/hop-gui/workitems.html">New Work Item</a> dialog. You&#8217;ll be presented with the dialog shown below.</p> </div> <div class="imageblock text-left"> <div class="content"> <img src="../../_images/hop-gui/pipeline/new-pipeline.png" alt="Hop - New Pipeline" width="75%"> </div> </div> <div class="paragraph"> <p>When you are finished with your pipeline, save it. This can be done via the File menu, the icons or using CTLR s or Command s. For new pipelines a file browser is displayed to navigate towards the location you want to store the file.</p> </div> </div> </div> <div class="sect1"> <h2 id="_add_transform_to_your_pipelines"><a class="anchor" href="#_add_transform_to_your_pipelines"></a>Add Transform to your pipelines</h2> <div class="sectionbody"> <div class="paragraph"> <p>Click anywhere in the pipeline canvas, the area where you&#8217;ll see the image below.</p> </div> <div class="imageblock text-left"> <div class="content"> <img src="../../_images/getting-started/getting-started-click-anywhere.png" alt="Hop - Click Anywhere" width="45%"> </div> </div> <div class="paragraph"> <p>Upon clicking, you&#8217;ll be presented with the dialog shown below. The search box at the top of this dialog works for transform, name, tags (TODO) etc. Once you&#8217;ve found the transform you&#8217;re looking for, click on it to add it to your pipeline. An alternative to clicking is arrow key navigation + enter. Repeat this step now or whenever you want to add more transforms to your pipeline. Once you&#8217;ve added a transform to your pipeline, you can drag to reposition it.</p> </div> <div class="paragraph"> <p>Check the <a href="https://hop.apache.org/manual/latest/plugins/transforms.html">list</a> of transforms to add to your pipeline for more details.</p> </div> <div class="imageblock text-left"> <div class="content"> <img src="../../_images/getting-started/getting-started-add-transform.png" alt="Hop - Add Transform" width="75%"> </div> </div> <div class="paragraph"> <p>Add a 'Generate Rows' and a 'Add Sequence' transform, and your pipeline should like the one below.</p> </div> <div class="imageblock text-left"> <div class="content"> <img src="../../_images/getting-started/getting-started-add-two-transforms.png" alt="Hop - Add two transforms" width="75%"> </div> </div> <div class="paragraph"> <p>The transform object can be configured through a single click on the object. The menu displayed below will be shown based on your transform object.</p> </div> <div class="imageblock text-left"> <div class="content"> <img src="../../_images/hop-gui/pipeline/transforms.png" alt="Hop - transforms" width="75%"> </div> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all"> <colgroup> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Action</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Detach transform</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Detach the transform from the pipeline</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Edit the transform</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Edit the transform&#8217;s metadata</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Copy transform to clipboard</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Copies selected items to clipboard.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Create hop</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Creates a new hop between two transforms.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Set the number of transforms</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Starts several instances of a transform in parallel.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Preview output</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Allows you to preview the results of the transform.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Debug output</p></td> <td class="tableblock halign-left valign-top"></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Show the fields entering this transform</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Shows metadata, like the field name and type for fields coming into the transform.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Show the fields exiting this transform</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Shows metadata, like the field name and type for fields coming out of the transform.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Distribute rows</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">In case of more than one hop the data is distributed between the next transforms.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Copy rows</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">In case of more than one hop the daya is copied to the next transforms.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Specify transform partitioning</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Specify how rows of data need to be grouped into partitions allowing parallel execution where similar rows need to end up on the same transform copy</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Edit transform description</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Add a description to the transform.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Transform error handling</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Set the error handling for the transform, not available for all transforms.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Delete this transform</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Delete selected transform from the canvas.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Edit Custom Logging</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Edit the custom log settings for this transform. This will change the log level used for this transform.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Clear Custom Logging</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Clear custom log settings. This will clear the log level used for this transform.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Sniff output</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Take a look at 50 rows coming out of this transform. This will show a real-time table with a continuous output of the selected transform.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Set input data set</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Defines which data to use instead of the active input transform, applies to the selected unit test</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Clear input data set</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Remove a defined data set from the selected unit test</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Set golden data set</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The input to this transform is taken and compared to the golden data set you are selecting.\nThe transform itself is not executed during testing</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Clear golden data set</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Remove a defined input data set from this transform unit test</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Create data set</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Create an empty dataset with the output fields of this transform</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Write rows to data set</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Run the current pipeline and write the data to a data set</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Remove from test</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">When this unit test is run, do not include this transform</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Include in test</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Run the current pipeline and write the data to a data set</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Bypass in tess</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">When this unit test is run, bypass this transform (replace with a dummy)</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Remove bypass in test</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Do not bypass this transform in the current pipeline during testing</p></td> </tr> </tbody> </table></div> </div> </div> <div class="sect1"> <h2 id="_add_a_hop_between_transforms"><a class="anchor" href="#_add_a_hop_between_transforms"></a>Add a Hop between transforms</h2> <div class="sectionbody"> <div class="paragraph"> <p>There are a number of ways to create a hop:</p> </div> <div class="ulist"> <ul> <li> <p>shift-drag: while holding down the shift key on your keyboard. Click on a transform, while holding down your primary mouse button, drag to the second transform. Release the primary mouse button and the shift key.</p> </li> <li> <p>scroll-drag: scroll-click on a transform , while holding down your mouse&#8217;s scroll button, drag to the second transform. Release the scroll button.</p> </li> <li> <p>click on a transform in your pipeline to open the 'click anywhere' dialog. Click the 'Create hop' image::getting-started/icons/HOP.svg[Create hop, 25px, align="bottom"] button and select the transform you want to create the hop to.</p> </li> </ul> </div> <div class="imageblock text-left"> <div class="content"> <img src="../../_images/getting-started/getting-started-create-hop.png" alt="Hop - Create Hop" width="65%"> </div> </div> <div class="paragraph"> <p>Some transforms result in different types of hops.</p> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all"> <colgroup> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Hop</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Result is TRUE</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Specifies that the transform will be executed only when the result from the previous transform is true</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Result is FALSE</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">pecifies that the transform will be executed only when the result from the previous transform is false</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Main output of transform</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The default hop between two transforms</p></td> </tr> </tbody> </table></div> </div> </div> <div class="sect1"> <h2 id="_pipeline_properties"><a class="anchor" href="#_pipeline_properties"></a>Pipeline properties</h2> <div class="sectionbody"> <div class="paragraph"> <p>Pipeline properties are a collection of properties that describe the pipeline and configure its behavior.</p> </div> <div class="paragraph"> <p>The properties dialog can be opened by double clicking on the pipeline canvas.</p> </div> <div class="paragraph"> <p>Following properties can be configured:</p> </div> <div class="ulist"> <ul> <li> <p>Pipeline</p> </li> <li> <p>Parameters</p> </li> <li> <p>Monitoring</p> </li> </ul> </div> <div class="imageblock text-left"> <div class="content"> <img src="../../_images/hop-gui/pipeline/properties-pipeline.png" alt="Pipeline properties" width="75%"> </div> </div> <div class="paragraph"> <p>The Pipeline tab allows you to specify general properties about the pipeline including:</p> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all"> <colgroup> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Property</th> <th class="tableblock halign-left valign-top">Description</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Pipeline name</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The name of the pipeline</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Synchronize name with filename</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">If option is enabled the filename and pipeline name are synchronized.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Pipeline filename</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The filename of the pipeline</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Short description of the pipeline</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Extended description</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Long extended description of the pipeline</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Status</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Draft or production status</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Version</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Description of the version</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Created by</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Displays the original creator of the pipeline</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Created at</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Displays the date and time when the pipeline was created.</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Last modified by</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Displays the last user that modified the pipeline</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Last modified at</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Displays the date and time when the pipeline was last modified.</p></td> </tr> </tbody> </table></div> <div class="paragraph"> <p>The parameters tab allows you to specify parameters specific for the pipeline. Parameters are defined by a name, a default value and a description.</p> </div> <div class="imageblock text-left"> <div class="content"> <img src="../../_images/hop-gui/pipeline/parameters-pipeline.png" alt="Parameters properties" width="75%"> </div> </div> <div class="paragraph"> <p>The monitoring tab allows you to specify the monitoring of the pipeline.</p> </div> <div class="imageblock text-left"> <div class="content"> <img src="../../_images/hop-gui/pipeline/monitoring-pipeline.png" alt="Monitoring properties" width="75%"> </div> </div> <div class="paragraph"> <p>The options to set in this tab are:</p> </div> <div class="table-wrapper"><table class="tableblock frame-all grid-all"> <colgroup> <col> <col> <col> </colgroup> <thead> <tr> <th class="tableblock halign-left valign-top">Property</th> <th class="tableblock halign-left valign-top">Description</th> <th class="tableblock halign-left valign-top">Type</th> </tr> </thead> <tbody> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Enable transform performance monitoring</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Enable performance monitoring for the transforms in this pipeline</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">boolean</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Transform performance measurement interval (ms)</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">The interval (milliseconds) to monitor the performance for the transforms in this pipeline</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">integer</p></td> </tr> <tr> <td class="tableblock halign-left valign-top"><p class="tableblock">Maximum number of snapshots in memory</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">the number of performance monitoring snapshots to keep in memory for the transforms in this pipeline</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">integer</p></td> </tr> </tbody> </table></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>