QPR ProcessAnalyzer Objects in Expression Language: Difference between revisions
Line 615: | Line 615: | ||
<pre> | <pre> | ||
ProjectById(123).ModelByName("My Model 1") | ProjectById(123).ModelByName("My Model 1") | ||
</pre> | |||
|- | |||
||Modify | |||
|| | |||
|| | |||
Change project settings. Following settings are supported: | |||
* '''Name''': Name of the project. | |||
* '''Description''': Description text of the project. | |||
* '''ParentProjectId''': Parent project id. Changing this effectively moves the project into different parent project. | |||
* '''SnowflakeConnectionStringKey''': Snowflake connection string key. | |||
* '''SqlServerConnectionStringKey''': SQL Server connection string key. | |||
ManageProject permission is needed to set SnowflakeConnectionStringKey and SqlServerConnectionStringKey. | |||
Example: | |||
<pre> | |||
ProjectById(1) | |||
.Modify(#{ | |||
"Name": "Project 1" | |||
"ParentProjectId": 2 | |||
}); | |||
</pre> | </pre> | ||
|- | |- |
Revision as of 14:16, 3 May 2024
Filter
Filters contain a set of filter rules used to filter cases and events in models. Filters are objects located in the models. Filters are owned by the creator user, and when a filter publish mode is private, only the creator can use it.
Filter properties | Description |
---|---|
CreatedBy (User) | Returns the user who created the filter. |
CreatedDate (DateTime) | Returns date when the filter created date. |
Description (String) | Returns description of the filter. |
Id (Integer) | Returns id of the filter. |
LastModifiedBy (User) | Returns user who modified the filter. |
LastModifiedDate (DateTime) | Returns date when the filter last modified. |
Model | Returns model where the filter belongs to. |
ModelId (Integer) | Returns model where the filter belongs to. |
Name (String) | Returns the name of the filter. |
Project | Returns project where the filter belongs to. |
ProjectId (Integer) | Returns project id where the filter belongs to. |
PublishMode (String) | Returns publish mode of the filter, one of the following: Private, Public, or Default. |
Rules (Dictionary) | Returns a dictionary containing the filter rules in the filter. |
Filter Function | Parameters | Description |
---|---|---|
DeletePermanently | (none) |
Deletes the filter permanently. To delete own filters, the Filtering permission is needed, and to delete any filters the ManageViews permission is needed. |
Modify | Dictionary |
Modifies filter properties. The parameter is a dictionary containing the properties to be changed. Following properties can be changed: Name, Description, PublishMode, and Rules. The function returns the updated filter object. Requires GenericWrite permission for the Project and global CreateModel permission. Example: FilterById(1) .Modify(#{ "Name": "My filter", "Description": "My description", "PublishMode": "Public", "Rules": #{ "Items": [ #{ "Type": "IncludeCases", "Items": [ #{ "Type": "CaseAttributeValue", "Attribute": "Account Manager", "StringifiedValues": [ "0Mary Wilson" ] } ] } ] } } ) |
Function to get filter id:
Function | Parameters | Description |
---|---|---|
FilterById |
|
Returns Filter object corresponding to the provided filter id. |
Model
Notes:
- For in-memory models that are offline, the object counts represent the situation when the model was last time online (loaded into the memory). null is returned if the model has never been loaded into the memory.
- If Case permissions are used for the model, and user doesn't have GenericWrite permission for the model, null is returned for data security reasons. Users that have the GenericWrite permission, see null when the model is offline, and when online, they see counts where the case level permissions settings are applied.
- Properties CaseAttributes, EventAttributes and Eventlog work only for the in-memory models and they require the model to be loaded into the memory. If the model is not in the memory, it is loaded when these properties is used. Other model properties down require the model to be in the memory.
Model properties | Description |
---|---|
Calendars (BusinessCalendar*) |
Returns all business calendars stored to the Model as an array. Returns an empty array, if there are no business calendars stored to the model. Note: UI allows to set only one business calendar for a Model. |
CaseAttributes (AttributeType*) | CaseAttributes in the model returned in the alphabetical order. Using this property requires that the model is loaded in the memory. If the model is not in the memory, it's loaded when this property is used. |
CasesDatatable (Datatable) | Returns the Datatable the model uses as a datasource for cases. Returns null if the cases Datatable is not defined or if model uses other than the Datatable datasource. |
Configuration (Dictionary) | Returns the Model configuration as dictionary. Example:
ModelById(123).Configuration.DataSource.Events.DataTableName |
ConfigurationJson (String) | Returns the Model configuration as JSON string. |
CreatedBy (User) | User who created the model. |
CreatedDate (DateTime) | Timestamp when the model was created. |
DefaultCalendar (BusinessCalendar) | Returns the default business calendar of the Model. Returns null, if there are no calendars in the Model or no calendar has been set as a default calendar. Note: UI allows to set only one business calendar for a Model, which is also the default calendar. |
DefaultFilter (Filter) | Default filter of the model. Returns null if the model does not have a default filter. |
DefaultFilterId (Integer) | Default filter id of the model. Returns null if the model does not have a default filter. |
Description (String) | Model description. The model description may contain line breaks. |
DeletedDate (DateTime) | Timestamp when Model was deleted (moved to the recycle bin). |
DeletedBy (User) | User how deleted the Model. |
Diagrams (Diagram*) | Returns an array of all diagrams in the model. |
EstimatedMemory (Integer) | Returns an estimation of how much memory in bytes the model requires. |
EventsDatatable (Datatable) | Returns the Datatable the model uses as a datasource for events. Returns null if the events Datatable is not defined or if model uses other than the Datatable datasource. |
EventAttributes (AttributeType*) | EventAttributes in the model returned in the alphabetical order. Using this property requires that the model is loaded in the memory. If the model is not in the memory, it's loaded when this property is used. |
EventLog (EventLog) | EventLog containing the entire model (i.e. event log where no filters have been applied). Using this property requires that the model is loaded in the memory. If the model is not in the memory, it's loaded when this property is used. |
Filters (Filter*) | Returns an array of all filters in the model. |
Id (Integer) | Model Id. Model Id is generated by QPR ProcessAnalyzer when the model is created. |
LastModifiedBy (User) | User who last time modified the model properties. Note that datatables containing the eventlog data are separate objects having similar fields to track the last modification and last data import. |
LastModifiedDate (DateTime) | Timestamp when the model was modified the last time. |
Name (String) | Model name. |
NCache (Integer) | Number of objects related to the model when the model is loaded into the memory. |
NCaseAttributes (Integer) | Number of CaseAttributes in model. Works only for in-memory models. |
NCases (Integer) | Number of Cases in the model. Works only for in-memory models. |
NEventAttributes (Integer) | Number of EventAttributes in model. Works only for in-memory models. |
NEvents (Integer) | Number of Events in model. Works only for in-memory models. |
NEventTypes (Integer) | Number of EventTypes in the model. Works only for in-memory models. |
NOpens (Integer) | Number of times analysis has been requested from the model. |
Project (Project) | Project where the model belongs to. |
ProjectId (Integer) | Project id where the model belongs to. |
Status (String) |
Memory availability status of the model. There are the following statuses:
|
Model Function | Parameters | Description |
---|---|---|
CalendarByName (BusinessCalendar) |
name (String) |
Returns a business calendar stored to the Model by the name of the calendar. Business calendars can be stored to models in the model properties. Returns null, if a calendar with the provided name is not stored to the model. Examples: ModelById(123).CalendarByName("MyCalendar") |
CreateDiagram (Diagram) | Parameters dictionary |
Creates a diagram to the model. Parameters is a dictionary containing diagram properties. Following properties are available:
Example: ModelById(1) .CreateDiagram(#{ "Name": "My diagram", "Description": "This is my new diagram", "Content": #{ ... }, }) |
CreateFilter (Filter) | Parameters dictionary | Creates a filter to a model. Requires GenericWrite permission for the project and global CreateModel permission. If a filter with that name already exists in the model, an exception is thrown.
The parameters dictionary may have the following properties:
Example: let newFilter = modelById(1).CreateFilter(#{ "Name": "My Filter", "Rules": #{ "Items": [#{ "Type": "IncludeCases", "Items": [#{ "Type": "CaseAttributeValue", "Attribute": "Account Manager", "StringifiedValues": [ "0Robert Miller" ] }] }] }, "PublishMode": "Public" }); } |
DeletePermanently | (none) | Deletes the Model permanently. The model doesn't need to be in the recycle bin to be able to delete it permanently. |
Modify (Model) | Dictionary |
Modifies model properties. The parameter is a dictionary containing the properties to be changed. Following properties can be changed: Name, Description, ProjectId, and Configuration. The function returns the updated model object. Requires the GenericWrite permission for the project and the global CreateModel permission. Example: ModelById(1) .Modify(#{ "Name": "My model", "Description": "My description", "ProjectId": 2, "Configuration": #{ "DataSource": #{ "Cases": #{ "DataSourceType": "datatable", "DataTableName": "My cases datatable", "Columns": #{ "CaseId": "Case Name" } }, "Events": { "DataSourceType": "datatable", "DataTableName": "My events datatable", "Columns": #{ "CaseId": "Case Name", "EventType": "Event Type", "Timestamp": "Start Time" } } } } } ) |
ResetPreprocessings | (none) |
Removes all cached items related to the Model, e.g. preprocessings and calculation results. In practice, the Model is reset to a state where it was right after the model was loaded into memory. |
Restore | (none) | Restores the Model from the recycle bin back to the original location. |
ToSqlDataFrame | In-memory dataframe | Converts an in-memory dataframe to an SQL dataframe. In practice, an SQL query is created from the in-memory dataframe and the query is executed in the datasource so that the data is available in the datasource for further SQL operations. This function is intended only to small amounts of data which is less than 16384 rows.
Example: Select matching cases from events data using in-memory dataframe: let model = ModelById(1); let dfEvents = model.EventsDatatable.SqlDataFrame; let inMemoryDf = ToDataFrame( [["1"], ["2"], ["3"]], [#{"Name": "id", "DataType": "String"}] ); model.ToSqlDataFrame(inMemoryDf) .Join(dfEvents, ["id": "CaseId"]) .SelectDistinct(["CaseId"]) .Collect(); |
TriggerNotifications (Boolean) | Notification names (String*) | Triggers the given notifications for the Model. Notifications are given by their names. Triggering means that the configured rules are run and notification emails are sent as defined by the rules. If the notification names parameter is not provided, all notifications in the Model are triggered.
The function return true if any notification were triggered, otherwise false. ModelById(123).TriggerNotifications(["Notification 1", "Notification 2"]); Triggers notifications Notification 1 and Notification 2 in model id 123. ModelById(123).TriggerNotifications(); Triggers all notifications in model id 123. |
Function to get Model by model id:
Function | Parameters | Description |
---|---|---|
ModelById |
|
Returns Model object corresponding to the provided model id. |
Project
Project properties | Description |
---|---|
CreatedBy (User) | User who created the Project. |
CreatedDate (DateTime) | Timestamp when the Project was created. |
Configuration (Dictionary) | Project settings as Dictionary object. |
ConfigurationJson (String) | Project settings as json. |
Dashboards (Dashboard*) | Returns all dashboards in the project. |
Datatables (Datatable*) | Returns all Datatables in the project. |
DeletedDate (DateTime) | Timestamp when the Project was deleted (moved to the recycle bin). |
Description (String) | Project description. The project description may contain line breaks. |
DeletedBy (User) | User who deleted the Project (moved to the recycle bin). |
Id (Integer) | Id of the Project. |
LastModifiedBy (User) | User who last modified the Project. |
LastModifiedDate (DateTime) | Timestamp when the Project was last modified (refers to the project name, description and parent, not the contents of the project). |
Name (String) | Name of the Project. |
Models (Model*) | Models that are in the Project. |
Parent (Project) | Parent project, i.e. a Project where the Project is located in the hierarchy of Projects. Returns null for root level Projects. Throws an error if user doesn't have access to the parent project. |
ParentProjectId (Integer) | Parent project id. Returns null for root level Projects. The parent project id is returned even if user doesn't have access to the parent project. |
Scripts (Script*) | Scripts that are in the Project. |
Secrets (Dictionary*) | Returns array of all secrets in the project as Dictionary with following properties:
|
Project functions | Parameters | Description |
---|---|---|
CreateDashboard (Dashboard) | Parameters dictionary | Creates a dashboard to the project. EditDashboards permission to the project is required. The parameter is dictionary with following supported dashboard properties:
Example: Create empty dashboard. ProjectById(1) .CreateDashboard(#{ "Name": "My dashboard", "Identifier": "MyDashboard" }); Example: Create dashboard with a chart. ProjectById(1) .CreateDashboard(#{ "Name": "My dashboard", "Content": #{ "version": 4, "typeName": "View", "name": "My dashboard", "subElements": [ #{ "position": #{ "x": 0, "y": 0, "width": 0.5, "height": 0.5, "zOrder": 0 }, "element": #{ "typeName": "Chart", "configuration": #{ "root": #{ "expressionType": "Cases", "expressionParameters": #{} }, "measures": [#{ "expressionType": "Count", "expressionParameters": #{} }] } } } ] } }); |
CreateDatatable (Datatable) |
|
Creates datatable to the project. After creation, there are no columns or rows in the datatable. The function returns the created datatable entity. Following properties can be set for the datatable:
Example: Create a new datatable: ProjectById(1).CreateDatatable(#{ "Name": "My datatable" }); Example: Create Snowflake datatable linked to a custom table: ProjectById(1).CreateDatatable(#{ "Name": "My datatable", "Description": "My description", "NameInDataSource": "MyTable", "SchemaNameInDataSource": "MySchema", "DatabaseNameInDataSource": "MyDatabase", "Type": "Snowflake" }); Example: Create Snowflake datatable where connection string is stored as a secret: ProjectById(1).CreateDatatable(#{ "Name": "My datatable", "Type": "Snowflake", "Connection": ProjectById(1).CreateSnowflakeConnection(#{ "OdbcConnectionStringKey": "MyKey" }) }); |
CreateModel (Model) |
|
Creates a model to a project. Requires GenericWrite permission for the Project and global CreateModel permission. If a model with that name already exists, an exception is thrown.
Parameters dictionary has the following properties:
Example: ProjectById(1).CreateModel(#{ "Name": "My model", "Description": "My description", "Configuration": { "DataSource": { "Cases": { "DataSourceType": "datatable", "DataTableName": "My cases datatable", "Columns": { "CaseId": "Case Name" } }, "Events": { "DataSourceType": "datatable", "DataTableName": "My events datatable", "Columns": { "CaseId": "Case Name", "EventType": "Event Type", "Timestamp": "Start Time" } } } } }); |
DatatableByName (Datatable) | Datatable name (String) |
Returns Datatable by its name located in the project. Returns null, if Datatable with that name does not exist in the project. Example: ProjectById(123).DatatableByName("MyDatatable1") Example: Get datatable by name, and create it if it doesn't exist: let project = ProjectById(123); let datatableName = "MyDatatable1"; let datatable = project.DatatableByName(datatableName); if (datatable == null) { datatable = project.CreateDatatable(datatableName); } |
DeletePermanently | (none) | Deletes the Project permanently. Note that the Project doesn't need to be in the recycle bin to be able to delete it permanently. |
Restore | (none) | Restores the Project from the recycle bin back to the original location. |
ModelByName (Model) | Model name (String) |
Returns Model by its name located in the project. Returns null, if Model with that name does not exist in the project. Example: ProjectById(123).ModelByName("My Model 1") |
Modify |
Change project settings. Following settings are supported:
ManageProject permission is needed to set SnowflakeConnectionStringKey and SqlServerConnectionStringKey. Example: ProjectById(1) .Modify(#{ "Name": "Project 1" "ParentProjectId": 2 }); | |
ScriptByName (Script) | Script name (String) |
Returns Script by its name located in the project. Returns null, if Script with that name does not exist in the project. Example: ProjectById(123).ScriptByName("MyScript1") |
SetSecret |
|
Sets or adds a secret for the project. Setting the secret value to null removes the secret. There can be several secrets with the same name in the same project if the type of the secret is different. Setting secrets requires the project specific ManageProject permission.
Parameters:
Example: Set SAP password: ProjectById(1).SetSecret("sap", "MySapPassword", "I l0ve 5AP!"); Example: Remove SAP password: ProjectById(1).SetSecret("sap", "MySapPassword", null); |
Function to get Project by id:
Function | Parameters | Description |
---|---|---|
ProjectById | Project id (Integer) |
Returns project object corresponding to the provided project id. |
ProjectByName | Project name (String) |
Returns project object by given project name. If there is no such project or user doesn't have access to it, null value is returned. If there are multiple projects with the same name, one of them is returned. Example: let project = ProjectByName("My Project"); |
Script
Scripts are entities that contain executable code, that can be run. Usually scripts contains ETL routines but also other kind of tasks are possible.
Script properties | Description |
---|---|
Code (String) | Script code. |
CreatedBy (User) | User who created the Script. |
CreatedDate (DateTime) | Timestamp when the Script was created. |
CurrentRunStart (DateTime) | Timestamp of the current run start. Null if the script is currently not running. |
Description (String) | Description of the Script. |
Id (Integer) | Id of the Script. |
Language (String) | Either of the following scripting language: Expression or SQL. When language is Expression, the script is run as an expression script, and when language is SQL, the script is run as an SQL script (using the sandbox database). |
LastModifiedBy (User) | User who last modified the Script. |
LastModifiedDate (DateTime) | Timestamp when the Script was last modified. |
LastRunEnd (DateTime) | Timestamp of the last completed script run end (either successful completion or failure). Null if the Script hasn't been run yet. |
LastRunResult (String) | Result of the last run. Options are:
Null if the Script hasn't been run yet. |
LastRunStart (DateTime) | Timestamp of the last completed script run start time. Null if the Script hasn't been run yet. |
Name (String) | Name of the Script. |
OperationId (Integer) | Id of the operation which runs the Script. Null if the script is currently not running. |
Project (Project) | Project where the Script is located. Null if the script is in the global context. |
ProjectId (Integer) | Id of the project where the Script is located. Null if the script is in the global context. |
Status (String) | Current status of the script. Options are:
|
Script functions | Parameters | Description |
---|---|---|
Run (Object) | Dictionary of parameters |
Runs the script using the provided parameters. The parameters are available in the script as variables (see the example). Any type of variables can be passed to the script. Note that if the script assumes certain variables, but that they are not passed to the script, the script run will throw an error. For SQL scripts, the passed parameters are available in the script as variables in format @_parameter_<ParameterName> where <ParameterName> is the name of the parameter, e.g. parameter_myParameter1. Only string type of parameters can be used, so any other type of data in parameter values is converted into strings. The return value of the script is returned by the Run function. Expression scripts return a value with the return statement or alternatively the result of the last line of the script is the return value. If the script does not return any value, the Run function returns _empty. For SQL scripts, the return value is the last dataset produced by the script (returned as a DataFrame) (SQL scripts might create several datasets using the --#ShowReport command or the Show parameter). When a script is called using the Run function, the called script status does not change, because it's the parent script that is Running. Also the called script log is not filled, but instead the logging goes to the calling script. It's possible to call a script using the Run function several times simultaneously. If there is an error when running the called script, the Run function throws the error to the calling script. Scripts are run in the script entity context, so for example the following properties are available:
Example: Following script (id 123) raises a specified number to a specified power: return Pow(numberToRaise, exponent); The script can be called as follows (returning 16): let runResult = ScriptById(123).Run(#{ "numberToRaise": 4, "exponent": 2 }) |
Start | Dictionary of parameters | Starts the script. The function call doesn't wait for the script run to complete (i.e., asynchronous behavior) which is sane as starting the script in the Workspace.
Parameters to the script can be provided as a dictionary of name-value pairs (which is not possible when script is started in the Workspace). Return value is the script run id (integer) if the script was started. If the script is already running, return value is null. Example: Start script (without parameters) and store the script run id: let runId = ScriptById(1).Start(); Example: Start script with passing parameters: ScriptById(1).Start(#{ "variable1": "val1", "variable2": 5 }); |
Stop | Stops the script. The operation doesn't wait for the stopping to complete (i.e., asynchronous behavior) which is same as stopping the script in the Workspace. Depending on the operation that the script is performing, the stopping might take some time.
Return value is the script run id (integer) if the script was running. If the script isn't running, the return value is null. Example: let runId = ScriptById(1).Stop(); |
Function to get a script by the script id:
Function | Parameters | Description |
---|---|---|
ScriptById |
|
Returns Script object corresponding to the given script id. If script with the given id doesn't exist or user doesn't have permissions to it, an error is given. |
User/Group
User objects represents users and user groups. Note that some properties can only be used for users and some for groups.
User/group properties | Description |
---|---|
Description (String) | Description of the user. |
Email (String) | Email address of the user. |
FullName (String) | Full name of the user or group name. |
GlobalPermissions (String*) | Array of global permissions of the user. Global permissions come from the global roles assigned to the user and groups that the user belongs to. Note that to get the effective permissions for certain objects, also project specific permissions need to be taken into account. |
GroupMemberNames (String*) | Array of names of members of a user group. This property is available for groups. |
GroupMembers (User*) | Array of members of a user group. This property is available for groups. |
GroupNames (String*) | Array of names of user groups the user belongs to. This property is available for users. |
Groups (User*) | Array of user groups the user belongs to. This property is available for users. |
HasPassword (Boolean) | Returns true if user has a password defined in QPR ProcessAnalyzer and thus user can authenticate using the password. If user doesn't have a password, the SAML authentication is the only way to log in. ManageUsers permission is needed to access this property for other users. |
Id (Integer) | Id of the user, which is unique for every user. |
IsActive (Boolean) | Returns true only if the user is active (not disabled). |
IsGroup (Boolean) | Returns true if the user is a user group. |
IsLocked (Boolean) | Returns true if user account is currently locked. ManageUsers permission is needed to access this property. |
LastLockedDate (DateTime) | Returns date when user account was locked the last time. Returns null if the user account has never been locked. ManageUsers permission is needed to access this property. |
LastLoginDate (DateTime) | Returns date when the user made last successful login. ManageUsers permission is needed to access this property for other users. |
Name (String) | Login name of the user or group. |
Roles (Object**) |
Returns all roles of the user (both global and project roles) as a nested array structure. Example: ToJson(Users.Where(name == "qpr").Roles) Returns (for example): [ [{"calcId": "Project:1"}, "Administrator"], [{"calcId": "Project:2"}, "Analyzer"], [{"calcId": "Project:3"}, "Viewer"], [null, "RunScripts"], [null, "Administrator"] ] |
User/group functions | Parameters | Description |
---|---|---|
EffectivePermissionsFor (String Array) |
|
Returns effective (actual) permission of the user to the given project. Project is given as a project object (not as a project id). Effective permissions determine the actual permissions that the user has, i.e. a combination of all permissions assigned to the user and groups the user belong to, including both project specific and global roles. Permissions for the EffectivePermissionsFor function are as follows:
Note that inactive users don't have any effective permissions, so the EffectivePermissionsFor function does not return any permissions for those users. Examples: EffectivePermissionsFor(ModelById(1234).Project) Returns (for example): ["EditDashboards", "Filtering", "GenericRead"] |
GetAttribute |
Returns user attribute value by given attribute name and optionally by the model/project/dashboard context. Supported data types are String, Integer, Float, and DateTime. To store more complex data types, data can be converted into json and stored as string. If the attribute doesn't exist, null is returned. For example, if using dashboard as context, the attributes are effectively bound to each user and each dashboard separately. Thus, there can be several attributes with the same name as long as the dashboard is different. Parameters:
Users have permissions to get attributes for themselves, and also (administrator) users with global ManageUsers permission can get attributes for all users. In addition, if using the context object, the GenericRead permission is required for the context object. Example: Get user attribute MyDataValue for myself: CurrentUser .GetAttribute("MyDataValue"); Example: Get user attribute MyDataValue for user John: Users .Where(Name=="John") .GetAttribute("MyDataValue"); Example: Get user attribute MyDataValue for user 1 related to dashboard id 1: UserById(1) .GetAttribute("MyDataValue", DashboardById(1)); | |
SetAttribute |
Sets user attribute value for given attribute name and optionally for the model/project/dashboard context. Supported data types are String, Integer, Float, and DateTime. To store more complex data types, data can be converted into json and stored as string. If setting value null, the user attribute is removed. Required permissions are same as in the GetAttribute function. Parameters:
Example: Set user attribute MyDataValue for myself: CurrentUser .SetAttribute("MyDataValue ", "value"); Example: Set value 123 as user attribute MyDataValue for user John: Users .Where(Name=="John") .SetAttribute("MyDataValue", 123); Example: Set current time as user attribute MyDataValue for user 1 related to dashboard id 1: UserById(1) .GetAttribute("MyDataValue", Now, DashboardById(1)); |
Function to get User by user id:
Function | Parameters | Description |
---|---|---|
UserById |
|
Returns User object corresponding to the provided user id. |