Jump to content

Extracting A Substring From a Capsule Property


Recommended Posts

  • Seeq Team

Contextual data is often brought into Seeq to add more information to time series data. This data tends to be brought in as a condition, with the capsule properties of this condition containing different pieces of information. In some cases, a particular capsule property may not contain just one piece of information; it may contain different pieces that are separated based on some logic or code. Rather than having users visually parse the code to extract the segments of interest, Seeq can be used to extract the substring continuously.

The code below extracts a substring based on its location in the property. This code is based on incrementing from left to right, starting at the beginning of the string. Changing the inputs will extract a substring from different positions in the property selected.

//Inputs Section (Start and end assume reading left to right)
$condition              =        $hex_maint     //Recommend to filter condition to only include correct property values
$property_to_capture    =        'Reason Code'
$start_position         =        1              //Incrementing starts from 1
$number_of_characters   =        2              //Including the start


//Code Section
$property_signal = $condition.toSignal($property_to_capture).toStep(2wk)     //Change duration for interpolation
$start_position_regex        = ($start_position - 1).toString()              //Regular exression indexes from 0
$number_of_characters_regex  = ($number_of_characters - 1).toString()
$property_signal.replace('/.{'+$start_position_regex+'}(?<Hold>.{'+$number_of_characters_regex+'}.).*/','${Hold}')

This alternative version is based on incrementing right to left, starting at the end of the string.  

//Inputs Section (Start and end assume reading left to right)
$condition              =     $hex_maint       //Recommend to filter condition to only include correct property values
$property_to_capture    =     'Reason Code'
$end_position           =     1              //Relative to end, incremented from 1 
$number_of_characters   =     4              //Including the end character

//Code Section
$property_signal = $condition.toSignal($property_to_capture).toStep(2wk)     //Change duration for interpolation
$end_position_regex         = ($end_position).toString()
$number_of_characters_regex = ($number_of_characters - 1).toString()
$property_signal.replace('/.*(?<Hold>.{'+$number_of_characters_regex+'}.{'+$end_position_regex+'})$/','${Hold}')

Note the output of these formulas is a string. In the case that a numeric value is wanted, append .toNumber()  after    '${Hold}') 

Below is an example of the results.

image.png

With this substring parsed, all of Seeq's analytical tools can be further leveraged. Some examples are developing histograms based on the values of the substring and making conditions to highlight whenever a particular value in the substring is occurring.

 

Edited by Kristopher Wiggins
  • Like 4
  • Thanks 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...