Jump to content

Is there a way to pull scorecard metrics?


Sivaji
Go to solution Solved by Kristopher Wiggins,

Recommended Posts

When I tried pulling it the result showed "Not a Signal, Condition or Scalar - skipping". Alternatively I can create a signal from condition and can pull the data. However I have already calculated many scorecard metrics formulae, I was wondering if there is any workaround to pull them using DataLab?

Link to comment
Share on other sites

  • 2 months later...
  • Seeq Team
  • Solution

To follow up on this item, currently there is not a simple way to export Scorecard data into Seeq. In R53, Seeq added a copy button to Table View allowing users to Copy the table and paste into other applications like Excel. Please email support@seeq.com in order to create a ticket in our system so you'll be notified when there is an easy way to export scorecard data to Seeq Data Lab.

Below is an example of a script that exports scorecard data using the SDK. What is exported are the samples shown when the scorecard is trended in Trend View and whether they're uncertain/subject to change. Note: This code was developed based on Seeq R53.3.0. Its common for Seeq to edit its SDK to enable new features so this code may not work for other versions of Seeq. Using the Seeq Python module (SPy) is the only certain way to ensure scripts will work across versions.

from seeq import sdk
# Include from seeq import spy and spy.login commands if not working in Seeq Data Lab
import pandas as pd
import datetime as dt
formAPI = sdk.FormulasApi(spy.client)
metricAPI = sdk.MetricsApi(spy.client)

############################################################### User Input Area ########################################################################
workbench_url = "https://explore.seeq.com/9C3916CE-0778-489C-90EE-7BC4C5734640/workbook/66D753DE-9189-4E8D-BE65-AB7BA6408EC8/worksheet/B476B826-4345-4699-8516-45F87AD50571"
########################################################################################################################################################

# Pull in the metrics displayed on the worksheet as well as its display range
analysis_items = spy.search(workbench_url, quiet=True)
analysis_metrics = analysis_items[analysis_items['Type'].str.contains('Metric')]
analysis_metrics.reset_index(drop=True, inplace=True)
pulled_analysis = spy.workbooks.pull(spy.workbooks.search({"ID":spy.utils.get_workbook_id_from_url(workbench_url)}, recursive=True, quiet=True), quiet=True)
for ws in pulled_analysis[0].worksheets:
    if spy.utils.get_worksheet_id_from_url(workbench_url)==ws.id:
        display_range = ws.display_range
        
# Define function to extract scorecard metric data (data is based on trended metric, not its tabular value)
def extract_metric_data(metric_id, start_time, end_time):
    metric = metricAPI.get_metric(id=metric_id)
    metric_calc_id = metric.display_item.id
    metric_name = metric.name
    # API Exception 400 happens for Simple Metrics, use different SDK parameters for it
    try:
        result = formAPI.run_formula(
            start=start_time, end=end_time, 
            formula="$series", 
            parameters=["series="+metric_calc_id],
            limit = 10000     # Limit on number of samples returned
        )
    except:
        result = formAPI.run_formula(
            start=start_time, end=end_time, 
            fragments=['capsule=capsule("' +start_time+'","'+end_time+'")', 'laneWidth=315000ms'],
            function = metric_calc_id,
            limit=10000     # Limit on number of samples returned
        )
    samples_df = pd.DataFrame()
    # Iterate through the samples pulled and add to a DataFrame that includes the sample's values and whether its uncertain
    for sample in result.samples.samples:
        ts_epoch= sample.key
        ts_datetime = dt.datetime.fromtimestamp(ts_epoch/1000000000)
        sample_df = pd.DataFrame(index=[ts_datetime], data={metric_name+" Value":sample.value, metric_name + " Uncertain":sample.is_uncertain})
        samples_df = samples_df.append(sample_df)
    # Remove returned values that are None, i.e. trend had a gap during that time
    return samples_df.dropna(subset=[metric_name + ' Value'])
  
# Iterate over metrics gathered from the worksheet and get its trended sample data using the defined function 
all_metric_data = pd.DataFrame()
for m_id in analysis_metrics['ID']:
    single_metric = extract_metric_data(metric_id = m_id, 
                                        start_time = display_range['Start'].strftime("%Y-%m-%dT%H:%M:%S.%fZ"), 
                                        end_time = display_range['End'].strftime("%Y-%m-%dT%H:%M:%S.%fZ"))
    all_metric_data = pd.concat([all_metric_data, single_metric])
    
    
display(all_metric_data)
# Replace below with the metric name to only see that metric's data
# met_name = "Example Metric"
# metric_data[[met_name + ' Value', met_name + ' Uncertain']].dropna(subset=[met_name + " Value"])

image.pngimage.png

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...