Skip to content
Open
Show file tree
Hide file tree
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 19 additions & 2 deletions custom-recipes/pi-system-retrieve-list/recipe.json
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,23 @@
"description": "",
"defaultValue": false
},
{
"name": "use_batch_mode",
"label": "Use batch mode",
"type": "BOOLEAN",
"description": "",
"visibilityCondition": "model.show_advanced_parameters==true",
"defaultValue": false
},
{
"name": "batch_size",
"label": "Batch size",
"type": "INT",
"description": "",
"visibilityCondition": "model.show_advanced_parameters==true && model.use_batch_mode==true",
"minI": 1,
"defaultValue": 500
},
{
"type": "SEPARATOR",
"description": "Source"
Expand Down Expand Up @@ -200,7 +217,7 @@
{
"name": "boundary_type",
"label": "Boundary type",
"visibilityCondition": "((model.must_retrieve_metrics) && ['InterpolatedData'].includes(model.data_type))",
"visibilityCondition": "(['InterpolatedData'].includes(model.data_type))",
"type": "SELECT",
"selectChoices":[
{"value": "Inside", "label": "Inside"},
Expand All @@ -211,7 +228,7 @@
{
"name": "record_boundary_type",
"label": "Boundary type",
"visibilityCondition": "((model.must_retrieve_metrics) && ['RecordedData'].includes(model.data_type))",
"visibilityCondition": "(['RecordedData'].includes(model.data_type))",
"type": "SELECT",
"selectChoices":[
{"value": "Inside", "label": "Inside"},
Expand Down
31 changes: 30 additions & 1 deletion custom-recipes/pi-system-retrieve-list/recipe.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
get_credentials, get_interpolated_parameters, normalize_af_path,
get_combined_description, get_base_for_data_type, check_debug_mode,
PerformanceTimer, get_max_count, check_must_convert_object_to_string,
convert_schema_objects_to_string, get_summary_parameters
convert_schema_objects_to_string, get_summary_parameters, get_advanced_parameters
)
from osisoft_client import OSIsoftClient
from osisoft_constants import OSIsoftConstants
Expand Down Expand Up @@ -58,6 +58,7 @@ def get_step_value(item):
use_end_time_column = config.get("use_end_time_column", False)
end_time_column = config.get("end_time_column")
server_url_column = config.get("server_url_column")
use_batch_mode, batch_size = get_advanced_parameters(config)
interval, sync_time, boundary_type = get_interpolated_parameters(config)
record_boundary_type = config.get("record_boundary_type") if data_type == "RecordedData" else None
summary_type, summary_duration = get_summary_parameters(config)
Expand All @@ -81,12 +82,17 @@ def get_step_value(item):

with output_dataset.get_writer() as writer:
first_dataframe = True
absolute_index = 0
batch_buffer_size = 0
buffer = []
for index, input_parameters_row in input_parameters_dataframe.iterrows():
absolute_index += 1
server_url = input_parameters_row.get(server_url_column, server_url) if use_server_url_column else server_url
start_time = input_parameters_row.get(start_time_column, start_time) if use_start_time_column else start_time
end_time = input_parameters_row.get(end_time_column, end_time) if use_end_time_column else end_time
row_name = input_parameters_row.get("Name")
duplicate_initial_row = {}
nb_rows_to_process = input_parameters_dataframe.shape[0]
for input_column in input_columns:
duplicate_initial_row[input_column] = input_parameters_row.get(input_column)

Expand Down Expand Up @@ -127,6 +133,29 @@ def get_step_value(item):
summary_type=summary_type,
summary_duration=summary_duration
)
elif use_batch_mode:
buffer.append({"WebId": object_id})
batch_buffer_size += 1
if (batch_buffer_size >= batch_size) or (absolute_index == nb_rows_to_process):
rows = client.get_rows_from_webids(
buffer, data_type, max_count=max_count,
start_date=start_time,
end_date=end_time,
interval=interval,
sync_time=sync_time,
boundary_type=boundary_type,
record_boundary_type=record_boundary_type,
can_raise=False,
batch_size=batch_size,
object_id=object_id,
summary_type=summary_type,
summary_duration=summary_duration,
endpoint_type="AF"
)
batch_buffer_size = 0
buffer = []
else:
continue
else:
rows = client.recursive_get_rows_from_webid(
object_id,
Expand Down
148 changes: 148 additions & 0 deletions custom-recipes/pi-system-write/recipe.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
{
"meta": {
"label": "Write to tag",
"description": "Write values to tags",
"icon": "icon-pi-system icon-pencil"
},
"kind": "PYTHON",
"selectableFromDataset": "input_dataset",
"inputRoles": [
{
"name": "input_dataset",
"label": "Dataset containing paths or tags",
"description": "",
"arity": "UNARY",
"required": true,
"acceptsDataset": true
}
],

"outputRoles": [
{
"name": "api_output",
"label": "Main output displayed name",
"description": "",
"arity": "UNARY",
"required": true,
"acceptsDataset": true
}
],
"params": [
{
"type": "SEPARATOR",
"label": "Authentication"
},
{
"name": "credentials",
"label": "User preset",
"type": "PRESET",
"parameterSetId": "basic-auth"
},
{
"name": "show_advanced_parameters",
"label": "Show advanced parameters",
"type": "BOOLEAN",
"definition": "",
"defaultValue": false
},
{
"name": "use_server_url_column",
"label": "Use server value per row",
"visibilityCondition": "model.show_advanced_parameters==true && false",
"description": "",
"type": "BOOLEAN",
"defaultValue": false
},
{
"visibilityCondition": "(model.use_server_url_column==true) && (model.show_advanced_parameters==true)",
"name": "server_url_column",
"label": "Server domain columnn",
"description": "Should match the required path for each row",
"type": "COLUMN",
"columnRole": "input_dataset"
},
{
"visibilityCondition": "(model.use_server_url_column==false) && (model.show_advanced_parameters==true)",
"name": "server_url",
"label": "Server URL",
"type": "STRING",
"definition": "https://my_server:8082",
"defaultValue": ""
},
{
"name": "is_ssl_check_disabled",
"label": "Disable SSL check",
"visibilityCondition": "model.show_advanced_parameters==true",
"type": "BOOLEAN",
"definition": "",
"defaultValue": false
},
{
"name": "ssl_cert_path",
"label": "Path to SSL certificate",
"type": "STRING",
"description": "(optional)",
"visibilityCondition": "model.show_advanced_parameters==true && model.is_ssl_check_disabled==false",
"mandatory": false
},
{
"name": "is_debug_mode",
"label": "Verbose logging",
"visibilityCondition": "model.show_advanced_parameters==true",
"type": "BOOLEAN",
"description": "",
"defaultValue": false
},
{
"name": "max_streak_buffer_size",
"label": "Size of streak buffer",
"visibilityCondition": "model.show_advanced_parameters==true",
"type": "INT",
"minI": 1,
"defaultValue": 500,
"description": ""
},
{
"name": "max_requests_buffer_size",
"label": "Size of batch buffer",
"visibilityCondition": "model.show_advanced_parameters==true",
"type": "INT",
"minI": 1,
"defaultValue": 500,
"description": ""
},
{
"type": "SEPARATOR",
"description": "Source"
},
{
"name": "path_column",
"label": "Path column",
"description": "",
"type": "COLUMN",
"columnRole": "input_dataset"
},
{
"name": "webid_column",
"label": "WebID column",
"description": "(faster than using path)",
"type": "COLUMN",
"columnRole": "input_dataset"
},
{
"name": "time_column",
"label": "Time column",
"description": "",
"type": "COLUMN",
"columnRole": "input_dataset"
},
{
"name": "value_column",
"label": "Value column",
"description": "",
"type": "COLUMN",
"columnRole": "input_dataset"
}
],
"resourceKeys": []
}
Loading