{"title":"Joiner","nodeType":"Manipulator","id":"*WzkQfvBXnYxub9hJ","factoryName":"org.knime.base.node.preproc.joiner3.Joiner3NodeFactory","factoryId":"org.knime.base.node.preproc.joiner3.Joiner3NodeFactory","path":["Manipulation","Column","Split & Combine"],"owner":"knime","ownerAccountId":"account:team:b5f0848f-496d-4e6a-b869-fa3532248db7","description":"<p>This node combines two tables similar to a join in a database. It combines each row from the top input port with each row from the bottom input port that has identical values in selected columns. Rows that remain unmatched can also be output.</p>\n        ","shortDescription":"Combine matching rows from two tables","keywords":["Combine tables"],"deprecated":false,"streamable":true,"tags":["Manipulation","Column","Split & Combine","Streamable"],"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3BpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowYjM2YWM5Ny01ZWJhLTQwZTctOTE4OS1iYmU4ZDdkMGYyNGUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REFGNjAwRjM4OUU2MTFFNTkyQzJBQjlCNTFCMUUyMzIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REFGNjAwRjI4OUU2MTFFNTkyQzJBQjlCNTFCMUUyMzIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEOTJFN0JGRjE4MzQxMUU1ODEzQUUwRDBBNzRDODlBMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEOTJFN0MwMDE4MzQxMUU1ODEzQUUwRDBBNzRDODlBMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkwM/E0AAACrSURBVHjaYnzm5/+fARUwSm3ayIALeC3Yh6KeBaQBif+fgTgA18PEQCFgQXYu0DtEa9yW4EQdFzBCbcbmd3hg/v//n8F74X6sapjQAwUbn5GREacaJiya0GPlPz41YAOQAhIuIblxA9ZAQ1azNd4R4QLk2MCVkJAMQWFjBaCAw+IFDDWUJyRsBiOFPLYkjiLBhMVZjHicjCGHYQCOOIdKYQozEWMbPlcBBBgA7QM5HuYXQOwAAAAASUVORK5CYII=","sinceVersion":"4.2.0","views":[],"inPorts":[{"objectClass":"org.knime.core.node.BufferedDataTable","color":"000000","dataType":"Table","optional":false,"name":"Left table","description":"Left input table"},{"objectClass":"org.knime.core.node.BufferedDataTable","color":"000000","dataType":"Table","optional":false,"name":"Right table","description":"Right input table"}],"outPorts":[{"objectClass":"org.knime.core.node.BufferedDataTable","color":"000000","dataType":"Table","optional":false,"name":"Join result","description":"Either all results or the result of the inner join (if the unmatched rows are output in separate ports)"},{"objectClass":"org.knime.core.node.BufferedDataTable","color":"000000","dataType":"Table","optional":false,"name":"Left unmatched rows","description":"Unmatched rows from the left input table (top input port). Inactive if &#34;Output unmatched rows to separate ports&#34; is deactivated."},{"objectClass":"org.knime.core.node.BufferedDataTable","color":"000000","dataType":"Table","optional":false,"name":"Right unmatched rows","description":"Unmatched rows from the right input table (bottom input port). Inactive if &#34;Output unmatched rows to separate ports&#34; is deactivated."}],"dynInPorts":[],"dynOutPorts":[],"additionalSiteInformation":{"url":"https://update.knime.com/analytics-platform/5.12","trusted":true,"enabledByDefault":true,"name":"KNIME Analytics Platform 5.12 Update Site","version":"5.12.0"},"dialog":[{"sectionName":"Options","fields":[{"name":"Match","description":"Defines the logic for the matching criteria:\n<ul><li><b>All of the following</b> : If selected, joins two rows only when all matching criteria are satisfied</li><li><b>Any of the following</b> : If selected, joins two rows when at least one of the matching criteria is satisfied</li></ul>","optional":false},{"name":"Join columns","description":"Defines the columns from the top input (&#39;left&#39; table) and the bottom input (&#39;right&#39; table) that should be used for joining. For two rows to be joined, the row from the left input table must have the same value in column A as the row from the right input table in column B. RowIDs can be compared to RowIDs or regular columns, in which case the RowID will be interpreted as a string value.\n<ul><li><b>Top input (&#39;left&#39; table)</b> : Select the column from the top input table that should be used to compare with the column selected for the bottom input.</li><li><b>Bottom input (&#39;right&#39; table)</b> : Select the column from the bottom input table that should be used to compare with the column selected for the top input.</li></ul>","optional":false},{"name":"Compare values in join columns by","description":"Defines how to compare the values in the join columns:\n<ul><li><b>Value and type</b> : Two rows match only if their values in the join columns selected have the same value and type, e.g. Number (integer) values will never match Number (long) values because they have two different types.</li><li><b>String representation</b> : Use this option if you want the values to be converted to string before comparing them. In this way you compare only the value in the selected join columns.</li><li><b>Make integer types compatible</b> : Use this option to ignore type differences between Number (integer) and Number (long) types.</li></ul>","optional":false},{"name":"Matching rows","description":"Include rows that match on the selected column pairs.","optional":false},{"name":"Left unmatched rows","description":"Include rows from the left input table for which no matching row in the right input table is found.","optional":false},{"name":"Right unmatched rows","description":"Include rows from the right input table for which no matching row in the left input table is found.","optional":false},{"name":"Top input ('left' table)","description":"Select columns from top input (&#39;left&#39; table) that should be included or excluded in the output table.","optional":false},{"name":"Bottom input ('right' table)","description":"Select columns from bottom input (&#39;right&#39; table) that should be included or excluded in the output table.","optional":false},{"name":"Merge join columns","description":"If selected, the join columns of the right input table are merged into their join partners of the left input table. The merged column is named like the left join column if one of its join partners in the right table has the same name. If the join partners have different names, the merged column is named in the form &#34;left column&#61;right column&#34;.","optional":false},{"name":"If there are duplicate column names","description":"Defines what should happen if there are column names included in the output that have the same name:\n<ul><li><b>Append custom suffix</b> : Adds the defined custom suffix to the column name of the right table.</li><li><b>Do not execute</b> : Prevents the node to be executed if the columns have the same name.</li></ul>","optional":false},{"name":"Custom suffix","description":"The suffix to be added to the column name of the right table","optional":false},{"name":"Split join result into multiple tables","description":"Output unmatched rows (if selected under &#34;Include in output&#34;) at the second and third output port, i.e.\n<ul><li>top: Matching rows</li><li>middle: Left unmatched rows</li><li>bottom: Right unmatched rows</li></ul>","optional":false},{"name":"RowIDs","description":"Defines how the RowIDs of the output table are generated:\n<ul><li><b>Concatenate with separator</b> : The RowID of the output table will be made of the RowID of the top input (&#39;left&#39; table) and the RowID of the bottom (&#39;right&#39; table) separated by the defined separator.</li><li><b>Create new</b> : The RowIDs of the output table will be assigned sequential RowIDs, e.g. Row0, Row1, etc.</li><li><b>Retain</b> : If the matching rows have the same RowIDs in both input tables as a matching criteria the output table will keep the input tables RowIDs.</li></ul>","optional":false},{"name":"Separator","description":"The separator to be added in between RowIDs of the input tables to generate the RowIDs of the output table.","optional":false},{"name":"Row order","description":"Defines the row order for the output table rows.\n<ul><li><b>Arbitrary</b> : The order of the ouput table rows is defined based on the currently available memory. Select this to improve the performance of the node since the output does not have to be sorted. Be aware that it can produce different output orders on consecutive executions.</li><li><b>Input order</b> : Rows are output in three blocks:\n  <ol><li>matched rows</li><li>unmatched rows from left table</li><li>unmatched rows from right table</li></ol>\n  Each block is sorted so that rows are sorted based on their position in the left table. In case of rows with the same position in the left table, the sorting is determined by the row position in the right table.</li></ul>","optional":false},{"name":"Maximum number of temporary files","description":"Defines the number of temporary files that can be created during the join operation and possibly subsequent sorting operations. Increase the number of temporary files to improve the performance of the node. Be aware that the operating system might impose a limit on the maximum number of open files.","optional":false},{"name":"Hiliting enabled","description":"If selected, hiliting rows in the output will hilite the rows in the left and right input tables that contributed to that row. Equally, when hiliting a row in one of the input tables, all rows that the input row contributed to are hilited. Disabling this option reduces the memory footprint of the joiner, the disk footprint of the workflow, and may speed up the execution in cases where main memory is scarce.","optional":false}]}],"links":[{"text":"KNIME E-Learning Course (see \"Join\" section)","url":"https://www.knime.com/learning"}],"kudos":[{"accountId":"account:user:4bff2318-9da5-45bc-bfc1-414eb44b01c2","user":"paulohap","date":"2021-06-29T16:35:19+00:00"},{"accountId":"account:user:19976609-da52-4d08-9f94-d12e55037955","user":"ipazin","date":"2021-07-13T10:40:47+00:00"},{"accountId":"account:user:498b0732-17cb-40a8-bc35-fccbe94ac93e","user":"nborbas","date":"2023-04-27T09:06:16+00:00"},{"accountId":"account:user:601c06a4-283e-4270-9a8b-a5c7cace2a63","user":"feratates","date":"2020-07-22T17:01:33+00:00"},{"accountId":"account:user:0323fb28-97e8-4431-9256-2d79ae686f08","user":"adhai001","date":"2022-05-26T13:18:20+00:00"}],"kudosCount":5,"bundleInformation":{"bundleVersion":"5.12.0.v202606261225","bundleName":"KNIME Base Nodes","bundleSymbolicName":"org.knime.base","bundleVendor":"KNIME AG, Zurich, Switzerland","featureSymbolicName":"org.knime.features.base","featureName":"KNIME Base nodes","featureVersion":"5.12.0.v202606261225","featureVendor":"KNIME AG, Zurich, Switzerland","extensionId":"*bjR3r1yWOznPIEXS"},"frequentSuccessors":[]}
