# Select Data

## Overview

![The Select Data Node.](https://4267723012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOEts3pBau6LMamSYhGZp%2Fuploads%2Fgit-blob-1acee5cc2b98d24c849167019fdd2e7d01547f99%2Fselectdataupdatedimage.png?alt=media)

Because **Input Data Sockets** in **Incari** can only receive a value from a single connection, this creates a problem when you wish to converge the **Logic** into a single branch. This is why the **Select Data Node** was introduced. The **Select Data Node** takes two or more pairs of **Pulse** and **Data** inputs, and outputs the value corresponding to the input **Pulse** that the **Node** was executed by.

[**Scope**](https://docs.incari.com/incari-studio/2022.2/overview#scopes): **Project**, **Scene**, **Function**, **Prefab**.

## Attributes

![The Select Data Node Attributes.](https://4267723012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOEts3pBau6LMamSYhGZp%2Fuploads%2Fgit-blob-2b2914ff4030c3dc283653f0da19e2a377c0b1dd%2Fselectdataattributes.png?alt=media)

| Attribute   | Type          | Description                                                                   |
| ----------- | ------------- | ----------------------------------------------------------------------------- |
| `Data Type` | **Drop-down** | The type of data that will be plugged into the `Input` **Sockets**.           |
| `Count`     | **Int**       | The number of **Input Pulses** and **Data Values** the **Node** will receive. |

## Inputs

| Input       | Type                                          | Description                                                          |
| ----------- | --------------------------------------------- | -------------------------------------------------------------------- |
| `Pulse [n]` | **Pulse**                                     | The **Pulse** corresponding to the **Data** in the **Socket** below. |
| `Input [n]` | *Defined in the `Data Type`* ***Attribute**.* | The **Data Value** corresponding to the above **Pulse**.             |

## Outputs

| Output             | Type                                          | Description                                                                                                                            |
| ------------------ | --------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| *Pulse Output* (►) | **Pulse**                                     | A standard output **Pulse**, to move onto the next **Node** along the **Logic Branch**, once this **Node** has finished its execution. |
| `Output`           | *Defined in the `Data Type`* ***Attribute**.* | The **Data Value** received in the `Input` **Socket** corresponding to whichever `Pulse` triggered the execution of the **Node**.      |

## Example Usage

The **Select Data** **Node** is particularly useful for optimizing our **Logic** workflow in order to avoid repetition of **Nodes**. The following example shows how to use the **Select Data** **Node** to merge two branches of **Logic** into a single branch.

![](https://4267723012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOEts3pBau6LMamSYhGZp%2Fuploads%2Fgit-blob-d94d14787796239cb81f543b112527ca2ff3da86%2Fselect-data-usage-1_new.png?alt=media)

The image above shows two branches that have the same effect (modify a **Text** **Object**) and could converge into a single branch. For this, the **Select Data** **Node** is introduced:

![](https://4267723012-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FOEts3pBau6LMamSYhGZp%2Fuploads%2Fgit-blob-bb9079aef1e13696e0bfb13b0db6a85c537264fe%2Fselect-data-usage-2_new.png?alt=media)
