Skip to main content

Class XBRApiMetaDB

Provides an API for interacting with MetaDB, a database interaction layer that enables querying and managing tabular data using DuckDB syntax.

Namespace: Workspace.XBR.Xperiflow.SubApis

Assembly: Xperiflow.dll

Declaration
public class XBRApiMetaDB

Examples

Creating a MetaDB connection:

using (var connection = XBRApi.MetaDB.CreateMetaDBConnection(si))
{
connection.Open();
Console.WriteLine("Connected to MetaDB successfully.");
}

Executing a query:

string query = "SELECT * FROM 'shared://myfolder/myfile.parquet' WHERE role = @role";
var param = new DbParameter("@role", "Admin");

DataTable result = XBRApi.MetaDB.ExecuteSql(si, query, param);

foreach (DataRow row in result.Rows)
`{
Console.WriteLine($"User: {row["name"]}`, Role: {row["role"]}");
}

Executing a non-query command:

string insertQuery = "INSERT INTO users (name, role) VALUES (@name, @role)";
var param1 = new DbParameter("@name", "John Doe");
var param2 = new DbParameter("@role", "Admin");

int rowsAffected = XBRApi.MetaDB.ExecuteNonQuery(si, insertQuery, param1, param2);
Console.WriteLine($"{rowsAffected} row(s) inserted successfully.");

Remarks

This class serves as an entry point for working with MetaDB, including establishing connections, executing queries, and performing database modifications. It wraps DuckDB with additional capabilities such as query parsing and connection handling to facilitate seamless integration with Xperiflow storage.

Methods

CreateMetaDBConnection(SessionInfo, string)

Creates a MetaDB connection using the provided connection string.

Declaration
public DbConnection CreateMetaDBConnection(SessionInfo si, string connectionString = "DataSource=:memory:")
Returns

System.Data.Common.DbConnection

A Workspace.XBR.Xperiflow.MetaDB.MetaDBConnection representing the MetaDB connection.

Parameters
TypeNameDescription
OneStream.Shared.Common.SessionInfosiThe session information.
System.StringconnectionStringThe DuckDB connection string (e.g., an in-memory or file-based connection string).
Defaults to an in-memory database.
Exceptions

OneStream.Shared.Common.XFException Thrown when an error occurs while creating the connection.

ExecuteSql(SessionInfo, string, params DbParameter[])

Executes a SQL query against MetaDB and returns the result as a System.Data.DataTable.

Declaration
public DataTable ExecuteSql(SessionInfo si, string sql, params DbParameter[] parameters)
Returns

System.Data.DataTable

A System.Data.DataTable containing the query results.

Parameters
TypeNameDescription
OneStream.Shared.Common.SessionInfosiThe session information.
System.StringsqlThe SQL query to execute. Uses DuckDB syntax.
System.Data.Common.DbParameter[]parametersOptional parameters to include in the query.
Exceptions

OneStream.Shared.Common.XFException Thrown when an error occurs during query execution.

ExecuteNonQuery(SessionInfo, string, params DbParameter[])

Executes a non-query SQL command (e.g., INSERT, UPDATE, DELETE) against MetaDB and returns the number of rows affected.

Declaration
public int ExecuteNonQuery(SessionInfo si, string sql, params DbParameter[] parameters)
Returns

System.Int32

The number of rows affected by the command.

Parameters
TypeNameDescription
OneStream.Shared.Common.SessionInfosiThe session information.
System.StringsqlThe SQL command to execute.
System.Data.Common.DbParameter[]parametersOptional parameters to include in the command.
Exceptions

OneStream.Shared.Common.XFException Thrown when an error occurs during command execution.

Inherited Members

  • System.Object.Equals(System.Object)
  • System.Object.Equals(System.Object,System.Object)
  • System.Object.GetHashCode
  • System.Object.GetType
  • System.Object.MemberwiseClone
  • System.Object.ReferenceEquals(System.Object,System.Object)
  • System.Object.ToString

Was this page helpful?