Knowledge and Data Processing Nodes
4. Knowledge and Data Processing Nodes
The Knowledge category contains the nodes that read, transform, store and query data in workflows. They are listed under the KNOWLEDGE heading in the Nodes tab of the node catalog, and it is the largest category.
Most of these nodes require no credential connection; they run on SkyStudio's own data infrastructure.
Nodes
| Node | What it does |
|---|---|
| File to Table | Creates a database table from a file |
| JSON to Table | Creates a table from JSON data |
| List Tables | Lists all tables in the database |
| Table Data | Retrieves the data of a given table |
| Query | Runs a query against a collection |
| Knowledge Save | Saves a file to the knowledge base |
| Knowledge Search | Searches the knowledge base and returns an answer with its sources |
| Text2data | Extracts structured data from free text |
| SkyData | Accesses the SkyStudio data service |
| Form Builder | Generates a form to collect structured input from the user |
| Formula | Performs calculations and formula operations |
| Save Data | Stores data persistently |
| Transform | Converts data from one format to another |
| Parameter | Defines a variable to be used within the workflow |
Which Node Should You Use?
| What you need | Node to use |
|---|---|
| Turn JSON/CSV into a table | File to Table |
| Read data from a stored table | Table Data |
| See which tables exist | List Tables |
| Run a complex filter or query | Query |
| Make a document available to agents | Knowledge Save |
| Get answers from company documents | Knowledge Search |
| Extract fields from free text | Text2data |
| Collect structured data from the user | Form Builder |
| Perform a calculation | Formula |
| Store a result persistently | Save Data |
| Change the data format | Transform |
| Carry a constant value through the workflow | Parameter |
Table Operations
File to Table
Converts an uploaded file (Excel, CSV) into a database table, making the data queryable and reusable.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Node Name | No | The node's name on the canvas |
| File | Yes | The file to convert (selected from a previous node with /) |
| Table Name | Yes | The name of the table to create |
| Overwrite | No | Whether an existing table with the same name is overwritten |
Example Use
File Input → File to Table → Query → Text Output
File to Table settings:
- File: Output of the File Input node
- Table Name:
satislar_2026
Note: Do not use spaces or non-ASCII characters in table names; separate words with underscores.
JSON to Table
Converts JSON data into a table. Used to make API responses queryable.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Node Name | No | The node's name on the canvas |
| JSON Data | Yes | The JSON data to convert (selected with /) |
| Table Name | Yes | The name of the table to create |
| Root Path | No | The path to the array inside the JSON (e.g. data.items) |
Example Use
HTTP Call → JSON to Table → Data Analysis
Using Root Path: if the API response looks like { "data": { "items": [...] } }, enter data.items in the Root Path field.
List Tables
Lists all tables in your database. Used to find out which tables exist and what they are called.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Node Name | No | The node's name on the canvas |
Example Output
{
"tables": [
{ "name": "satislar_2026", "row_count": 1248, "created_at": "2026-08-01" },
{ "name": "musteriler", "row_count": 342, "created_at": "2026-07-15" }
]
}
Table Data
Retrieves data from a given table. Required to use tables you created earlier within a workflow.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Node Name | No | The node's name on the canvas |
| Table Name | Yes | The name of the table to read |
| Limit | No | Maximum number of rows to return |
| Offset | No | Number of rows to skip (for pagination) |
Note: Use the Limit parameter on large tables; loading an entire table into memory slows the workflow down.
Query
Runs a filtered query against a collection or table. Unlike the Table Data node, it can apply conditional filtering and grouping.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Node Name | No | The node's name on the canvas |
| Collection / Table | Yes | The source the query runs against |
| Query | Yes | The filter expression |
| Limit | No | Maximum number of records to return |
| Sort | No | The sort field and direction |
Example Use
- Collection:
satislar_2026 - Query:
tutar > 10000 AND bolge = 'Marmara' - Sort:
tutar DESC - Limit:
20
Knowledge Base
Knowledge Save
Saves a file to the workspace's knowledge base. Saved documents can be used as references by your agents.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Node Name | No | The node's name on the canvas |
| File | Yes | The file to save (selected with /) |
| Folder | No | The knowledge base folder to save it in |
| Tags | No | Tags that make the document easier to find |
Example Use
A workflow that automatically adds incoming mail attachments to the knowledge base:
Search Mail (Outlook) → Knowledge Save → Send Message (Slack)
Note: Documents added to the knowledge base can also be managed from the agent's Knowledge section described in Section 04.
Knowledge Search
Runs an AI-assisted search over the workspace's knowledge base. It returns not only the matching text but an answer to your question together with the source document.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Node Name | No | The node's name on the canvas |
| Query | Yes | The question or topic to search for |
| Folder | No | The folder the search is limited to |
| Result Count | No | Number of sources to return |
Example Use
A chatbot that answers internal policy questions:
Text Input → Knowledge Search → Anthropic API Call → Text Output
Knowledge Search settings:
- Query: Output of the Text Input node, selected with
/
Example Output
{
"answer": "Yıllık izin hakkı 1-5 yıl kıdem için 14 gündür.",
"sources": [
{ "document": "IK-Politikalari-2026.pdf", "page": 12, "score": 0.94 }
]
}
Note: This node is the basis of internal question-and-answer workflows. It returns nothing while the knowledge base is empty — add documents first with Knowledge Save or from the Settings → Knowledge Base screen.
Data Transformation
Text2data
Extracts structured data from free text. Turns plain text such as an email body, a form response or a note into field-value pairs.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Node Name | No | The node's name on the canvas |
| Text | Yes | The free text to process |
| Schema | Yes | The definition of the fields to extract |
Schema Example
{
"firma_adi": "string",
"fatura_no": "string",
"tutar": "number",
"tarih": "date"
}
Example Use
A workflow that extracts the details from an incoming invoice email and records them in accounting:
Search Mail (Outlook) → Text2data → Create Purchase Invoice (Paraşüt)
Note: Use explicit field names in the schema; vague names (such as x or value) reduce extraction accuracy.
Transform
Converts data from one format to another. Used to rename, combine or restructure fields.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Node Name | No | The node's name on the canvas |
| Input Data | Yes | The data to transform |
| Transformation Rule | Yes | The field mapping rules |
Example Use
To map column names in Excel to CRM field names:
| Source field | Target field |
|---|---|
| Firma | account_name |
| Yetkili | contact_name |
| Eposta | emailaddress1 |
When to Use It
- When field names do not match between two nodes
- When a date or number format needs to be changed
- When several fields need to be combined into one
Formula
Performs calculations and formula operations. Used for sums, ratios, percentages and conditional calculations.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Node Name | No | The node's name on the canvas |
| Formula | Yes | The calculation expression |
| Input Values | No | The values used in the formula |
Formula Examples
| Formula | Description |
|---|---|
{{tutar}} * 1.20 | Amount including VAT |
({{yeni}} - {{eski}}) / {{eski}} * 100 | Percentage change |
{{adet}} * {{birim_fiyat}} | Line total |
Parameter
Defines a fixed variable for use within the workflow. Lets you manage a value from a single place when it is used in more than one node.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Node Name | No | The node's name on the canvas |
| Parameter Name | Yes | The name of the variable |
| Value | Yes | The value of the variable |
| Type | No | The data type (text, number, date) |
Example Use
To manage a Jira project key used in many places in the workflow from a single point:
- Parameter Name:
jira_proje - Value:
ENG
In later nodes you select this parameter with /. When the project changes, updating this one node is enough.
Save Data
Stores data produced in the workflow persistently, making it available in later runs.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Node Name | No | The node's name on the canvas |
| Data | Yes | The data to store |
| Key | Yes | The name the data is saved under |
| Overwrite | No | Whether an existing entry with the same key is overwritten |
Example Use
Used in a workflow that runs daily to store the previous day's result and compare against it.
SkyData
Accesses SkyStudio's data service. Used to query the data sources defined on the platform.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Node Name | No | The node's name on the canvas |
| Data Source | Yes | The source to access |
| Query | No | The filter expression |
Form Builder
Generates a form to collect structured input from the user. Used when you need specific fields to be filled in rather than free text.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Node Name | No | The node's name on the canvas |
| Form Fields | Yes | The definition of the fields in the form |
| Title | No | The title shown above the form |
| Description | No | The description shown to the user |
Field Types
| Type | Use |
|---|---|
| Text | Short text input |
| Long text | Multi-line description |
| Number | Numeric value |
| Date | Date picker |
| Select | Dropdown list |
| Checkbox | Yes/no |
Common Errors
| Situation | Possible Cause | What to Check |
|---|---|---|
| The table is not created | The File field is empty or fed from the wrong node | Select the output of a node that produces a file in the File field with / |
| The table name is rejected | The name contains spaces or non-ASCII characters | Use lowercase letters, digits and underscores (e.g. satislar_2026) |
| The table is reset on every run | Overwrite is enabled | Turn Overwrite off if you want the data to accumulate |
| JSON to Table produces an empty table | The Root Path is wrong or was not provided | Enter the path to the array in the API response in the Root Path field (e.g. data.items) |
| Table Data returns no rows | The table name is wrong, or the table has not been created yet | Verify the table name and row count with List Tables |
| The workflow slows down or stalls on a large table | The whole table is being retrieved at once | Page through it with Limit and Offset |
| Query returns no results | A field name or value in the filter does not match | Check the field names in the Table Data output; put text values in quotes |
| Knowledge Search produces no answer | There is no relevant document, or the search is limited to a folder | Try again without the folder filter; add documents with Knowledge Save if needed |
| A document saved with Knowledge Save does not appear in search | Indexing may not have finished yet | Search again shortly; confirm the file appears in the knowledge base |
| Text2data returns empty fields | The schema field names are vague, or the text does not contain that information | Use explicit field names (such as fatura_no); confirm the text contains the information |
| Text2data returns a number or date as text | No type is set in the schema | Declare the number and date types explicitly in the schema |
| The next node does not recognize the fields | Source and target field names differ | Map the field names to the ones the target system expects with Transform |
| Formula produces no result | A variable name in the formula does not match the incoming data | Check that the names inside {{...}} match the previous node's output exactly |
| The Parameter value is not visible in the next node | The Parameter node is not connected to the flow | Check that the Parameter node is connected before the node that uses the value |
| Save Data does not return the previous run's data | The key changes on every run, or it is being overwritten | Use a fixed Key and set Overwrite according to your needs |
| The form is not submitted | Required fields are empty | Review the required-field settings of the form fields |
Notes
- Most nodes in this category require no credential connection; they run on SkyStudio's own data infrastructure.
- Table names are used as references throughout the workflow; renaming one later affects every node that uses that table.
- Table Data retrieves the entire table while Query retrieves only the matching records; Query is faster on large data sets.
- A Knowledge Search answer is limited to the content of the knowledge base; the node produces no result while the knowledge base is empty.
- Do not confuse Text2data with Transform: Text2data extracts fields from free text, while Transform reshapes data that is already structured.
- Parameter suits constant values that recur throughout a workflow (a project key, a folder name, an email address); they are updated from a single place.
- Save Data and SkyData are different: Save Data stores the data the workflow itself produces, while SkyData reads the data sources defined on the platform.
- Form Builder is for collecting specific fields from the user instead of free text; if the field order changes, the output order changes with it.
- Give your nodes meaningful names; it makes finding the right output in the
/menu easier.
Loop
The Loop node enables you to iterate through an array or a numerical range and invoke a separate workflow for each element. It is designed for scenarios that require processing large numbers of records—such as hundreds of orders, customers, or data rows—individually through a sub-workflow.
The node enqueues each element for processing and immediately returns a unique batch identifier (batchId). All operations are executed asynchronously in the background, allowing the main workflow to continue without waiting for the batch to complete. You can monitor execution progress and retrieve results at any time using the batchId.
The Loop node is available in the node catalog under Nodes → Information.
Connection Setup and Management
The Loop node uses an invocation token associated with the target workflow to execute a sub-workflow for each element. This token identifies the sub-workflow to be invoked.
Prerequisites
Before configuring the Loop node, ensure that the target sub-workflow has been published and that its invocation token is available. You can obtain this token from the target workflow's trigger settings.
Note: The invocation token determines which sub-workflow will be executed. Configure separate connections for loops that invoke different sub-workflows. Using descriptive connection names, such as "Order Processing Loop" or "Reporting Loop," helps prevent configuration errors.
Adding a Connection in SkyStudio
- Click the chain icon (Application Connections) in the bottom toolbar of the workflow canvas.
- Click + New Connection.
- Select Loop from the provider list. It is located under the Other category. Alternatively, enter
loopin the search field. - Complete the following fields:
| Field | Required | Description |
|---|---|---|
| Connection Name | Yes | A descriptive name for the connection (e.g., Order Processing Loop). |
| Who Can Use | Yes | Only Me / Workspace / Selected Users / Integrations. |
| Authentication Type | Automatic | Automatically set to Custom. |
| Name | No | An optional label for the credentials. |
| Workflow Token (Bearer) | Yes | The invocation token identifying the target workflow. |
- Click Add Connection to save the configuration.
Note: Instead of completing each field individually, you can select Edit as Raw JSON and paste the connection configuration in JSON format.
Assigning a Connection to the Node
After adding the Loop node to the workflow canvas, select the previously configured connection from the Application Connections dropdown menu in the right-hand configuration panel.
Alternatively, expand the Connection section and enter the Name and Workflow Token (Bearer) values directly in the node configuration.
Although direct configuration is convenient for testing, using a saved connection is recommended for persistent and production environments.
Note: The Queue Status operation does not require an authentication connection. A connection is required only for the two Enqueue operations.
Operations
The Loop node provides three operations:
| Operation | Category | Description |
|---|---|---|
| Enqueue (Array) | Featured | Iterates through an array and invokes the target sub-workflow for each element. |
| Enqueue (Number Range) | Standard | Iterates through a numerical range and invokes the target sub-workflow for each number. |
| Queue Status | Standard | Retrieves the execution progress and results associated with a specified batchId. |
Enqueue (Array)
This operation iterates through an array, enqueues a processing task for each element, and immediately returns a batchId.
Each array element is passed to the target sub-workflow through the query field.
Parameters
| Parameter | Required | Default | Description |
|---|---|---|---|
| Application Connections | Yes | Manual | The Loop connection to be used. |
| Items | Yes | — | The array to iterate through. Reference the output of a previous node using /, or provide a JSON array directly (e.g., ["a","b","c"]). |
| Payload (String or JSON) | No | — | Static data included with each element. The same payload is used for every iteration (e.g., { "src": "loop" }). |
| Max Retries | No | 3 | The maximum number of retry attempts for a failed operation. |
| Max Items (Safety Limit) | No | 10000 | The maximum number of elements that can be processed in a single batch. |
Note: The Items and Payload fields support dynamic parameter references. Click either field and press
/to select an output from a previous node.
Data Passed to the Sub-Workflow
For each element, the following request body is sent to the target sub-workflow:
{ "query": <current_element>, ...payload }
| Field | Description |
|---|---|
query | The current array element — dynamic data that changes with each iteration. |
payload fields | Additional fields, if provided, that remain constant throughout the loop. |
Usage Example
Items:
[
{ "id": "ORD-001", "musteri": "Eti Gıda", "tutar": 12500 },
{ "id": "ORD-002", "musteri": "Ülker", "tutar": 8300 }
]
Payload:
{ "kaynak": "loop" }
Example Output
{
"batchId": "batch-ab12-cd34",
"enqueued": 2,
"status": "queued"
}
Note: All iteration-specific data must be provided through the
queryfield. ThePayloadparameter is intended exclusively for static contextual information. Data that varies between iterations should be included in the individual array elements rather than inPayload, allowing the sub-workflow to access it throughquery.
Enqueue (Number Range)
This operation iterates through a numerical range defined by a starting value, an ending value, and an increment.
For each number in the range, the target sub-workflow is invoked. This operation is particularly useful for pagination and workflows that require a predetermined number of repetitions.
Parameters
| Parameter | Required | Default | Description |
|---|---|---|---|
| Application Connections | Yes | Manual | The Loop connection to be used. |
| Start | Yes | 1 | The starting value of the numerical range. |
| End (Inclusive) | Yes | 100 | The ending value of the numerical range. The ending value is included. |
| Step | No | 1 | The increment applied between iterations. |
| Payload (String or JSON) | No | — | Static data included with every iteration. |
| Max Retries | No | 3 | The maximum number of retry attempts for a failed operation. |
| Max Items (Safety Limit) | No | 10000 | The maximum number of iterations allowed. |
Usage Example
When Start is set to 1, End to 5, and Step to 1, the following request bodies are generated for the target sub-workflow:
{ "query": 1 }
{ "query": 2 }
{ "query": 3 }
{ "query": 4 }
{ "query": 5 }
Pagination Example
To process an API containing 100 pages, configure the operation as follows:
| Field | Value |
|---|---|
| Start | 1 |
| End (Inclusive) | 100 |
| Step | 1 |
The target sub-workflow uses the incoming query value as the page number.
Note: When processing large numerical ranges, configure the Max Items limit carefully. If the range exceeds the configured limit, the remaining elements are not processed, and the output includes
truncated: true.
Queue Status
The Queue Status operation retrieves the execution progress of a batch identified by its batchId. It can also return individual execution results, including errors, when requested.
This operation is used to monitor batch completion and retrieve processing results.
No authentication connection is required for this operation.
Parameters
| Parameter | Required | Description |
|---|---|---|
| Batch ID | Yes | The batchId returned by an Enqueue operation. Use / to reference the value from a previous node's output. |
| Include Results | No | When enabled, returns the execution result or error for each processed element. |
Example Output
{
"batchId": "batch-ab12-cd34",
"total": 5,
"counts": { "done": 4, "failed": 1 },
"complete": true,
"results": [
{ "index": 0, "item": { "id": "ORD-001" }, "ok": true, "result": { "ok": true } },
{ "index": 1, "item": { "id": "ORD-002" }, "ok": false, "error": "..." }
]
}
Output Fields
| Field | Description |
|---|---|
batchId | The unique identifier of the queried batch. |
total | The total number of elements enqueued for processing. |
counts.done | The number of successfully completed operations. |
counts.failed | The number of failed operations. |
complete | Indicates whether batch processing has finished. |
results | A list of element-level execution results, returned when Include Results is enabled. |
Note: You can periodically invoke this operation until
complete: trueis returned. If the target sub-workflows persist their execution results independently, retrieving and aggregating those results through Queue Status may not be necessary.
Reliability
| Feature | Description |
|---|---|
| Automatic Retries | Failed operations are automatically retried up to the configured Max Retries limit. Operations that continue to fail are marked as failed. |
| Failure Recovery | Interrupted operations are automatically re-enqueued for processing, while previously completed operations are not repeated. |
| Processing Safety Limit | The Max Items parameter restricts the maximum number of elements processed in a single batch. The default limit is 10,000 elements. |
Note: The total execution time of a batch depends on the processing time required by the target sub-workflow for each element. The Loop node executes these operations asynchronously, without blocking the main workflow.
Quick Start Examples
Example 1: Processing Orders Individually
The following workflow processes order records from a table by invoking a sub-workflow for each order:
Text Input → Table Data → Enqueue (Array) → Text Output
Enqueue (Array) configuration:
- Items: Use
/to select the output of the Table Data node. - Payload:
{ "kaynak": "gunluk-siparis" } - Max Items:
500
Example 2: Processing a Paginated API
The following workflow processes an API containing 100 pages:
Webhook → Enqueue (Number Range) → Text Output
Enqueue (Number Range) configuration:
- Start:
1 - End (Inclusive):
100 - Step:
1
The target sub-workflow uses the incoming query value as the page number and performs the corresponding HTTP Request.
Example 3: Monitoring Batch Completion and Reporting Results
The following workflow starts a batch operation, monitors its completion, and sends a notification when processing finishes:
Enqueue (Array) → Queue Status → If-Else Condition ─┬─ (True) → Send Message (Slack)
└─ (False) → Queue Status
Queue Status configuration:
- Batch ID: Use
/to select thebatchIdfield from the Enqueue operation's output. - Include Results: Enabled
If-Else configuration:
- Conditions: Use
/to select thecompletefield. - Operator: Equals
- Value:
true
Example 4: Reporting Failed Records
The following workflow identifies failed operations after batch completion and generates a summary report:
Queue Status → LLM (Summarize Errors) → Send Email (Outlook)
Queue Status configuration:
- Include Results: Enabled
The LLM node analyzes the results array and summarizes records where ok: false.
Troubleshooting
| Issue | Possible Cause | Resolution |
|---|---|---|
The {{...output}} expression remains unresolved in the Items field. | The Loop node was tested independently before the preceding node generated its output. | Execute the entire workflow from the beginning. Ensure that the node generating the array executes before the Loop node. |
| Only one operation is created, and its data differs from the expected input. | The Items parameter does not contain a valid array. | Reference the output of the node generating the array, or manually provide a JSON array for testing. |
An invocation error such as [400] or [404] occurs. | The target workflow token is incorrect or missing. | Verify the Workflow Token (Bearer) value in the connection configuration. |
| An "Authentication connection required" warning appears. | No connection has been assigned to the node. | Select the Loop node and assign a connection through the Application Connections menu. |
The output contains truncated: true. | The number of elements exceeds the configured Max Items limit. | Increase the limit or divide the input array into smaller batches. |
The complete field never becomes true. | The target sub-workflow is experiencing errors or requires an extended execution time. | Enable Include Results to inspect errors and test the target sub-workflow independently. |
| Element-specific data is not received by the target sub-workflow. | Dynamic data was incorrectly placed in Payload. | Include element-specific data within the individual array elements. Use Payload only for static contextual information. |
Additional Notes
- The Loop node is available in the node catalog under Nodes → Information, while its connection provider is located under the Other category.
- Enqueue operations return a
batchIdimmediately, allowing the main workflow to continue while processing takes place asynchronously. - The Queue Status operation does not require an authentication connection.
- Data that changes between iterations is always passed through the
queryfield, whilePayloadremains constant throughout the loop. - The End (Inclusive) value is included in the numerical range. For example, a range from
1to5produces five iterations. - The default Max Items limit is
10000. It is recommended to configure an appropriate processing limit for production environments. - Define separate Loop connections for different target sub-workflows. Each connection is associated with a single target workflow.
- To monitor batch completion, combine the Queue Status operation with an If-Else Condition.
