Dataset Queries (Reference) enable SQL-based data operations including SELECT, INSERT, UPDATE, DELETE statements and stored procedure execution. Dataset Queries provide:
Queries connect to configured DBs and can embed tag values dynamically in SQL statements.
The Dataset Module offers powerful configuration options for managing queries efficiently. Users can define queries with custom names, select database configurations, and input SQL statements, including Tag embedding. Mapping options enable data population from query results, and users can specify time references (UTC or Local) for Date Time fields.
In addition, the Dataset Module allows users to display query results using Datagrids in screens and dashboards, simplifying data visualization. Query results can also trigger actions in custom scripts and tags, enhancing automation capabilities for notifications and tag updates. For more advanced functionalities, users can explore Stored Procedures.
Table of Contents maxLevel
2
minLevel
2
indent
10px
exclude
Steps style none
Property | Description | Required |
---|---|---|
Name | Unique query identifier (no spaces) | Yes |
DB | Target database connection | Yes |
SqlStatement | SQL query or stored procedure | Yes |
Mapping | Tag-to-column assignments | No |
MappingDateTime | Time interpretation (UTC/Local) | No |
Description | Documentation text | No |
sql
SELECT * FROM Production WHERE Status = 1
UPDATE Inventory SET Count = 100 WHERE ID = 5
DELETE FROM TempData WHERE Age > 30
Embed tag values using double curly braces:
sql
SELECT * FROM Production
WHERE BatchID = {{Tag.Production/Batch_ID}}
AND Temperature > {{Tag.TankFarm/Tank1/Temp}}
AND Status = {{Tag.Equipment/MotorRunning}}
Default format: yyyy-MM-dd HH:mm:ss
(ISO 8601)
sql
SELECT * FROM History
WHERE Timestamp > '{{Tag.StartDate}}'
Configure result set mapping to tags:
Column | Tag | Direction |
---|---|---|
ProductID | Tag.Production_ID | Output |
Count | Tag.Production_Count | Output |
BatchID | Tag.Batch_ID | Input/Output |
sql
-- Simple execution
EXEC GetProductionData @Date = '{{Tag.QueryDate}}'
-- With output parameters
EXEC TestOutput
@return_Value = {{Tag.ReturnValue}} RETURN_VALUE,
@vcrPrefix = @null@,
@intNextNumber = {{Tag.NextNumber}} OUTPUT,
@vcrFullLicense = {{Tag.NextLicense}} OUTPUT
Use @null@
syntax for null values:
sql
EXEC UpdateBatch @ID = {{Tag.BatchID}}, @Notes = @null@
csharp
// Trigger query execution
@Dataset.Query.MyQuery.SqlStatement = "SELECT * FROM Data";
@Dataset.Query.MyQuery.Select = true;
// Check status
if (@Dataset.Query.MyQuery.ExecutionStatus == "OK")
{
// Process results
}
csharp
// Execute and wait for results
DataTable result = @Dataset.Query.MyQuery.SelectCommand();
// With status check
string status;
@Dataset.Query.MyQuery.ExecuteCommandWithStatus(out status);
csharp
public void ExecuteQuery()
{
// Build dynamic query
string sql = string.Format(
"SELECT * FROM Production WHERE Line = '{0}'",
@Tag.ProductionLine
);
@Dataset.Query.ProductionQuery.SqlStatement = sql;
// Execute with status
string status;
@Dataset.Query.ProductionQuery.ExecuteCommandWithStatus(out status);
if (status == "OK")
{
@Tag.QueryResult = "Success";
}
}
Built-in SQL editor features:
Access via:
Graphical query construction:
csharp
// Test mode execution
@Dataset.Query.TestQuery.SqlStatement =
"SELECT COUNT(*) FROM Production";
@Dataset.Query.TestQuery.Select = true;
sql
-- Use TOP/LIMIT
SELECT TOP 100 * FROM LargeTable
-- Use indexes
CREATE INDEX idx_timestamp ON Data(Timestamp)
-- Parameterize queries
SELECT * FROM Table WHERE ID = {{Tag.ID}}
sql
-- Use transactions
BEGIN TRANSACTION
UPDATE Table1...
UPDATE Table2...
COMMIT
Query not executing:
Slow performance:
Mapping issues:
To create and configure a Dataset Query, follow the steps below:
Enter a Name and Description for the Query
Click Ok.
Define the DB (Database Connection), and Go To SQL Query editor to define the Query (you can navigate using the tree or double-click the SqlStatement column)
Info |
---|
The use of spaces is not allowed in the Name. Instead, use underscores. For example My_Query. |
Tip | ||
---|---|---|
| ||
By Default, the system will name the create the Dataset.Query with Query1, Query2,... We recommend giving a more meaningful name and using the description field, all in order to properly identify each query. |
Info | ||
---|---|---|
| ||
Adding real-time parameters to your queries offers flexibility and adaptability, enabling dynamic data retrieval based on changing conditions. Instead of hardcoding specific values, you can use dynamically populated placeholders at runtime. Instead of using Queries like the following:
Use Queries with real-time parameters:
In this example, {{tag.Test}} serves as a placeholder for a real-time parameter. |
You can modify the Query settings after its creation. Double-click the property you wish to edit on the row corresponding to the Query you want to modify. The following table lists all possible configuration properties.
Column
Description
Name
The Query's name. The system will warn you if you choose an invalid name.
DB
Defines the database where the Query will be executed.
SqlStatement
Specify the Query using SQL syntax. You can embed Tags directly on the SQL statement, embracing the tag with curly brackets. For example, ColumnName = {tag.tagInt}.
Alternatively, you can update the SQL Statement with the Script module accessing the property Dataset.Query.QueryName.SqlStatement. If you access that property from multiple tasks using this approach, be aware of potential concurrency issues. For more information, access Advanced Dataset Guide.
Mapping
Click the three dots button (...) to select the tags you want to populate with data from specific columns the Query returns.
MappingDateTime
Specify how the time in Database will be interpreted (UTC or Local), when mapping to DateTimeOffset .NET variables.
Description
Query's description.
The queries are ending using the Built-In SQL Query Editor, which assists doing the hight of the SQL Syntax.
→ Learn more at the Query Editor page.
There is also the tool VisualQueryBuilder which allows to explore databases, and drag-drop tables and visually connect fields to build the Query.
The VisualQueryBuilder is started navigating to Datasets → DBs, and clicking on the Visual Query Builder button.
→ See Visual SQL Query Builder for more information on that tool.
Info | ||
---|---|---|
| ||
The default format for DateTime Tags is |
The best place to test your queries is the DataExplorer SQL Queries tool.
Any query used in the solution, or even new queries you are modifying in that environment can be executed.
The results are presented in a DataGrid object in which you can customize the columns.
→ Learn more at Data Explorer SQL Queries.Page Tree | ||||
---|---|---|---|---|
|