{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from seeq import spy\n",
    "import pandas as pd\n",
    "\n",
    "# Set the compatibility option so that you maximize the chance that SPy will remain compatible with your notebook/script\n",
    "spy.options.compatibility = 193"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"background-color: #EEFFEE;color:black; text-align: left;\">Logged in to <strong>http://localhost:34216</strong> as <strong>agent_api_key</strong>.<br>Seeq Server Version: <strong>R66.0.0-SNAPSHOT</strong><br>Seeq SDK Module Version: <strong>66.0.0</strong> @ C:\\git\\crab\\sdk\\pypi\\seeq\\sdk<br>Seeq SPy Module Version: <strong>193.0</strong> @ C:\\git\\crab\\sdk\\pypi\\seeq\\spy</div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Log into Seeq Server if you're not using Seeq Data Lab:\n",
    "spy.login(url='http://localhost:34216', credentials_file='../credentials.key', force=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Asset Trees 2: Templates\n",
    "\n",
    "In the [first asset trees tutorial notebook](Asset%20Trees%201%20-%20Introduction.ipynb), we learned how to use the `spy.assets.Tree` Python class to define, modify, and push asset trees to Seeq. In this notebook, we will dive deeper into the `spy.assets` submodule and explore its ability to create asset trees out of customized Python \"templates\".\n",
    "\n",
    "You may have heard of the concept of a [_Digital Twin_](https://en.wikipedia.org/wiki/Digital_twin), which is a \"virtual representation that serves as the real-time digital counterpart of a physical object or process.\" The `spy.assets` submodule provides a framework for defining Digital Twins using the power and relative ease-of-use of the Python programming language. You can leverage object-oriented design principles like _encapsulation_, _inheritance_, _composition_, and _mixins_ to increase reuse and consistency while still accommodating the many exceptions that naturally occur in manufacturing scenarios.\n",
    "\n",
    "As with other capabilities in SPy, the work you do with `spy.assets` is (by default) sandboxed to a particular workbook that you own. As a result, you can easily experiment with new asset structures and calculations before publishing to your broader organization."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Simple Trees vs Templates\n",
    "\n",
    "When should you use the `spy.assets.Tree()` and when should you use the Template methods described here?\n",
    "\n",
    "Start with the simpler `spy.assets.Tree()` functionality unless, as you skim through this documentation, it's clear that you'd like to try the Template functionality first. You can always \"graduate\" to this more advanced approach."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Concepts\n",
    "\n",
    "There are several important concepts to understand as we dive in to the `spy.assets` submodule:\n",
    "\n",
    "* An **asset** is simply a container (with associated _properties_) that has children. Those children can be other assets and/or _attributes_ (signals, conditions and scalars).\n",
    "* An **attribute** is a signal, condition or scalar that is a child of an asset and is said to be _contained_ by that asset. This is a similar concept to OSIsoft Asset Framework's _attribute_.\n",
    "* A **property** is a named value (with optional units of measure) that captures metadata associated with assets, signals, conditions and scalars. They correspond to the columns in a metadata DataFrame.\n",
    "* A **component** is an asset that is a child of another asset and is said to be _contained_ by the parent asset. For example, a _Furnace_ asset may contain a _Blast Air Blower_.\n",
    "* A **template** defines the set of _attributes_ and _components_ that comprise a particular Asset. A template corresponds to a class of asset like _Furnace_, _Well_, _Pump_.\n",
    "* A **reference** is a link to a signal, condition or scalar that exists somewhere else. If you are mapping a flat list of tags into an asset hierarchy, the asset hierarchy contains _references_ to those tags."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## How Python fits in\n",
    "\n",
    "A template is specified in Python by defining a [class](https://docs.python.org/3/tutorial/classes.html) that derives from `spy.assets.Asset` or `spy.assets.Mixin` (more about _mixins_ later). These classes can have member functions and data members, just like any other Python class.\n",
    "\n",
    "Classes can have special member functions that represent _attributes_. They are _decorated_ with the `spy.assets.Asset.Attribute` decorator, which tells the SPy framework to use them to define attributes for the asset. Similarly, the `spy.assets.Asset.Component` decorated indicates to the SPy framework that a _component_ is being defined as a child of the asset, which is usually a different Python class instance that derives from `spy.assets.Asset` or `spy.assets.Mixin`.\n",
    "\n",
    "You'll see how it works in the examples that follow."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Getting Started\n",
    "\n",
    "First we need to import the Python modules we will need and log in:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from seeq.spy.assets import Asset, ItemGroup\n",
    "\n",
    "# Show all data in DataFrame output -- don't truncate it\n",
    "pd.set_option('display.max_colwidth', None)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Preparing the Ingredients\n",
    "\n",
    "There are two main steps to creating an asset tree, and they're similar to cooking in your kitchen: First you find and prepare the \"ingredients\", then you use them in a \"recipe\".\n",
    "\n",
    "The \"ingredients\" are the signals, conditions and/or scalars that already exist in Seeq, either as indexed items from external datasources or as items you've imported to the internal Seeq database. You will create a DataFrame that represents the _metadata_ ingredients, and those ingredients will be used by `spy.assets.build()` to create another DataFrame full of new items to be pushed as an asset tree.\n",
    "\n",
    "For this example, we're going to map a flat tag structure into an asset template called `HVAC`. We will use Seeq's built-in Example Data.\n",
    "\n",
    "Let's search for all the \"flat list\" example data tags that have the pattern `Area <letter>_<sensor name>`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"background-color: #EEFFEE;color:black; text-align: left;\">Query successful</div><table class=\"tex2jax_ignore\" style=\"color:black;\"><tr><td style=\"background-color: #EEFFEE;\"></td><td style=\"background-color: #EEFFEE; text-align: left;\">Name</td><td style=\"background-color: #EEFFEE; text-align: right;\">Time</td><td style=\"background-color: #EEFFEE; text-align: right;\">Count</td><td style=\"background-color: #EEFFEE; text-align: right;\">Pages</td><td style=\"background-color: #EEFFEE; text-align: left;\">Result</td></tr><tr style=\"background-color: #EEFFEE;\"><td style=\"vertical-align: top;\">0</td><td style=\"text-align: left; vertical-align: top;\">Area ?_*</td><td style=\"vertical-align: top;\">00:00:00.13</td><td style=\"text-align: right; vertical-align: top;\">68</td><td style=\"text-align: right; vertical-align: top;\">1</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>Name</th>\n",
       "      <th>Description</th>\n",
       "      <th>Type</th>\n",
       "      <th>Value Unit Of Measure</th>\n",
       "      <th>Datasource Name</th>\n",
       "      <th>Archived</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0EF58FC2-808C-7140-8131-94452FC3710A</td>\n",
       "      <td>Area G_Temperature</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0EF58FC2-819B-7130-8DA5-CEAC2086E025</td>\n",
       "      <td>Area G_Wet Bulb</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0EF58FC2-81CE-7580-85BE-080C7622D9BE</td>\n",
       "      <td>Area G_Relative Humidity</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>%</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0EF58FC2-81D8-71C0-8CDC-302A3AE0ED26</td>\n",
       "      <td>Area C_Optimizer</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0EF58FC2-8206-77F0-8519-ECD251B886A6</td>\n",
       "      <td>Area A_Temperature</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                     ID                      Name  \\\n",
       "0  0EF58FC2-808C-7140-8131-94452FC3710A        Area G_Temperature   \n",
       "1  0EF58FC2-819B-7130-8DA5-CEAC2086E025           Area G_Wet Bulb   \n",
       "2  0EF58FC2-81CE-7580-85BE-080C7622D9BE  Area G_Relative Humidity   \n",
       "3  0EF58FC2-81D8-71C0-8CDC-302A3AE0ED26          Area C_Optimizer   \n",
       "4  0EF58FC2-8206-77F0-8519-ECD251B886A6        Area A_Temperature   \n",
       "\n",
       "   Description          Type Value Unit Of Measure Datasource Name  Archived  \n",
       "0          NaN  StoredSignal                    °F    Example Data     False  \n",
       "1          NaN  StoredSignal                    °F    Example Data     False  \n",
       "2          NaN  StoredSignal                     %    Example Data     False  \n",
       "3          NaN  StoredSignal                   NaN    Example Data     False  \n",
       "4          NaN  StoredSignal                    °F    Example Data     False  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hvac_metadata_df = spy.search({\n",
    "    'Name': 'Area ?_*'\n",
    "})\n",
    "\n",
    "hvac_metadata_df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `hvac_metadata_df` _metadata_ DataFrame serves as the \"ingredients\" for the recipe that we will define a little later.\n",
    "\n",
    "In order to build the HVAC assets, we must add three important columns to our _metadata_ DataFrame:\n",
    "\n",
    "* `Build Asset` specifies the name of the asset that a row of metadata applies to. In our case, that will be `Area X`, where X is a letter differentiating the different areas of the plant that an HVAC system serves.\n",
    "* `Build Path` specifies the path through the asset hierarchy where you want the asset to live.\n",
    "\n",
    "We will create these columns using the power of Pandas DataFrames:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>Name</th>\n",
       "      <th>Description</th>\n",
       "      <th>Type</th>\n",
       "      <th>Value Unit Of Measure</th>\n",
       "      <th>Datasource Name</th>\n",
       "      <th>Archived</th>\n",
       "      <th>Build Asset</th>\n",
       "      <th>Build Path</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0EF58FC2-808C-7140-8131-94452FC3710A</td>\n",
       "      <td>Area G_Temperature</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0EF58FC2-819B-7130-8DA5-CEAC2086E025</td>\n",
       "      <td>Area G_Wet Bulb</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0EF58FC2-81CE-7580-85BE-080C7622D9BE</td>\n",
       "      <td>Area G_Relative Humidity</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>%</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0EF58FC2-81D8-71C0-8CDC-302A3AE0ED26</td>\n",
       "      <td>Area C_Optimizer</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0EF58FC2-8206-77F0-8519-ECD251B886A6</td>\n",
       "      <td>Area A_Temperature</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63</th>\n",
       "      <td>0EF58FC2-8C3F-EAF0-A54D-2EDBDA836AD2</td>\n",
       "      <td>Area G_Compressor Stage</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>string</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64</th>\n",
       "      <td>0EF58FC2-8C7F-6290-BEE8-1BE39219249E</td>\n",
       "      <td>Area A_Compressor Power</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>kW</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>0EF58FC2-8C97-F930-B81A-D74F9F8BB2FB</td>\n",
       "      <td>Area B_Wet Bulb</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area B</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>66</th>\n",
       "      <td>0EF58FC2-8D14-7160-9EE1-1EC3CA6EFB2C</td>\n",
       "      <td>Area E_Temperature</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area E</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67</th>\n",
       "      <td>0EF58FC2-8DA1-FB00-AE14-DAEDEF3806EC</td>\n",
       "      <td>Area C_Wet Bulb</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>68 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                      ID                      Name  \\\n",
       "0   0EF58FC2-808C-7140-8131-94452FC3710A        Area G_Temperature   \n",
       "1   0EF58FC2-819B-7130-8DA5-CEAC2086E025           Area G_Wet Bulb   \n",
       "2   0EF58FC2-81CE-7580-85BE-080C7622D9BE  Area G_Relative Humidity   \n",
       "3   0EF58FC2-81D8-71C0-8CDC-302A3AE0ED26          Area C_Optimizer   \n",
       "4   0EF58FC2-8206-77F0-8519-ECD251B886A6        Area A_Temperature   \n",
       "..                                   ...                       ...   \n",
       "63  0EF58FC2-8C3F-EAF0-A54D-2EDBDA836AD2   Area G_Compressor Stage   \n",
       "64  0EF58FC2-8C7F-6290-BEE8-1BE39219249E   Area A_Compressor Power   \n",
       "65  0EF58FC2-8C97-F930-B81A-D74F9F8BB2FB           Area B_Wet Bulb   \n",
       "66  0EF58FC2-8D14-7160-9EE1-1EC3CA6EFB2C        Area E_Temperature   \n",
       "67  0EF58FC2-8DA1-FB00-AE14-DAEDEF3806EC           Area C_Wet Bulb   \n",
       "\n",
       "    Description          Type Value Unit Of Measure Datasource Name  Archived  \\\n",
       "0           NaN  StoredSignal                    °F    Example Data     False   \n",
       "1           NaN  StoredSignal                    °F    Example Data     False   \n",
       "2           NaN  StoredSignal                     %    Example Data     False   \n",
       "3           NaN  StoredSignal                   NaN    Example Data     False   \n",
       "4           NaN  StoredSignal                    °F    Example Data     False   \n",
       "..          ...           ...                   ...             ...       ...   \n",
       "63          NaN  StoredSignal                string    Example Data     False   \n",
       "64          NaN  StoredSignal                    kW    Example Data     False   \n",
       "65          NaN  StoredSignal                    °F    Example Data     False   \n",
       "66          NaN  StoredSignal                    °F    Example Data     False   \n",
       "67          NaN  StoredSignal                    °F    Example Data     False   \n",
       "\n",
       "   Build Asset                    Build Path  \n",
       "0       Area G  My HVAC Units >> Facility #1  \n",
       "1       Area G  My HVAC Units >> Facility #1  \n",
       "2       Area G  My HVAC Units >> Facility #1  \n",
       "3       Area C  My HVAC Units >> Facility #1  \n",
       "4       Area A  My HVAC Units >> Facility #1  \n",
       "..         ...                           ...  \n",
       "63      Area G  My HVAC Units >> Facility #1  \n",
       "64      Area A  My HVAC Units >> Facility #1  \n",
       "65      Area B  My HVAC Units >> Facility #1  \n",
       "66      Area E  My HVAC Units >> Facility #1  \n",
       "67      Area C  My HVAC Units >> Facility #1  \n",
       "\n",
       "[68 rows x 9 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# We can use Pandas' string extraction capabilities to create the Build Asset column\n",
    "hvac_metadata_df['Build Asset'] = hvac_metadata_df['Name'].str.extract('(Area .)_.*')\n",
    "\n",
    "# We will specify a simple path in a new tree where we want these to live\n",
    "hvac_metadata_df['Build Path'] = 'My HVAC Units >> Facility #1'\n",
    "\n",
    "hvac_metadata_df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Writing the Recipe\n",
    "\n",
    "The recipe that turns the ingredients into an asset structure is specified using Python classes that derive from `Asset` or `Mixin`.\n",
    "\n",
    "First let's define our `HVAC` class:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "class HVAC(Asset):\n",
    "    \n",
    "    @Asset.Attribute()\n",
    "    def Temperature(self, metadata):\n",
    "        # We use simple Pandas syntax to select for a row in the DataFrame corresponding to our desired tag\n",
    "        return metadata[metadata['Name'].str.endswith('Temperature')]\n",
    "    \n",
    "    @Asset.Attribute()\n",
    "    def Relative_Humidity(self, metadata):\n",
    "        # All Attribute functions must take (self, metadata) as parameters\n",
    "        return metadata[metadata['Name'].str.contains('Humidity')]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This Python code defines an `HVAC` asset that has two attributes: `Temperature` and `Relative Humidity`. These attributes are represented in Python as functions that can return any of the following:\n",
    "\n",
    "1. A single-row DataFrame containing an ID column that identifies an item (signal/condition/scalar/metric) to expose on this asset. (As seen above.)\n",
    "2. A dictionary that defines the item. A `Type` entry is required (whose value must be `Signal`, `Condition`, `Scalar` or `Metric`). If `Name` is not supplied, the function name will be used as the `Name` with any underscores automatically replaced with a space. As you'll see below, you can specify `Formula` and `Formula Parameters` if you are trying to specify a calculated item.\n",
    "3. A _list_ of dictionaries if you want to specify multiple items in the format of (2) above."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can feed the \"ingredients\" into the \"recipe\" using the `spy.assets.build()` function. This command will build a new set of asset and signal definitions based on the `hvac_metadata_df` _metadata_ DataFrame. Each unique combination of `Build Path` and `Build Asset` will be treated as a different asset, and the `metadata` argument that is passed in to the `Asset.Attribute()` decorated functions will only contain the rows for a particular `Build Path` / `Build Asset` pair."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"background-color: #FFEEEE;color:black; text-align: left;\">Errors were encountered. Look for entries in \"Build Result\" that are not \"Success\".</div><table class=\"tex2jax_ignore\" style=\"color:black;\"><tr><td style=\"background-color: #FFEEEE;\"></td><td style=\"background-color: #FFEEEE; text-align: left;\">Build Path</td><td style=\"background-color: #FFEEEE; text-align: left;\">Build Asset</td><td style=\"background-color: #FFEEEE; text-align: left;\">Build Template</td><td style=\"background-color: #FFEEEE; text-align: left;\">Build Result</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">0</td><td style=\"text-align: left; vertical-align: top;\">My HVAC Units >> Facility #1</td><td style=\"text-align: left; vertical-align: top;\">Area G</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">1</td><td style=\"text-align: left; vertical-align: top;\">My HVAC Units >> Facility #1</td><td style=\"text-align: left; vertical-align: top;\">Area C</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">2</td><td style=\"text-align: left; vertical-align: top;\">My HVAC Units >> Facility #1</td><td style=\"text-align: left; vertical-align: top;\">Area A</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">3</td><td style=\"text-align: left; vertical-align: top;\">My HVAC Units >> Facility #1</td><td style=\"text-align: left; vertical-align: top;\">Area I</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">4</td><td style=\"text-align: left; vertical-align: top;\">My HVAC Units >> Facility #1</td><td style=\"text-align: left; vertical-align: top;\">Area B</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">5</td><td style=\"text-align: left; vertical-align: top;\">My HVAC Units >> Facility #1</td><td style=\"text-align: left; vertical-align: top;\">Area H</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">6</td><td style=\"text-align: left; vertical-align: top;\">My HVAC Units >> Facility #1</td><td style=\"text-align: left; vertical-align: top;\">Area D</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">7</td><td style=\"text-align: left; vertical-align: top;\">My HVAC Units >> Facility #1</td><td style=\"text-align: left; vertical-align: top;\">Area J</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">8</td><td style=\"text-align: left; vertical-align: top;\">My HVAC Units >> Facility #1</td><td style=\"text-align: left; vertical-align: top;\">Area E</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">9</td><td style=\"text-align: left; vertical-align: top;\">My HVAC Units >> Facility #1</td><td style=\"text-align: left; vertical-align: top;\">Area K</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">10</td><td style=\"text-align: left; vertical-align: top;\">My HVAC Units >> Facility #1</td><td style=\"text-align: left; vertical-align: top;\">Area F</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">The following issues could not be resolved:<br>(If the cause is not immediately obvious, make sure to check for circular references.)<br>\"My HVAC Units >> Facility #1 >> Area F >> Relative Humidity [on HVAC class]\": No matching metadata row found<br>\"My HVAC Units >> Facility #1 >> Area F >> Temperature [on HVAC class]\": No matching metadata row found</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">11</td><td style=\"text-align: left; vertical-align: top;\">My HVAC Units >> Facility #1</td><td style=\"text-align: left; vertical-align: top;\">Area Z</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>Description</th>\n",
       "      <th>Type</th>\n",
       "      <th>Value Unit Of Measure</th>\n",
       "      <th>Datasource Name</th>\n",
       "      <th>Archived</th>\n",
       "      <th>Referenced Name</th>\n",
       "      <th>Reference</th>\n",
       "      <th>Name</th>\n",
       "      <th>Asset</th>\n",
       "      <th>Asset Object</th>\n",
       "      <th>Path</th>\n",
       "      <th>Template</th>\n",
       "      <th>Build Result</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0EF58FC2-81CE-7580-85BE-080C7622D9BE</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>%</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area G_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0EF58FC2-808C-7140-8131-94452FC3710A</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area G_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area G</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0EF58FC2-8245-FF90-99E6-9CE8E5FF779E</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>%</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area C_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0EF58FC2-8A5C-6490-85CE-FD5BD9A25B54</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area C_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area C</td>\n",
       "      <td>Area C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0EF58FC2-83AA-66B0-8B9F-E021808A2620</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>%</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area A_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0EF58FC2-8206-77F0-8519-ECD251B886A6</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area A_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area A</td>\n",
       "      <td>Area A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>0EF58FC2-8642-77B0-BBFB-7F069389F904</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>%</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area I_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area I</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area I</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>0EF58FC2-8228-EAD0-9A21-D2ADB5F29DED</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area I_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area I</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area I</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area I</td>\n",
       "      <td>Area I</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area I</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>0EF58FC2-8348-EC30-874B-C093508CCDF8</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>%</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area B_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area B</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area B</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>0EF58FC2-82AC-E830-9324-CD3E38A9EB6E</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area B_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area B</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area B</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area B</td>\n",
       "      <td>Area B</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area B</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>0EF58FC2-8BC5-F9D0-8D43-F1DCC6B61262</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>%</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area H_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area H</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area H</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>0EF58FC2-86A1-FB20-BD09-83610D9B488B</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area H_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area H</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area H</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area H</td>\n",
       "      <td>Area H</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area H</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>0EF58FC2-8294-7190-BE8D-EBBDC689A86E</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>%</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area D_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area D</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area D</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>0EF58FC2-8B7C-75F0-99A3-B0D0420939F3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area D_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area D</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area D</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area D</td>\n",
       "      <td>Area D</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area D</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>0EF58FC2-88F0-E840-8CE2-12878902F95A</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>%</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area J_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area J</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area J</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>0EF58FC2-82C0-60B0-BF29-60C8ACFACF0D</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area J_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area J</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area J</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area J</td>\n",
       "      <td>Area J</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area J</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>0EF58FC2-89B3-FD40-B547-C17F8D1C2503</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>%</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area E_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area E</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area E</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>0EF58FC2-8D14-7160-9EE1-1EC3CA6EFB2C</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area E_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area E</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area E</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area E</td>\n",
       "      <td>Area E</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area E</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>0EF58FC2-858B-6600-BB76-0CC15A89DCEC</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>%</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area K_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area K</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area K</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>0EF58FC2-86C8-EC20-93AB-5C597A68F0A2</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area K_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area K</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area K</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area K</td>\n",
       "      <td>Area K</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area K</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area F</td>\n",
       "      <td>Area F</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area F</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>0EF58FC2-8B15-FD50-8CDE-6AB03432D37A</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>%</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area Z_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>0EF58FC2-8681-FF50-A759-7103EAEA2911</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>°F</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area Z_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area Z</td>\n",
       "      <td>Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                      ID  Description          Type  \\\n",
       "0   0EF58FC2-81CE-7580-85BE-080C7622D9BE          NaN  StoredSignal   \n",
       "1   0EF58FC2-808C-7140-8131-94452FC3710A          NaN  StoredSignal   \n",
       "2                                    NaN          NaN         Asset   \n",
       "3   0EF58FC2-8245-FF90-99E6-9CE8E5FF779E          NaN  StoredSignal   \n",
       "4   0EF58FC2-8A5C-6490-85CE-FD5BD9A25B54          NaN  StoredSignal   \n",
       "5                                    NaN          NaN         Asset   \n",
       "6   0EF58FC2-83AA-66B0-8B9F-E021808A2620          NaN  StoredSignal   \n",
       "7   0EF58FC2-8206-77F0-8519-ECD251B886A6          NaN  StoredSignal   \n",
       "8                                    NaN          NaN         Asset   \n",
       "9   0EF58FC2-8642-77B0-BBFB-7F069389F904          NaN  StoredSignal   \n",
       "10  0EF58FC2-8228-EAD0-9A21-D2ADB5F29DED          NaN  StoredSignal   \n",
       "11                                   NaN          NaN         Asset   \n",
       "12  0EF58FC2-8348-EC30-874B-C093508CCDF8          NaN  StoredSignal   \n",
       "13  0EF58FC2-82AC-E830-9324-CD3E38A9EB6E          NaN  StoredSignal   \n",
       "14                                   NaN          NaN         Asset   \n",
       "15  0EF58FC2-8BC5-F9D0-8D43-F1DCC6B61262          NaN  StoredSignal   \n",
       "16  0EF58FC2-86A1-FB20-BD09-83610D9B488B          NaN  StoredSignal   \n",
       "17                                   NaN          NaN         Asset   \n",
       "18  0EF58FC2-8294-7190-BE8D-EBBDC689A86E          NaN  StoredSignal   \n",
       "19  0EF58FC2-8B7C-75F0-99A3-B0D0420939F3          NaN  StoredSignal   \n",
       "20                                   NaN          NaN         Asset   \n",
       "21  0EF58FC2-88F0-E840-8CE2-12878902F95A          NaN  StoredSignal   \n",
       "22  0EF58FC2-82C0-60B0-BF29-60C8ACFACF0D          NaN  StoredSignal   \n",
       "23                                   NaN          NaN         Asset   \n",
       "24  0EF58FC2-89B3-FD40-B547-C17F8D1C2503          NaN  StoredSignal   \n",
       "25  0EF58FC2-8D14-7160-9EE1-1EC3CA6EFB2C          NaN  StoredSignal   \n",
       "26                                   NaN          NaN         Asset   \n",
       "27  0EF58FC2-858B-6600-BB76-0CC15A89DCEC          NaN  StoredSignal   \n",
       "28  0EF58FC2-86C8-EC20-93AB-5C597A68F0A2          NaN  StoredSignal   \n",
       "29                                   NaN          NaN         Asset   \n",
       "30                                   NaN          NaN         Asset   \n",
       "31  0EF58FC2-8B15-FD50-8CDE-6AB03432D37A          NaN  StoredSignal   \n",
       "32  0EF58FC2-8681-FF50-A759-7103EAEA2911          NaN  StoredSignal   \n",
       "33                                   NaN          NaN         Asset   \n",
       "\n",
       "   Value Unit Of Measure Datasource Name Archived           Referenced Name  \\\n",
       "0                      %    Example Data    False  Area G_Relative Humidity   \n",
       "1                     °F    Example Data    False        Area G_Temperature   \n",
       "2                    NaN             NaN      NaN                       NaN   \n",
       "3                      %    Example Data    False  Area C_Relative Humidity   \n",
       "4                     °F    Example Data    False        Area C_Temperature   \n",
       "5                    NaN             NaN      NaN                       NaN   \n",
       "6                      %    Example Data    False  Area A_Relative Humidity   \n",
       "7                     °F    Example Data    False        Area A_Temperature   \n",
       "8                    NaN             NaN      NaN                       NaN   \n",
       "9                      %    Example Data    False  Area I_Relative Humidity   \n",
       "10                    °F    Example Data    False        Area I_Temperature   \n",
       "11                   NaN             NaN      NaN                       NaN   \n",
       "12                     %    Example Data    False  Area B_Relative Humidity   \n",
       "13                    °F    Example Data    False        Area B_Temperature   \n",
       "14                   NaN             NaN      NaN                       NaN   \n",
       "15                     %    Example Data    False  Area H_Relative Humidity   \n",
       "16                    °F    Example Data    False        Area H_Temperature   \n",
       "17                   NaN             NaN      NaN                       NaN   \n",
       "18                     %    Example Data    False  Area D_Relative Humidity   \n",
       "19                    °F    Example Data    False        Area D_Temperature   \n",
       "20                   NaN             NaN      NaN                       NaN   \n",
       "21                     %    Example Data    False  Area J_Relative Humidity   \n",
       "22                    °F    Example Data    False        Area J_Temperature   \n",
       "23                   NaN             NaN      NaN                       NaN   \n",
       "24                     %    Example Data    False  Area E_Relative Humidity   \n",
       "25                    °F    Example Data    False        Area E_Temperature   \n",
       "26                   NaN             NaN      NaN                       NaN   \n",
       "27                     %    Example Data    False  Area K_Relative Humidity   \n",
       "28                    °F    Example Data    False        Area K_Temperature   \n",
       "29                   NaN             NaN      NaN                       NaN   \n",
       "30                   NaN             NaN      NaN                       NaN   \n",
       "31                     %    Example Data    False  Area Z_Relative Humidity   \n",
       "32                    °F    Example Data    False        Area Z_Temperature   \n",
       "33                   NaN             NaN      NaN                       NaN   \n",
       "\n",
       "   Reference               Name   Asset  \\\n",
       "0       True  Relative Humidity  Area G   \n",
       "1       True        Temperature  Area G   \n",
       "2        NaN             Area G  Area G   \n",
       "3       True  Relative Humidity  Area C   \n",
       "4       True        Temperature  Area C   \n",
       "5        NaN             Area C  Area C   \n",
       "6       True  Relative Humidity  Area A   \n",
       "7       True        Temperature  Area A   \n",
       "8        NaN             Area A  Area A   \n",
       "9       True  Relative Humidity  Area I   \n",
       "10      True        Temperature  Area I   \n",
       "11       NaN             Area I  Area I   \n",
       "12      True  Relative Humidity  Area B   \n",
       "13      True        Temperature  Area B   \n",
       "14       NaN             Area B  Area B   \n",
       "15      True  Relative Humidity  Area H   \n",
       "16      True        Temperature  Area H   \n",
       "17       NaN             Area H  Area H   \n",
       "18      True  Relative Humidity  Area D   \n",
       "19      True        Temperature  Area D   \n",
       "20       NaN             Area D  Area D   \n",
       "21      True  Relative Humidity  Area J   \n",
       "22      True        Temperature  Area J   \n",
       "23       NaN             Area J  Area J   \n",
       "24      True  Relative Humidity  Area E   \n",
       "25      True        Temperature  Area E   \n",
       "26       NaN             Area E  Area E   \n",
       "27      True  Relative Humidity  Area K   \n",
       "28      True        Temperature  Area K   \n",
       "29       NaN             Area K  Area K   \n",
       "30       NaN             Area F  Area F   \n",
       "31      True  Relative Humidity  Area Z   \n",
       "32      True        Temperature  Area Z   \n",
       "33       NaN             Area Z  Area Z   \n",
       "\n",
       "                              Asset Object                          Path  \\\n",
       "0   My HVAC Units >> Facility #1 >> Area G  My HVAC Units >> Facility #1   \n",
       "1   My HVAC Units >> Facility #1 >> Area G  My HVAC Units >> Facility #1   \n",
       "2   My HVAC Units >> Facility #1 >> Area G  My HVAC Units >> Facility #1   \n",
       "3   My HVAC Units >> Facility #1 >> Area C  My HVAC Units >> Facility #1   \n",
       "4   My HVAC Units >> Facility #1 >> Area C  My HVAC Units >> Facility #1   \n",
       "5   My HVAC Units >> Facility #1 >> Area C  My HVAC Units >> Facility #1   \n",
       "6   My HVAC Units >> Facility #1 >> Area A  My HVAC Units >> Facility #1   \n",
       "7   My HVAC Units >> Facility #1 >> Area A  My HVAC Units >> Facility #1   \n",
       "8   My HVAC Units >> Facility #1 >> Area A  My HVAC Units >> Facility #1   \n",
       "9   My HVAC Units >> Facility #1 >> Area I  My HVAC Units >> Facility #1   \n",
       "10  My HVAC Units >> Facility #1 >> Area I  My HVAC Units >> Facility #1   \n",
       "11  My HVAC Units >> Facility #1 >> Area I  My HVAC Units >> Facility #1   \n",
       "12  My HVAC Units >> Facility #1 >> Area B  My HVAC Units >> Facility #1   \n",
       "13  My HVAC Units >> Facility #1 >> Area B  My HVAC Units >> Facility #1   \n",
       "14  My HVAC Units >> Facility #1 >> Area B  My HVAC Units >> Facility #1   \n",
       "15  My HVAC Units >> Facility #1 >> Area H  My HVAC Units >> Facility #1   \n",
       "16  My HVAC Units >> Facility #1 >> Area H  My HVAC Units >> Facility #1   \n",
       "17  My HVAC Units >> Facility #1 >> Area H  My HVAC Units >> Facility #1   \n",
       "18  My HVAC Units >> Facility #1 >> Area D  My HVAC Units >> Facility #1   \n",
       "19  My HVAC Units >> Facility #1 >> Area D  My HVAC Units >> Facility #1   \n",
       "20  My HVAC Units >> Facility #1 >> Area D  My HVAC Units >> Facility #1   \n",
       "21  My HVAC Units >> Facility #1 >> Area J  My HVAC Units >> Facility #1   \n",
       "22  My HVAC Units >> Facility #1 >> Area J  My HVAC Units >> Facility #1   \n",
       "23  My HVAC Units >> Facility #1 >> Area J  My HVAC Units >> Facility #1   \n",
       "24  My HVAC Units >> Facility #1 >> Area E  My HVAC Units >> Facility #1   \n",
       "25  My HVAC Units >> Facility #1 >> Area E  My HVAC Units >> Facility #1   \n",
       "26  My HVAC Units >> Facility #1 >> Area E  My HVAC Units >> Facility #1   \n",
       "27  My HVAC Units >> Facility #1 >> Area K  My HVAC Units >> Facility #1   \n",
       "28  My HVAC Units >> Facility #1 >> Area K  My HVAC Units >> Facility #1   \n",
       "29  My HVAC Units >> Facility #1 >> Area K  My HVAC Units >> Facility #1   \n",
       "30  My HVAC Units >> Facility #1 >> Area F  My HVAC Units >> Facility #1   \n",
       "31  My HVAC Units >> Facility #1 >> Area Z  My HVAC Units >> Facility #1   \n",
       "32  My HVAC Units >> Facility #1 >> Area Z  My HVAC Units >> Facility #1   \n",
       "33  My HVAC Units >> Facility #1 >> Area Z  My HVAC Units >> Facility #1   \n",
       "\n",
       "   Template Build Result  \n",
       "0      HVAC      Success  \n",
       "1      HVAC      Success  \n",
       "2      HVAC      Success  \n",
       "3      HVAC      Success  \n",
       "4      HVAC      Success  \n",
       "5      HVAC      Success  \n",
       "6      HVAC      Success  \n",
       "7      HVAC      Success  \n",
       "8      HVAC      Success  \n",
       "9      HVAC      Success  \n",
       "10     HVAC      Success  \n",
       "11     HVAC      Success  \n",
       "12     HVAC      Success  \n",
       "13     HVAC      Success  \n",
       "14     HVAC      Success  \n",
       "15     HVAC      Success  \n",
       "16     HVAC      Success  \n",
       "17     HVAC      Success  \n",
       "18     HVAC      Success  \n",
       "19     HVAC      Success  \n",
       "20     HVAC      Success  \n",
       "21     HVAC      Success  \n",
       "22     HVAC      Success  \n",
       "23     HVAC      Success  \n",
       "24     HVAC      Success  \n",
       "25     HVAC      Success  \n",
       "26     HVAC      Success  \n",
       "27     HVAC      Success  \n",
       "28     HVAC      Success  \n",
       "29     HVAC      Success  \n",
       "30     HVAC      Success  \n",
       "31     HVAC      Success  \n",
       "32     HVAC      Success  \n",
       "33     HVAC      Success  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "build_df = spy.assets.build(HVAC, hvac_metadata_df)\n",
    "\n",
    "build_df\n",
    "\n",
    "# NOTE:\n",
    "#\n",
    "# There will be errors in this example, the status table will be colored red. Read more below."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the progress table above (which should be colored red), if you look at the `Build Result` column for Area F, you can see that no matching metadata was found. If you then do a search in Seeq Workbench for `Area F_`, you'll see that there are no `Temperature` or `Relative Humidity` tags for that area. That's fine! When we push, we simply won't add signals for Area F."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The new `build_df` DataFrame contains new metadata that represent all the Seeq items that can be pushed into Seeq to realize this simple asset model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"background-color: #EEFFEE;color:black; text-align: left;\">Pushed successfully to datasource <strong>Seeq Data Lab [Datasource ID: Seeq Data Lab]</strong> and scoped to workbook ID <strong>0EF5BE2D-2923-FB30-A567-172B344E74EE</strong><br>Click the following link to see what you pushed in Seeq:<br><a href=\"http://localhost:34216/0EF5BE2D-2738-FFA0-81E0-D2B058859C4D/workbook/0EF5BE2D-2923-FB30-A567-172B344E74EE/worksheet/0EF5BE2D-2A01-FDE0-ABC4-799849E1C026\" target=\"_blank\">http://localhost:34216/0EF5BE2D-2738-FFA0-81E0-D2B058859C4D/workbook/0EF5BE2D-2923-FB30-A567-172B344E74EE/worksheet/0EF5BE2D-2A01-FDE0-ABC4-799849E1C026</a></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Description</th>\n",
       "      <th>Type</th>\n",
       "      <th>Datasource Name</th>\n",
       "      <th>Archived</th>\n",
       "      <th>Referenced Name</th>\n",
       "      <th>Reference</th>\n",
       "      <th>Name</th>\n",
       "      <th>Asset</th>\n",
       "      <th>Asset Object</th>\n",
       "      <th>Path</th>\n",
       "      <th>...</th>\n",
       "      <th>Formula Parameters</th>\n",
       "      <th>Cache Enabled</th>\n",
       "      <th>Referenced ID</th>\n",
       "      <th>Scoped To</th>\n",
       "      <th>Datasource Class</th>\n",
       "      <th>Datasource ID</th>\n",
       "      <th>Data ID</th>\n",
       "      <th>ID</th>\n",
       "      <th>Push Result</th>\n",
       "      <th>Value Unit Of Measure</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area G_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-81CE-7580-85BE-080C7622D9BE]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-81CE-7580-85BE-080C7622D9BE</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G &gt;&gt; Relative Humidity</td>\n",
       "      <td>0EF5BE2D-3FAA-64D0-87B1-A06BC7F0605E</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area G_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-808C-7140-8131-94452FC3710A]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-808C-7140-8131-94452FC3710A</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G &gt;&gt; Temperature</td>\n",
       "      <td>0EF5BE2D-4127-6290-8CF3-FC4399F681BD</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area G</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G</td>\n",
       "      <td>0EF5BE2D-4888-ECF0-A176-90C60EE8D980</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area C_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8245-FF90-99E6-9CE8E5FF779E]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8245-FF90-99E6-9CE8E5FF779E</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area C &gt;&gt; Relative Humidity</td>\n",
       "      <td>0EF5BE2D-41C0-FF80-A9A4-AD8E56F9013E</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area C_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8A5C-6490-85CE-FD5BD9A25B54]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8A5C-6490-85CE-FD5BD9A25B54</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area C &gt;&gt; Temperature</td>\n",
       "      <td>0EF5BE2D-4225-7110-A6AB-14BE086C78CB</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area C</td>\n",
       "      <td>Area C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area C</td>\n",
       "      <td>0EF5BE2D-4888-ECF0-BBD6-64406C031887</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area A_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-83AA-66B0-8B9F-E021808A2620]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-83AA-66B0-8B9F-E021808A2620</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area A &gt;&gt; Relative Humidity</td>\n",
       "      <td>0EF5BE2D-428B-F9B0-983F-C6C713479D59</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area A_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8206-77F0-8519-ECD251B886A6]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8206-77F0-8519-ECD251B886A6</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area A &gt;&gt; Temperature</td>\n",
       "      <td>0EF5BE2D-42F9-7780-B2E8-119A05678A25</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area A</td>\n",
       "      <td>Area A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area A</td>\n",
       "      <td>0EF5BE2D-4888-ECF0-AC41-02F448948AEB</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area I_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area I</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area I</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8642-77B0-BBFB-7F069389F904]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8642-77B0-BBFB-7F069389F904</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area I &gt;&gt; Relative Humidity</td>\n",
       "      <td>0EF5BE2D-4360-6020-8780-3FA2CA98C148</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area I_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area I</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area I</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8228-EAD0-9A21-D2ADB5F29DED]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8228-EAD0-9A21-D2ADB5F29DED</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area I &gt;&gt; Temperature</td>\n",
       "      <td>0EF5BE2D-43BC-EC80-8855-DBAFEA588E7D</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area I</td>\n",
       "      <td>Area I</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area I</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area I</td>\n",
       "      <td>0EF5BE2D-488B-6400-8536-954736A876AE</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area B_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area B</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area B</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8348-EC30-874B-C093508CCDF8]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8348-EC30-874B-C093508CCDF8</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area B &gt;&gt; Relative Humidity</td>\n",
       "      <td>0EF5BE2D-440F-ECA0-B385-543A45DB0FB9</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area B_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area B</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area B</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-82AC-E830-9324-CD3E38A9EB6E]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-82AC-E830-9324-CD3E38A9EB6E</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area B &gt;&gt; Temperature</td>\n",
       "      <td>0EF5BE2D-446C-F900-92F6-D7E0DDDE0B60</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area B</td>\n",
       "      <td>Area B</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area B</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area B</td>\n",
       "      <td>0EF5BE2D-488B-6400-B92A-592FEA813E8E</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area H_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area H</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area H</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8BC5-F9D0-8D43-F1DCC6B61262]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8BC5-F9D0-8D43-F1DCC6B61262</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area H &gt;&gt; Relative Humidity</td>\n",
       "      <td>0EF5BE2D-44D5-E8B0-B60F-04B9CA14B573</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area H_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area H</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area H</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-86A1-FB20-BD09-83610D9B488B]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-86A1-FB20-BD09-83610D9B488B</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area H &gt;&gt; Temperature</td>\n",
       "      <td>0EF5BE2D-4528-E8D0-92E2-F28BD0783A9E</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area H</td>\n",
       "      <td>Area H</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area H</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area H</td>\n",
       "      <td>0EF5BE2D-488D-FB10-9907-2236D3F257DE</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area D_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area D</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area D</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8294-7190-BE8D-EBBDC689A86E]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8294-7190-BE8D-EBBDC689A86E</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area D &gt;&gt; Relative Humidity</td>\n",
       "      <td>0EF5BE2D-4576-EAD0-A11B-E722D2F0933D</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area D_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area D</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area D</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8B7C-75F0-99A3-B0D0420939F3]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8B7C-75F0-99A3-B0D0420939F3</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area D &gt;&gt; Temperature</td>\n",
       "      <td>0EF5BE2D-45CC-6200-BFF0-5C03BE8412D0</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area D</td>\n",
       "      <td>Area D</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area D</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area D</td>\n",
       "      <td>0EF5BE2D-488D-FB10-A524-DA099BE25F15</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area J_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area J</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area J</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-88F0-E840-8CE2-12878902F95A]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-88F0-E840-8CE2-12878902F95A</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area J &gt;&gt; Relative Humidity</td>\n",
       "      <td>0EF5BE2D-4615-75E0-A3F7-C233D3F0214D</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area J_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area J</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area J</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-82C0-60B0-BF29-60C8ACFACF0D]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-82C0-60B0-BF29-60C8ACFACF0D</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area J &gt;&gt; Temperature</td>\n",
       "      <td>0EF5BE2D-4659-FBA0-A96D-506B7F9554E3</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area J</td>\n",
       "      <td>Area J</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area J</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area J</td>\n",
       "      <td>0EF5BE2D-4892-F930-82DC-E47DA5EB8DBF</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area E_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area E</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area E</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-89B3-FD40-B547-C17F8D1C2503]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-89B3-FD40-B547-C17F8D1C2503</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area E &gt;&gt; Relative Humidity</td>\n",
       "      <td>0EF5BE2D-46B1-F9E0-819B-D315B2138194</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area E_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area E</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area E</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8D14-7160-9EE1-1EC3CA6EFB2C]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8D14-7160-9EE1-1EC3CA6EFB2C</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area E &gt;&gt; Temperature</td>\n",
       "      <td>0EF5BE2D-46FA-FDC0-B94B-E7CA0A78C666</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area E</td>\n",
       "      <td>Area E</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area E</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area E</td>\n",
       "      <td>0EF5BE2D-4892-F930-B4C3-6CDA708E33AA</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area K_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area K</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area K</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-858B-6600-BB76-0CC15A89DCEC]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-858B-6600-BB76-0CC15A89DCEC</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area K &gt;&gt; Relative Humidity</td>\n",
       "      <td>0EF5BE2D-473C-EC70-825A-CCDD18E78BEE</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area K_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area K</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area K</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-86C8-EC20-93AB-5C597A68F0A2]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-86C8-EC20-93AB-5C597A68F0A2</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area K &gt;&gt; Temperature</td>\n",
       "      <td>0EF5BE2D-477E-FB20-AECD-1A53BF5EB2B1</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area K</td>\n",
       "      <td>Area K</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area K</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area K</td>\n",
       "      <td>0EF5BE2D-4892-F930-B29D-D415381D3BED</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area F</td>\n",
       "      <td>Area F</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area F</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area F</td>\n",
       "      <td>0EF5BE2D-4895-6040-8E92-04BB1C4EC57B</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area Z_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8B15-FD50-8CDE-6AB03432D37A]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8B15-FD50-8CDE-6AB03432D37A</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area Z &gt;&gt; Relative Humidity</td>\n",
       "      <td>0EF5BE2D-47C7-FF00-B37A-886A62E90EEB</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Area Z_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8681-FF50-A759-7103EAEA2911]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8681-FF50-A759-7103EAEA2911</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area Z &gt;&gt; Temperature</td>\n",
       "      <td>0EF5BE2D-481D-6630-9F70-78DE2E5D91FD</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area Z</td>\n",
       "      <td>Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area Z</td>\n",
       "      <td>0EF5BE2D-4895-6040-9E72-61B4139BEB68</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>__side_effect_asset_1__</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>My HVAC Units</td>\n",
       "      <td>My HVAC Units</td>\n",
       "      <td>NaN</td>\n",
       "      <td></td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units</td>\n",
       "      <td>0EF5BE2D-487C-F9A0-8334-4F3E5D06EFCE</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>__side_effect_asset_2__</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Facility #1</td>\n",
       "      <td>Facility #1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>My HVAC Units</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>0EF5BE2D-4886-75E0-86D7-557BE6494D53</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>36 rows × 23 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                         Description              Type Datasource Name  \\\n",
       "0                                NaN  CalculatedSignal    Example Data   \n",
       "1                                NaN  CalculatedSignal    Example Data   \n",
       "2                                NaN             Asset             NaN   \n",
       "3                                NaN  CalculatedSignal    Example Data   \n",
       "4                                NaN  CalculatedSignal    Example Data   \n",
       "5                                NaN             Asset             NaN   \n",
       "6                                NaN  CalculatedSignal    Example Data   \n",
       "7                                NaN  CalculatedSignal    Example Data   \n",
       "8                                NaN             Asset             NaN   \n",
       "9                                NaN  CalculatedSignal    Example Data   \n",
       "10                               NaN  CalculatedSignal    Example Data   \n",
       "11                               NaN             Asset             NaN   \n",
       "12                               NaN  CalculatedSignal    Example Data   \n",
       "13                               NaN  CalculatedSignal    Example Data   \n",
       "14                               NaN             Asset             NaN   \n",
       "15                               NaN  CalculatedSignal    Example Data   \n",
       "16                               NaN  CalculatedSignal    Example Data   \n",
       "17                               NaN             Asset             NaN   \n",
       "18                               NaN  CalculatedSignal    Example Data   \n",
       "19                               NaN  CalculatedSignal    Example Data   \n",
       "20                               NaN             Asset             NaN   \n",
       "21                               NaN  CalculatedSignal    Example Data   \n",
       "22                               NaN  CalculatedSignal    Example Data   \n",
       "23                               NaN             Asset             NaN   \n",
       "24                               NaN  CalculatedSignal    Example Data   \n",
       "25                               NaN  CalculatedSignal    Example Data   \n",
       "26                               NaN             Asset             NaN   \n",
       "27                               NaN  CalculatedSignal    Example Data   \n",
       "28                               NaN  CalculatedSignal    Example Data   \n",
       "29                               NaN             Asset             NaN   \n",
       "30                               NaN             Asset             NaN   \n",
       "31                               NaN  CalculatedSignal    Example Data   \n",
       "32                               NaN  CalculatedSignal    Example Data   \n",
       "33                               NaN             Asset             NaN   \n",
       "__side_effect_asset_1__          NaN             Asset             NaN   \n",
       "__side_effect_asset_2__          NaN             Asset             NaN   \n",
       "\n",
       "                        Archived           Referenced Name Reference  \\\n",
       "0                          False  Area G_Relative Humidity      True   \n",
       "1                          False        Area G_Temperature      True   \n",
       "2                            NaN                       NaN       NaN   \n",
       "3                          False  Area C_Relative Humidity      True   \n",
       "4                          False        Area C_Temperature      True   \n",
       "5                            NaN                       NaN       NaN   \n",
       "6                          False  Area A_Relative Humidity      True   \n",
       "7                          False        Area A_Temperature      True   \n",
       "8                            NaN                       NaN       NaN   \n",
       "9                          False  Area I_Relative Humidity      True   \n",
       "10                         False        Area I_Temperature      True   \n",
       "11                           NaN                       NaN       NaN   \n",
       "12                         False  Area B_Relative Humidity      True   \n",
       "13                         False        Area B_Temperature      True   \n",
       "14                           NaN                       NaN       NaN   \n",
       "15                         False  Area H_Relative Humidity      True   \n",
       "16                         False        Area H_Temperature      True   \n",
       "17                           NaN                       NaN       NaN   \n",
       "18                         False  Area D_Relative Humidity      True   \n",
       "19                         False        Area D_Temperature      True   \n",
       "20                           NaN                       NaN       NaN   \n",
       "21                         False  Area J_Relative Humidity      True   \n",
       "22                         False        Area J_Temperature      True   \n",
       "23                           NaN                       NaN       NaN   \n",
       "24                         False  Area E_Relative Humidity      True   \n",
       "25                         False        Area E_Temperature      True   \n",
       "26                           NaN                       NaN       NaN   \n",
       "27                         False  Area K_Relative Humidity      True   \n",
       "28                         False        Area K_Temperature      True   \n",
       "29                           NaN                       NaN       NaN   \n",
       "30                           NaN                       NaN       NaN   \n",
       "31                         False  Area Z_Relative Humidity      True   \n",
       "32                         False        Area Z_Temperature      True   \n",
       "33                           NaN                       NaN       NaN   \n",
       "__side_effect_asset_1__      NaN                       NaN       NaN   \n",
       "__side_effect_asset_2__      NaN                       NaN       NaN   \n",
       "\n",
       "                                      Name          Asset  \\\n",
       "0                        Relative Humidity         Area G   \n",
       "1                              Temperature         Area G   \n",
       "2                                   Area G         Area G   \n",
       "3                        Relative Humidity         Area C   \n",
       "4                              Temperature         Area C   \n",
       "5                                   Area C         Area C   \n",
       "6                        Relative Humidity         Area A   \n",
       "7                              Temperature         Area A   \n",
       "8                                   Area A         Area A   \n",
       "9                        Relative Humidity         Area I   \n",
       "10                             Temperature         Area I   \n",
       "11                                  Area I         Area I   \n",
       "12                       Relative Humidity         Area B   \n",
       "13                             Temperature         Area B   \n",
       "14                                  Area B         Area B   \n",
       "15                       Relative Humidity         Area H   \n",
       "16                             Temperature         Area H   \n",
       "17                                  Area H         Area H   \n",
       "18                       Relative Humidity         Area D   \n",
       "19                             Temperature         Area D   \n",
       "20                                  Area D         Area D   \n",
       "21                       Relative Humidity         Area J   \n",
       "22                             Temperature         Area J   \n",
       "23                                  Area J         Area J   \n",
       "24                       Relative Humidity         Area E   \n",
       "25                             Temperature         Area E   \n",
       "26                                  Area E         Area E   \n",
       "27                       Relative Humidity         Area K   \n",
       "28                             Temperature         Area K   \n",
       "29                                  Area K         Area K   \n",
       "30                                  Area F         Area F   \n",
       "31                       Relative Humidity         Area Z   \n",
       "32                             Temperature         Area Z   \n",
       "33                                  Area Z         Area Z   \n",
       "__side_effect_asset_1__      My HVAC Units  My HVAC Units   \n",
       "__side_effect_asset_2__        Facility #1    Facility #1   \n",
       "\n",
       "                                                   Asset Object  \\\n",
       "0                        My HVAC Units >> Facility #1 >> Area G   \n",
       "1                        My HVAC Units >> Facility #1 >> Area G   \n",
       "2                        My HVAC Units >> Facility #1 >> Area G   \n",
       "3                        My HVAC Units >> Facility #1 >> Area C   \n",
       "4                        My HVAC Units >> Facility #1 >> Area C   \n",
       "5                        My HVAC Units >> Facility #1 >> Area C   \n",
       "6                        My HVAC Units >> Facility #1 >> Area A   \n",
       "7                        My HVAC Units >> Facility #1 >> Area A   \n",
       "8                        My HVAC Units >> Facility #1 >> Area A   \n",
       "9                        My HVAC Units >> Facility #1 >> Area I   \n",
       "10                       My HVAC Units >> Facility #1 >> Area I   \n",
       "11                       My HVAC Units >> Facility #1 >> Area I   \n",
       "12                       My HVAC Units >> Facility #1 >> Area B   \n",
       "13                       My HVAC Units >> Facility #1 >> Area B   \n",
       "14                       My HVAC Units >> Facility #1 >> Area B   \n",
       "15                       My HVAC Units >> Facility #1 >> Area H   \n",
       "16                       My HVAC Units >> Facility #1 >> Area H   \n",
       "17                       My HVAC Units >> Facility #1 >> Area H   \n",
       "18                       My HVAC Units >> Facility #1 >> Area D   \n",
       "19                       My HVAC Units >> Facility #1 >> Area D   \n",
       "20                       My HVAC Units >> Facility #1 >> Area D   \n",
       "21                       My HVAC Units >> Facility #1 >> Area J   \n",
       "22                       My HVAC Units >> Facility #1 >> Area J   \n",
       "23                       My HVAC Units >> Facility #1 >> Area J   \n",
       "24                       My HVAC Units >> Facility #1 >> Area E   \n",
       "25                       My HVAC Units >> Facility #1 >> Area E   \n",
       "26                       My HVAC Units >> Facility #1 >> Area E   \n",
       "27                       My HVAC Units >> Facility #1 >> Area K   \n",
       "28                       My HVAC Units >> Facility #1 >> Area K   \n",
       "29                       My HVAC Units >> Facility #1 >> Area K   \n",
       "30                       My HVAC Units >> Facility #1 >> Area F   \n",
       "31                       My HVAC Units >> Facility #1 >> Area Z   \n",
       "32                       My HVAC Units >> Facility #1 >> Area Z   \n",
       "33                       My HVAC Units >> Facility #1 >> Area Z   \n",
       "__side_effect_asset_1__                                     NaN   \n",
       "__side_effect_asset_2__                                     NaN   \n",
       "\n",
       "                                                 Path  ...  \\\n",
       "0                        My HVAC Units >> Facility #1  ...   \n",
       "1                        My HVAC Units >> Facility #1  ...   \n",
       "2                        My HVAC Units >> Facility #1  ...   \n",
       "3                        My HVAC Units >> Facility #1  ...   \n",
       "4                        My HVAC Units >> Facility #1  ...   \n",
       "5                        My HVAC Units >> Facility #1  ...   \n",
       "6                        My HVAC Units >> Facility #1  ...   \n",
       "7                        My HVAC Units >> Facility #1  ...   \n",
       "8                        My HVAC Units >> Facility #1  ...   \n",
       "9                        My HVAC Units >> Facility #1  ...   \n",
       "10                       My HVAC Units >> Facility #1  ...   \n",
       "11                       My HVAC Units >> Facility #1  ...   \n",
       "12                       My HVAC Units >> Facility #1  ...   \n",
       "13                       My HVAC Units >> Facility #1  ...   \n",
       "14                       My HVAC Units >> Facility #1  ...   \n",
       "15                       My HVAC Units >> Facility #1  ...   \n",
       "16                       My HVAC Units >> Facility #1  ...   \n",
       "17                       My HVAC Units >> Facility #1  ...   \n",
       "18                       My HVAC Units >> Facility #1  ...   \n",
       "19                       My HVAC Units >> Facility #1  ...   \n",
       "20                       My HVAC Units >> Facility #1  ...   \n",
       "21                       My HVAC Units >> Facility #1  ...   \n",
       "22                       My HVAC Units >> Facility #1  ...   \n",
       "23                       My HVAC Units >> Facility #1  ...   \n",
       "24                       My HVAC Units >> Facility #1  ...   \n",
       "25                       My HVAC Units >> Facility #1  ...   \n",
       "26                       My HVAC Units >> Facility #1  ...   \n",
       "27                       My HVAC Units >> Facility #1  ...   \n",
       "28                       My HVAC Units >> Facility #1  ...   \n",
       "29                       My HVAC Units >> Facility #1  ...   \n",
       "30                       My HVAC Units >> Facility #1  ...   \n",
       "31                       My HVAC Units >> Facility #1  ...   \n",
       "32                       My HVAC Units >> Facility #1  ...   \n",
       "33                       My HVAC Units >> Facility #1  ...   \n",
       "__side_effect_asset_1__                                ...   \n",
       "__side_effect_asset_2__                 My HVAC Units  ...   \n",
       "\n",
       "                                                    Formula Parameters  \\\n",
       "0                        [signal=0EF58FC2-81CE-7580-85BE-080C7622D9BE]   \n",
       "1                        [signal=0EF58FC2-808C-7140-8131-94452FC3710A]   \n",
       "2                                                                  NaN   \n",
       "3                        [signal=0EF58FC2-8245-FF90-99E6-9CE8E5FF779E]   \n",
       "4                        [signal=0EF58FC2-8A5C-6490-85CE-FD5BD9A25B54]   \n",
       "5                                                                  NaN   \n",
       "6                        [signal=0EF58FC2-83AA-66B0-8B9F-E021808A2620]   \n",
       "7                        [signal=0EF58FC2-8206-77F0-8519-ECD251B886A6]   \n",
       "8                                                                  NaN   \n",
       "9                        [signal=0EF58FC2-8642-77B0-BBFB-7F069389F904]   \n",
       "10                       [signal=0EF58FC2-8228-EAD0-9A21-D2ADB5F29DED]   \n",
       "11                                                                 NaN   \n",
       "12                       [signal=0EF58FC2-8348-EC30-874B-C093508CCDF8]   \n",
       "13                       [signal=0EF58FC2-82AC-E830-9324-CD3E38A9EB6E]   \n",
       "14                                                                 NaN   \n",
       "15                       [signal=0EF58FC2-8BC5-F9D0-8D43-F1DCC6B61262]   \n",
       "16                       [signal=0EF58FC2-86A1-FB20-BD09-83610D9B488B]   \n",
       "17                                                                 NaN   \n",
       "18                       [signal=0EF58FC2-8294-7190-BE8D-EBBDC689A86E]   \n",
       "19                       [signal=0EF58FC2-8B7C-75F0-99A3-B0D0420939F3]   \n",
       "20                                                                 NaN   \n",
       "21                       [signal=0EF58FC2-88F0-E840-8CE2-12878902F95A]   \n",
       "22                       [signal=0EF58FC2-82C0-60B0-BF29-60C8ACFACF0D]   \n",
       "23                                                                 NaN   \n",
       "24                       [signal=0EF58FC2-89B3-FD40-B547-C17F8D1C2503]   \n",
       "25                       [signal=0EF58FC2-8D14-7160-9EE1-1EC3CA6EFB2C]   \n",
       "26                                                                 NaN   \n",
       "27                       [signal=0EF58FC2-858B-6600-BB76-0CC15A89DCEC]   \n",
       "28                       [signal=0EF58FC2-86C8-EC20-93AB-5C597A68F0A2]   \n",
       "29                                                                 NaN   \n",
       "30                                                                 NaN   \n",
       "31                       [signal=0EF58FC2-8B15-FD50-8CDE-6AB03432D37A]   \n",
       "32                       [signal=0EF58FC2-8681-FF50-A759-7103EAEA2911]   \n",
       "33                                                                 NaN   \n",
       "__side_effect_asset_1__                                            NaN   \n",
       "__side_effect_asset_2__                                            NaN   \n",
       "\n",
       "                        Cache Enabled                         Referenced ID  \\\n",
       "0                               False  0EF58FC2-81CE-7580-85BE-080C7622D9BE   \n",
       "1                               False  0EF58FC2-808C-7140-8131-94452FC3710A   \n",
       "2                                 NaN                                   NaN   \n",
       "3                               False  0EF58FC2-8245-FF90-99E6-9CE8E5FF779E   \n",
       "4                               False  0EF58FC2-8A5C-6490-85CE-FD5BD9A25B54   \n",
       "5                                 NaN                                   NaN   \n",
       "6                               False  0EF58FC2-83AA-66B0-8B9F-E021808A2620   \n",
       "7                               False  0EF58FC2-8206-77F0-8519-ECD251B886A6   \n",
       "8                                 NaN                                   NaN   \n",
       "9                               False  0EF58FC2-8642-77B0-BBFB-7F069389F904   \n",
       "10                              False  0EF58FC2-8228-EAD0-9A21-D2ADB5F29DED   \n",
       "11                                NaN                                   NaN   \n",
       "12                              False  0EF58FC2-8348-EC30-874B-C093508CCDF8   \n",
       "13                              False  0EF58FC2-82AC-E830-9324-CD3E38A9EB6E   \n",
       "14                                NaN                                   NaN   \n",
       "15                              False  0EF58FC2-8BC5-F9D0-8D43-F1DCC6B61262   \n",
       "16                              False  0EF58FC2-86A1-FB20-BD09-83610D9B488B   \n",
       "17                                NaN                                   NaN   \n",
       "18                              False  0EF58FC2-8294-7190-BE8D-EBBDC689A86E   \n",
       "19                              False  0EF58FC2-8B7C-75F0-99A3-B0D0420939F3   \n",
       "20                                NaN                                   NaN   \n",
       "21                              False  0EF58FC2-88F0-E840-8CE2-12878902F95A   \n",
       "22                              False  0EF58FC2-82C0-60B0-BF29-60C8ACFACF0D   \n",
       "23                                NaN                                   NaN   \n",
       "24                              False  0EF58FC2-89B3-FD40-B547-C17F8D1C2503   \n",
       "25                              False  0EF58FC2-8D14-7160-9EE1-1EC3CA6EFB2C   \n",
       "26                                NaN                                   NaN   \n",
       "27                              False  0EF58FC2-858B-6600-BB76-0CC15A89DCEC   \n",
       "28                              False  0EF58FC2-86C8-EC20-93AB-5C597A68F0A2   \n",
       "29                                NaN                                   NaN   \n",
       "30                                NaN                                   NaN   \n",
       "31                              False  0EF58FC2-8B15-FD50-8CDE-6AB03432D37A   \n",
       "32                              False  0EF58FC2-8681-FF50-A759-7103EAEA2911   \n",
       "33                                NaN                                   NaN   \n",
       "__side_effect_asset_1__           NaN                                   NaN   \n",
       "__side_effect_asset_2__           NaN                                   NaN   \n",
       "\n",
       "                                                    Scoped To  \\\n",
       "0                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "1                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "2                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "3                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "4                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "5                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "6                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "7                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "8                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "9                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "10                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "11                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "12                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "13                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "14                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "15                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "16                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "17                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "18                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "19                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "20                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "21                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "22                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "23                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "24                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "25                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "26                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "27                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "28                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "29                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "30                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "31                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "32                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "33                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "__side_effect_asset_1__                                   NaN   \n",
       "__side_effect_asset_2__                                   NaN   \n",
       "\n",
       "                        Datasource Class  Datasource ID  \\\n",
       "0                          Seeq Data Lab  Seeq Data Lab   \n",
       "1                          Seeq Data Lab  Seeq Data Lab   \n",
       "2                          Seeq Data Lab  Seeq Data Lab   \n",
       "3                          Seeq Data Lab  Seeq Data Lab   \n",
       "4                          Seeq Data Lab  Seeq Data Lab   \n",
       "5                          Seeq Data Lab  Seeq Data Lab   \n",
       "6                          Seeq Data Lab  Seeq Data Lab   \n",
       "7                          Seeq Data Lab  Seeq Data Lab   \n",
       "8                          Seeq Data Lab  Seeq Data Lab   \n",
       "9                          Seeq Data Lab  Seeq Data Lab   \n",
       "10                         Seeq Data Lab  Seeq Data Lab   \n",
       "11                         Seeq Data Lab  Seeq Data Lab   \n",
       "12                         Seeq Data Lab  Seeq Data Lab   \n",
       "13                         Seeq Data Lab  Seeq Data Lab   \n",
       "14                         Seeq Data Lab  Seeq Data Lab   \n",
       "15                         Seeq Data Lab  Seeq Data Lab   \n",
       "16                         Seeq Data Lab  Seeq Data Lab   \n",
       "17                         Seeq Data Lab  Seeq Data Lab   \n",
       "18                         Seeq Data Lab  Seeq Data Lab   \n",
       "19                         Seeq Data Lab  Seeq Data Lab   \n",
       "20                         Seeq Data Lab  Seeq Data Lab   \n",
       "21                         Seeq Data Lab  Seeq Data Lab   \n",
       "22                         Seeq Data Lab  Seeq Data Lab   \n",
       "23                         Seeq Data Lab  Seeq Data Lab   \n",
       "24                         Seeq Data Lab  Seeq Data Lab   \n",
       "25                         Seeq Data Lab  Seeq Data Lab   \n",
       "26                         Seeq Data Lab  Seeq Data Lab   \n",
       "27                         Seeq Data Lab  Seeq Data Lab   \n",
       "28                         Seeq Data Lab  Seeq Data Lab   \n",
       "29                         Seeq Data Lab  Seeq Data Lab   \n",
       "30                         Seeq Data Lab  Seeq Data Lab   \n",
       "31                         Seeq Data Lab  Seeq Data Lab   \n",
       "32                         Seeq Data Lab  Seeq Data Lab   \n",
       "33                         Seeq Data Lab  Seeq Data Lab   \n",
       "__side_effect_asset_1__    Seeq Data Lab  Seeq Data Lab   \n",
       "__side_effect_asset_2__    Seeq Data Lab  Seeq Data Lab   \n",
       "\n",
       "                                                                                                                             Data ID  \\\n",
       "0                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area G >> Relative Humidity   \n",
       "1                              [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area G >> Temperature   \n",
       "2                                              [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units >> Facility #1 >> Area G   \n",
       "3                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area C >> Relative Humidity   \n",
       "4                              [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area C >> Temperature   \n",
       "5                                              [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units >> Facility #1 >> Area C   \n",
       "6                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area A >> Relative Humidity   \n",
       "7                              [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area A >> Temperature   \n",
       "8                                              [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units >> Facility #1 >> Area A   \n",
       "9                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area I >> Relative Humidity   \n",
       "10                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area I >> Temperature   \n",
       "11                                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units >> Facility #1 >> Area I   \n",
       "12                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area B >> Relative Humidity   \n",
       "13                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area B >> Temperature   \n",
       "14                                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units >> Facility #1 >> Area B   \n",
       "15                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area H >> Relative Humidity   \n",
       "16                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area H >> Temperature   \n",
       "17                                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units >> Facility #1 >> Area H   \n",
       "18                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area D >> Relative Humidity   \n",
       "19                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area D >> Temperature   \n",
       "20                                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units >> Facility #1 >> Area D   \n",
       "21                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area J >> Relative Humidity   \n",
       "22                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area J >> Temperature   \n",
       "23                                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units >> Facility #1 >> Area J   \n",
       "24                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area E >> Relative Humidity   \n",
       "25                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area E >> Temperature   \n",
       "26                                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units >> Facility #1 >> Area E   \n",
       "27                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area K >> Relative Humidity   \n",
       "28                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area K >> Temperature   \n",
       "29                                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units >> Facility #1 >> Area K   \n",
       "30                                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units >> Facility #1 >> Area F   \n",
       "31                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area Z >> Relative Humidity   \n",
       "32                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal} My HVAC Units >> Facility #1 >> Area Z >> Temperature   \n",
       "33                                             [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units >> Facility #1 >> Area Z   \n",
       "__side_effect_asset_1__                                                 [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units   \n",
       "__side_effect_asset_2__                                  [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset} My HVAC Units >> Facility #1   \n",
       "\n",
       "                                                           ID Push Result  \\\n",
       "0                        0EF5BE2D-3FAA-64D0-87B1-A06BC7F0605E     Success   \n",
       "1                        0EF5BE2D-4127-6290-8CF3-FC4399F681BD     Success   \n",
       "2                        0EF5BE2D-4888-ECF0-A176-90C60EE8D980     Success   \n",
       "3                        0EF5BE2D-41C0-FF80-A9A4-AD8E56F9013E     Success   \n",
       "4                        0EF5BE2D-4225-7110-A6AB-14BE086C78CB     Success   \n",
       "5                        0EF5BE2D-4888-ECF0-BBD6-64406C031887     Success   \n",
       "6                        0EF5BE2D-428B-F9B0-983F-C6C713479D59     Success   \n",
       "7                        0EF5BE2D-42F9-7780-B2E8-119A05678A25     Success   \n",
       "8                        0EF5BE2D-4888-ECF0-AC41-02F448948AEB     Success   \n",
       "9                        0EF5BE2D-4360-6020-8780-3FA2CA98C148     Success   \n",
       "10                       0EF5BE2D-43BC-EC80-8855-DBAFEA588E7D     Success   \n",
       "11                       0EF5BE2D-488B-6400-8536-954736A876AE     Success   \n",
       "12                       0EF5BE2D-440F-ECA0-B385-543A45DB0FB9     Success   \n",
       "13                       0EF5BE2D-446C-F900-92F6-D7E0DDDE0B60     Success   \n",
       "14                       0EF5BE2D-488B-6400-B92A-592FEA813E8E     Success   \n",
       "15                       0EF5BE2D-44D5-E8B0-B60F-04B9CA14B573     Success   \n",
       "16                       0EF5BE2D-4528-E8D0-92E2-F28BD0783A9E     Success   \n",
       "17                       0EF5BE2D-488D-FB10-9907-2236D3F257DE     Success   \n",
       "18                       0EF5BE2D-4576-EAD0-A11B-E722D2F0933D     Success   \n",
       "19                       0EF5BE2D-45CC-6200-BFF0-5C03BE8412D0     Success   \n",
       "20                       0EF5BE2D-488D-FB10-A524-DA099BE25F15     Success   \n",
       "21                       0EF5BE2D-4615-75E0-A3F7-C233D3F0214D     Success   \n",
       "22                       0EF5BE2D-4659-FBA0-A96D-506B7F9554E3     Success   \n",
       "23                       0EF5BE2D-4892-F930-82DC-E47DA5EB8DBF     Success   \n",
       "24                       0EF5BE2D-46B1-F9E0-819B-D315B2138194     Success   \n",
       "25                       0EF5BE2D-46FA-FDC0-B94B-E7CA0A78C666     Success   \n",
       "26                       0EF5BE2D-4892-F930-B4C3-6CDA708E33AA     Success   \n",
       "27                       0EF5BE2D-473C-EC70-825A-CCDD18E78BEE     Success   \n",
       "28                       0EF5BE2D-477E-FB20-AECD-1A53BF5EB2B1     Success   \n",
       "29                       0EF5BE2D-4892-F930-B29D-D415381D3BED     Success   \n",
       "30                       0EF5BE2D-4895-6040-8E92-04BB1C4EC57B     Success   \n",
       "31                       0EF5BE2D-47C7-FF00-B37A-886A62E90EEB     Success   \n",
       "32                       0EF5BE2D-481D-6630-9F70-78DE2E5D91FD     Success   \n",
       "33                       0EF5BE2D-4895-6040-9E72-61B4139BEB68     Success   \n",
       "__side_effect_asset_1__  0EF5BE2D-487C-F9A0-8334-4F3E5D06EFCE     Success   \n",
       "__side_effect_asset_2__  0EF5BE2D-4886-75E0-86D7-557BE6494D53     Success   \n",
       "\n",
       "                        Value Unit Of Measure  \n",
       "0                                         NaN  \n",
       "1                                         NaN  \n",
       "2                                         NaN  \n",
       "3                                         NaN  \n",
       "4                                         NaN  \n",
       "5                                         NaN  \n",
       "6                                         NaN  \n",
       "7                                         NaN  \n",
       "8                                         NaN  \n",
       "9                                         NaN  \n",
       "10                                        NaN  \n",
       "11                                        NaN  \n",
       "12                                        NaN  \n",
       "13                                        NaN  \n",
       "14                                        NaN  \n",
       "15                                        NaN  \n",
       "16                                        NaN  \n",
       "17                                        NaN  \n",
       "18                                        NaN  \n",
       "19                                        NaN  \n",
       "20                                        NaN  \n",
       "21                                        NaN  \n",
       "22                                        NaN  \n",
       "23                                        NaN  \n",
       "24                                        NaN  \n",
       "25                                        NaN  \n",
       "26                                        NaN  \n",
       "27                                        NaN  \n",
       "28                                        NaN  \n",
       "29                                        NaN  \n",
       "30                                        NaN  \n",
       "31                                        NaN  \n",
       "32                                        NaN  \n",
       "33                                        NaN  \n",
       "__side_effect_asset_1__                   NaN  \n",
       "__side_effect_asset_2__                   NaN  \n",
       "\n",
       "[36 rows x 23 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "spy.push(metadata=build_df, workbook='SPy Documentation Examples >> spy.assets')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The asset tree is now available for viewing in Seeq. It is scoped to a workbook that you own called _SPy Documentation Examples >> spy.assets_, so you won't see it in any other workbook. If/when you want to publish the tree globally, add the `workbook=None` parameter to your `spy.push()` function call."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Calculated Signals, Conditions and Scalars\n",
    "\n",
    "Now let's do something a little more advanced. We'll define a new class that has calculations alongside references to raw signals. This class will _derive from_ our existing `HVAC` class so that it _inherits_ the references we already defined."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "class HVAC_With_Calcs(HVAC):\n",
    "    \n",
    "    @Asset.Attribute()\n",
    "    def Temperature_Rate_Of_Change(self, metadata):\n",
    "        return {\n",
    "            'Type': 'Signal',\n",
    "            \n",
    "            # This formula will give us a nice derivative in F/h\n",
    "            'Formula': '$temp.lowPassFilter(150min, 3min, 333).derivative() * 3600 s/h',\n",
    "            \n",
    "            'Formula Parameters': {\n",
    "                # We can reference the base class' Temperature attribute here as a dependency\n",
    "                '$temp': self.Temperature(),\n",
    "            }\n",
    "        }\n",
    "    \n",
    "    @Asset.Attribute()\n",
    "    def Too_Hot(self, metadata):\n",
    "        return {\n",
    "            'Type': 'Condition',\n",
    "            'Formula': '$temp.valueSearch(isGreaterThan($threshold))',\n",
    "            'Formula Parameters': {\n",
    "                '$temp': self.Temperature(),\n",
    "                \n",
    "                # We can also reference other attributes in this derived class\n",
    "                '$threshold': self.Hot_Threshold()\n",
    "            }\n",
    "        }\n",
    "    \n",
    "    @Asset.Attribute()\n",
    "    def Hot_Threshold(self, metadata):\n",
    "        return {\n",
    "            'Type': 'Scalar',\n",
    "            'Formula': '80F'\n",
    "        }"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We'll make some adjustments to our metadata DataFrame to use the new template and then push into Seeq:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"background-color: #EEFFEE;color:black; text-align: left;\">Pushed successfully to datasource <strong>Seeq Data Lab [Datasource ID: Seeq Data Lab]</strong> and scoped to workbook ID <strong>0EF5BE2D-2923-FB30-A567-172B344E74EE</strong><br>Click the following link to see what you pushed in Seeq:<br><a href=\"http://localhost:34216/0EF5BE2D-2738-FFA0-81E0-D2B058859C4D/workbook/0EF5BE2D-2923-FB30-A567-172B344E74EE/worksheet/0EF5BE2D-2A01-FDE0-ABC4-799849E1C026\" target=\"_blank\">http://localhost:34216/0EF5BE2D-2738-FFA0-81E0-D2B058859C4D/workbook/0EF5BE2D-2923-FB30-A567-172B344E74EE/worksheet/0EF5BE2D-2A01-FDE0-ABC4-799849E1C026</a></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Type</th>\n",
       "      <th>Formula</th>\n",
       "      <th>Name</th>\n",
       "      <th>Asset</th>\n",
       "      <th>Asset Object</th>\n",
       "      <th>Path</th>\n",
       "      <th>Template</th>\n",
       "      <th>Build Result</th>\n",
       "      <th>ID</th>\n",
       "      <th>Description</th>\n",
       "      <th>...</th>\n",
       "      <th>Referenced Name</th>\n",
       "      <th>Reference</th>\n",
       "      <th>Formula Parameters</th>\n",
       "      <th>Scoped To</th>\n",
       "      <th>Datasource Class</th>\n",
       "      <th>Datasource ID</th>\n",
       "      <th>Data ID</th>\n",
       "      <th>Push Result</th>\n",
       "      <th>Cache Enabled</th>\n",
       "      <th>Referenced ID</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>CalculatedScalar</td>\n",
       "      <td>80F</td>\n",
       "      <td>Hot Threshold</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>0EF5BE2D-5581-71F0-9A3C-E7EA8CD4761C</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[]</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Scalar...</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>$signal.setUnits('%')</td>\n",
       "      <td>Relative Humidity</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>0EF5BE2D-3FAA-64D0-87B1-A06BC7F0605E</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>Area G_Relative Humidity</td>\n",
       "      <td>True</td>\n",
       "      <td>[signal=0EF58FC2-81CE-7580-85BE-080C7622D9BE]</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...</td>\n",
       "      <td>Success</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-81CE-7580-85BE-080C7622D9BE</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>$signal.setUnits('°F')</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>0EF5BE2D-4127-6290-8CF3-FC4399F681BD</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>Area G_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>[signal=0EF58FC2-808C-7140-8131-94452FC3710A]</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...</td>\n",
       "      <td>Success</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-808C-7140-8131-94452FC3710A</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>$temp.lowPassFilter(150min, 3min, 333).derivat...</td>\n",
       "      <td>Temperature Rate Of Change</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>0EF5BE2D-5819-62F0-A9D8-D57E66B4FDAE</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[temp=0EF5BE2D-4127-6290-8CF3-FC4399F681BD]</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>CalculatedCondition</td>\n",
       "      <td>$temp.valueSearch(isGreaterThan($threshold))</td>\n",
       "      <td>Too Hot</td>\n",
       "      <td>Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>0EF5BE2D-5C0E-75E0-8C20-DA80EA95535C</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[temp=0EF5BE2D-4127-6290-8CF3-FC4399F681BD, th...</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>CalculatedCondition</td>\n",
       "      <td>$temp.valueSearch(isGreaterThan($threshold))</td>\n",
       "      <td>Too Hot</td>\n",
       "      <td>Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>0EF5BE2D-5E9F-71B0-B25A-A0F8BF3EE2E5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[temp=0EF5BE2D-481D-6630-9F70-78DE2E5D91FD, th...</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>66</th>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area Z</td>\n",
       "      <td>Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area Z</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>HVAC With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>0EF5BE2D-4895-6040-9E72-61B4139BEB68</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>__side_effect_asset_1__</th>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>My HVAC Units</td>\n",
       "      <td>My HVAC Units</td>\n",
       "      <td>NaN</td>\n",
       "      <td></td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-487C-F9A0-8334-4F3E5D06EFCE</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>__side_effect_asset_2__</th>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Facility #1</td>\n",
       "      <td>Facility #1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>My HVAC Units</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-4886-75E0-86D7-557BE6494D53</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>__side_effect_asset_3__</th>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area F</td>\n",
       "      <td>Area F</td>\n",
       "      <td>NaN</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-4895-6040-8E92-04BB1C4EC57B</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>70 rows × 23 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                        Type  \\\n",
       "0                           CalculatedScalar   \n",
       "1                           CalculatedSignal   \n",
       "2                           CalculatedSignal   \n",
       "3                           CalculatedSignal   \n",
       "4                        CalculatedCondition   \n",
       "...                                      ...   \n",
       "65                       CalculatedCondition   \n",
       "66                                     Asset   \n",
       "__side_effect_asset_1__                Asset   \n",
       "__side_effect_asset_2__                Asset   \n",
       "__side_effect_asset_3__                Asset   \n",
       "\n",
       "                                                                   Formula  \\\n",
       "0                                                                      80F   \n",
       "1                                                    $signal.setUnits('%')   \n",
       "2                                                   $signal.setUnits('°F')   \n",
       "3                        $temp.lowPassFilter(150min, 3min, 333).derivat...   \n",
       "4                             $temp.valueSearch(isGreaterThan($threshold))   \n",
       "...                                                                    ...   \n",
       "65                            $temp.valueSearch(isGreaterThan($threshold))   \n",
       "66                                                                     NaN   \n",
       "__side_effect_asset_1__                                                NaN   \n",
       "__side_effect_asset_2__                                                NaN   \n",
       "__side_effect_asset_3__                                                NaN   \n",
       "\n",
       "                                               Name          Asset  \\\n",
       "0                                     Hot Threshold         Area G   \n",
       "1                                 Relative Humidity         Area G   \n",
       "2                                       Temperature         Area G   \n",
       "3                        Temperature Rate Of Change         Area G   \n",
       "4                                           Too Hot         Area G   \n",
       "...                                             ...            ...   \n",
       "65                                          Too Hot         Area Z   \n",
       "66                                           Area Z         Area Z   \n",
       "__side_effect_asset_1__               My HVAC Units  My HVAC Units   \n",
       "__side_effect_asset_2__                 Facility #1    Facility #1   \n",
       "__side_effect_asset_3__                      Area F         Area F   \n",
       "\n",
       "                                                   Asset Object  \\\n",
       "0                        My HVAC Units >> Facility #1 >> Area G   \n",
       "1                        My HVAC Units >> Facility #1 >> Area G   \n",
       "2                        My HVAC Units >> Facility #1 >> Area G   \n",
       "3                        My HVAC Units >> Facility #1 >> Area G   \n",
       "4                        My HVAC Units >> Facility #1 >> Area G   \n",
       "...                                                         ...   \n",
       "65                       My HVAC Units >> Facility #1 >> Area Z   \n",
       "66                       My HVAC Units >> Facility #1 >> Area Z   \n",
       "__side_effect_asset_1__                                     NaN   \n",
       "__side_effect_asset_2__                                     NaN   \n",
       "__side_effect_asset_3__                                     NaN   \n",
       "\n",
       "                                                 Path         Template  \\\n",
       "0                        My HVAC Units >> Facility #1  HVAC With Calcs   \n",
       "1                        My HVAC Units >> Facility #1  HVAC With Calcs   \n",
       "2                        My HVAC Units >> Facility #1  HVAC With Calcs   \n",
       "3                        My HVAC Units >> Facility #1  HVAC With Calcs   \n",
       "4                        My HVAC Units >> Facility #1  HVAC With Calcs   \n",
       "...                                               ...              ...   \n",
       "65                       My HVAC Units >> Facility #1  HVAC With Calcs   \n",
       "66                       My HVAC Units >> Facility #1  HVAC With Calcs   \n",
       "__side_effect_asset_1__                                            NaN   \n",
       "__side_effect_asset_2__                 My HVAC Units              NaN   \n",
       "__side_effect_asset_3__  My HVAC Units >> Facility #1              NaN   \n",
       "\n",
       "                        Build Result                                    ID  \\\n",
       "0                            Success  0EF5BE2D-5581-71F0-9A3C-E7EA8CD4761C   \n",
       "1                            Success  0EF5BE2D-3FAA-64D0-87B1-A06BC7F0605E   \n",
       "2                            Success  0EF5BE2D-4127-6290-8CF3-FC4399F681BD   \n",
       "3                            Success  0EF5BE2D-5819-62F0-A9D8-D57E66B4FDAE   \n",
       "4                            Success  0EF5BE2D-5C0E-75E0-8C20-DA80EA95535C   \n",
       "...                              ...                                   ...   \n",
       "65                           Success  0EF5BE2D-5E9F-71B0-B25A-A0F8BF3EE2E5   \n",
       "66                           Success  0EF5BE2D-4895-6040-9E72-61B4139BEB68   \n",
       "__side_effect_asset_1__          NaN  0EF5BE2D-487C-F9A0-8334-4F3E5D06EFCE   \n",
       "__side_effect_asset_2__          NaN  0EF5BE2D-4886-75E0-86D7-557BE6494D53   \n",
       "__side_effect_asset_3__          NaN  0EF5BE2D-4895-6040-8E92-04BB1C4EC57B   \n",
       "\n",
       "                         Description  ...           Referenced Name Reference  \\\n",
       "0                                NaN  ...                       NaN       NaN   \n",
       "1                                NaN  ...  Area G_Relative Humidity      True   \n",
       "2                                NaN  ...        Area G_Temperature      True   \n",
       "3                                NaN  ...                       NaN       NaN   \n",
       "4                                NaN  ...                       NaN       NaN   \n",
       "...                              ...  ...                       ...       ...   \n",
       "65                               NaN  ...                       NaN       NaN   \n",
       "66                               NaN  ...                       NaN       NaN   \n",
       "__side_effect_asset_1__          NaN  ...                       NaN       NaN   \n",
       "__side_effect_asset_2__          NaN  ...                       NaN       NaN   \n",
       "__side_effect_asset_3__          NaN  ...                       NaN       NaN   \n",
       "\n",
       "                                                        Formula Parameters  \\\n",
       "0                                                                       []   \n",
       "1                            [signal=0EF58FC2-81CE-7580-85BE-080C7622D9BE]   \n",
       "2                            [signal=0EF58FC2-808C-7140-8131-94452FC3710A]   \n",
       "3                              [temp=0EF5BE2D-4127-6290-8CF3-FC4399F681BD]   \n",
       "4                        [temp=0EF5BE2D-4127-6290-8CF3-FC4399F681BD, th...   \n",
       "...                                                                    ...   \n",
       "65                       [temp=0EF5BE2D-481D-6630-9F70-78DE2E5D91FD, th...   \n",
       "66                                                                     NaN   \n",
       "__side_effect_asset_1__                                                NaN   \n",
       "__side_effect_asset_2__                                                NaN   \n",
       "__side_effect_asset_3__                                                NaN   \n",
       "\n",
       "                                                    Scoped To  \\\n",
       "0                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "1                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "2                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "3                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "4                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "...                                                       ...   \n",
       "65                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "66                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "__side_effect_asset_1__                                   NaN   \n",
       "__side_effect_asset_2__                                   NaN   \n",
       "__side_effect_asset_3__                                   NaN   \n",
       "\n",
       "                        Datasource Class  Datasource ID  \\\n",
       "0                          Seeq Data Lab  Seeq Data Lab   \n",
       "1                          Seeq Data Lab  Seeq Data Lab   \n",
       "2                          Seeq Data Lab  Seeq Data Lab   \n",
       "3                          Seeq Data Lab  Seeq Data Lab   \n",
       "4                          Seeq Data Lab  Seeq Data Lab   \n",
       "...                                  ...            ...   \n",
       "65                         Seeq Data Lab  Seeq Data Lab   \n",
       "66                         Seeq Data Lab  Seeq Data Lab   \n",
       "__side_effect_asset_1__    Seeq Data Lab  Seeq Data Lab   \n",
       "__side_effect_asset_2__    Seeq Data Lab  Seeq Data Lab   \n",
       "__side_effect_asset_3__    Seeq Data Lab  Seeq Data Lab   \n",
       "\n",
       "                                                                   Data ID  \\\n",
       "0                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Scalar...   \n",
       "1                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...   \n",
       "2                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...   \n",
       "3                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...   \n",
       "4                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...   \n",
       "...                                                                    ...   \n",
       "65                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...   \n",
       "66                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...   \n",
       "__side_effect_asset_1__  [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...   \n",
       "__side_effect_asset_2__  [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...   \n",
       "__side_effect_asset_3__  [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...   \n",
       "\n",
       "                        Push Result Cache Enabled  \\\n",
       "0                           Success           NaN   \n",
       "1                           Success         False   \n",
       "2                           Success         False   \n",
       "3                           Success           NaN   \n",
       "4                           Success           NaN   \n",
       "...                             ...           ...   \n",
       "65                          Success           NaN   \n",
       "66                          Success           NaN   \n",
       "__side_effect_asset_1__     Success           NaN   \n",
       "__side_effect_asset_2__     Success           NaN   \n",
       "__side_effect_asset_3__     Success           NaN   \n",
       "\n",
       "                                                Referenced ID  \n",
       "0                                                         NaN  \n",
       "1                        0EF58FC2-81CE-7580-85BE-080C7622D9BE  \n",
       "2                        0EF58FC2-808C-7140-8131-94452FC3710A  \n",
       "3                                                         NaN  \n",
       "4                                                         NaN  \n",
       "...                                                       ...  \n",
       "65                                                        NaN  \n",
       "66                                                        NaN  \n",
       "__side_effect_asset_1__                                   NaN  \n",
       "__side_effect_asset_2__                                   NaN  \n",
       "__side_effect_asset_3__                                   NaN  \n",
       "\n",
       "[70 rows x 23 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Make a copy of our original metadata but change the Build Template\n",
    "hvac_with_calcs_metadata_df = hvac_metadata_df.copy()\n",
    "\n",
    "build_with_calcs_df = spy.assets.build(HVAC_With_Calcs, hvac_with_calcs_metadata_df)\n",
    "\n",
    "pd.set_option('display.max_colwidth', 50)\n",
    "\n",
    "spy.push(metadata=build_with_calcs_df, workbook='SPy Documentation Examples >> spy.assets')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now when you look at the asset tree in Seeq, you'll see `Temperature Rate Of Change`, `Too Hot` and `Hot Threshold`. Each time we push, we are overwriting the definition we pushed previously."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Components\n",
    "\n",
    "You can create an entire asset hierarchy by defining Asset classes that are _composed_ of other Asset classes. To illustrate, let's start by preparing a DataFrame with our ingredients. This example will be a little contrived given the example data that is available in Seeq.\n",
    "\n",
    "We will define a metadata DataFrame where there are two Refrigerators and each will have two Compressors. In the cell below, you will see that we define the `Build Asset` column with the Refigerator name but also define a `Compressor` column with the Compressor name. We have assigned Area A-D signals to specific Refrigerators and Compressors."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"background-color: #EEFFEE;color:black; text-align: left;\">Query successful</div><table class=\"tex2jax_ignore\" style=\"color:black;\"><tr><td style=\"background-color: #EEFFEE;\"></td><td style=\"background-color: #EEFFEE; text-align: left;\">Name</td><td style=\"background-color: #EEFFEE; text-align: left;\">Datasource Class</td><td style=\"background-color: #EEFFEE; text-align: right;\">Time</td><td style=\"background-color: #EEFFEE; text-align: right;\">Count</td><td style=\"background-color: #EEFFEE; text-align: right;\">Pages</td><td style=\"background-color: #EEFFEE; text-align: left;\">Result</td></tr><tr style=\"background-color: #EEFFEE;\"><td style=\"vertical-align: top;\">0</td><td style=\"text-align: left; vertical-align: top;\">/Area [A-D]_(?:Temperature|Compressor Power)/</td><td style=\"text-align: left; vertical-align: top;\">Time Series CSV Files</td><td style=\"vertical-align: top;\">00:00:00.03</td><td style=\"text-align: right; vertical-align: top;\">8</td><td style=\"text-align: right; vertical-align: top;\">1</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ID</th>\n",
       "      <th>Name</th>\n",
       "      <th>Build Path</th>\n",
       "      <th>Build Asset</th>\n",
       "      <th>Compressor</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0EF58FC2-8206-77F0-8519-ECD251B886A6</td>\n",
       "      <td>Area A_Temperature</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator 1</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0EF58FC2-82AC-E830-9324-CD3E38A9EB6E</td>\n",
       "      <td>Area B_Temperature</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0EF58FC2-85A1-7590-AA5F-C66CA82059F8</td>\n",
       "      <td>Area B_Compressor Power</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator 1</td>\n",
       "      <td>Compressor 2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0EF58FC2-8673-64F0-8C6A-4C5AE6D5CFC8</td>\n",
       "      <td>Area D_Compressor Power</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator 2</td>\n",
       "      <td>Compressor 4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0EF58FC2-88FA-6480-92A3-70610FAED8C0</td>\n",
       "      <td>Area C_Compressor Power</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator 2</td>\n",
       "      <td>Compressor 3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0EF58FC2-8A5C-6490-85CE-FD5BD9A25B54</td>\n",
       "      <td>Area C_Temperature</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator 2</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0EF58FC2-8B7C-75F0-99A3-B0D0420939F3</td>\n",
       "      <td>Area D_Temperature</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0EF58FC2-8C7F-6290-BEE8-1BE39219249E</td>\n",
       "      <td>Area A_Compressor Power</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator 1</td>\n",
       "      <td>Compressor 1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                     ID                     Name  \\\n",
       "0  0EF58FC2-8206-77F0-8519-ECD251B886A6       Area A_Temperature   \n",
       "1  0EF58FC2-82AC-E830-9324-CD3E38A9EB6E       Area B_Temperature   \n",
       "2  0EF58FC2-85A1-7590-AA5F-C66CA82059F8  Area B_Compressor Power   \n",
       "3  0EF58FC2-8673-64F0-8C6A-4C5AE6D5CFC8  Area D_Compressor Power   \n",
       "4  0EF58FC2-88FA-6480-92A3-70610FAED8C0  Area C_Compressor Power   \n",
       "5  0EF58FC2-8A5C-6490-85CE-FD5BD9A25B54       Area C_Temperature   \n",
       "6  0EF58FC2-8B7C-75F0-99A3-B0D0420939F3       Area D_Temperature   \n",
       "7  0EF58FC2-8C7F-6290-BEE8-1BE39219249E  Area A_Compressor Power   \n",
       "\n",
       "           Build Path     Build Asset    Compressor  \n",
       "0  Refrigerator Units  Refrigerator 1           NaN  \n",
       "1  Refrigerator Units             NaN           NaN  \n",
       "2  Refrigerator Units  Refrigerator 1  Compressor 2  \n",
       "3  Refrigerator Units  Refrigerator 2  Compressor 4  \n",
       "4  Refrigerator Units  Refrigerator 2  Compressor 3  \n",
       "5  Refrigerator Units  Refrigerator 2           NaN  \n",
       "6  Refrigerator Units             NaN           NaN  \n",
       "7  Refrigerator Units  Refrigerator 1  Compressor 1  "
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "metadata_df = spy.search({\n",
    "    'Name': r'/Area [A-D]_(?:Temperature|Compressor Power)/',\n",
    "    'Datasource Class': 'Time Series CSV Files'\n",
    "})\n",
    "\n",
    "metadata_df.loc[metadata_df['Name'] == 'Area A_Temperature', 'Build Asset'] = 'Refrigerator 1'\n",
    "metadata_df.loc[metadata_df['Name'] == 'Area A_Compressor Power', 'Build Asset'] = 'Refrigerator 1'\n",
    "metadata_df.loc[metadata_df['Name'] == 'Area A_Compressor Power', 'Compressor'] = 'Compressor 1'\n",
    "metadata_df.loc[metadata_df['Name'] == 'Area B_Compressor Power', 'Build Asset'] = 'Refrigerator 1'\n",
    "metadata_df.loc[metadata_df['Name'] == 'Area B_Compressor Power', 'Compressor'] = 'Compressor 2'\n",
    "metadata_df.loc[metadata_df['Name'] == 'Area C_Temperature', 'Build Asset'] = 'Refrigerator 2'\n",
    "metadata_df.loc[metadata_df['Name'] == 'Area C_Compressor Power', 'Build Asset'] = 'Refrigerator 2'\n",
    "metadata_df.loc[metadata_df['Name'] == 'Area C_Compressor Power', 'Compressor'] = 'Compressor 3'\n",
    "metadata_df.loc[metadata_df['Name'] == 'Area D_Compressor Power', 'Build Asset'] = 'Refrigerator 2'\n",
    "metadata_df.loc[metadata_df['Name'] == 'Area D_Compressor Power', 'Compressor'] = 'Compressor 4'\n",
    "\n",
    "metadata_df['Build Path'] = 'Refrigerator Units'\n",
    "\n",
    "metadata_df[['ID', 'Name', 'Build Path', 'Build Asset', 'Compressor']]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can define our Asset classes. Will be using the `Asset.Component()` decorator and the `self.build_components()` function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"background-color: #EEFFEE;color:black; text-align: left;\">Pushed successfully to datasource <strong>Seeq Data Lab [Datasource ID: Seeq Data Lab]</strong> and scoped to workbook ID <strong>0EF5BE2D-2923-FB30-A567-172B344E74EE</strong><br>Click the following link to see what you pushed in Seeq:<br><a href=\"http://localhost:34216/0EF5BE2D-2738-FFA0-81E0-D2B058859C4D/workbook/0EF5BE2D-2923-FB30-A567-172B344E74EE/worksheet/0EF5BE2D-2A01-FDE0-ABC4-799849E1C026\" target=\"_blank\">http://localhost:34216/0EF5BE2D-2738-FFA0-81E0-D2B058859C4D/workbook/0EF5BE2D-2923-FB30-A567-172B344E74EE/worksheet/0EF5BE2D-2A01-FDE0-ABC4-799849E1C026</a></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Description</th>\n",
       "      <th>Type</th>\n",
       "      <th>Datasource Name</th>\n",
       "      <th>Archived</th>\n",
       "      <th>Compressor</th>\n",
       "      <th>Referenced Name</th>\n",
       "      <th>Reference</th>\n",
       "      <th>Name</th>\n",
       "      <th>Asset</th>\n",
       "      <th>Asset Object</th>\n",
       "      <th>...</th>\n",
       "      <th>Formula Parameters</th>\n",
       "      <th>Cache Enabled</th>\n",
       "      <th>Referenced ID</th>\n",
       "      <th>Scoped To</th>\n",
       "      <th>Datasource Class</th>\n",
       "      <th>Datasource ID</th>\n",
       "      <th>Data ID</th>\n",
       "      <th>ID</th>\n",
       "      <th>Push Result</th>\n",
       "      <th>Value Unit Of Measure</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Compressor 2</td>\n",
       "      <td>Area B_Compressor Power</td>\n",
       "      <td>True</td>\n",
       "      <td>Power</td>\n",
       "      <td>Compressor 2</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-85A1-7590-AA5F-C66CA82059F8]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-85A1-7590-AA5F-C66CA82059F8</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...</td>\n",
       "      <td>0EF5BE2D-682D-6650-BABC-30A0A1EC1AA3</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedCondition</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>High Power</td>\n",
       "      <td>Compressor 2</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>[a=0EF5BE2D-682D-6650-BABC-30A0A1EC1AA3]</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...</td>\n",
       "      <td>0EF5BE2D-6A94-EA10-A877-914BA01F8514</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedCondition</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Other Compressors Are High Power</td>\n",
       "      <td>Compressor 1</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>[p0=0EF5BE2D-6A94-EA10-A877-914BA01F8514]</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...</td>\n",
       "      <td>0EF5BE2D-6BA6-7110-8901-7F36D75CBA80</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Compressor 1</td>\n",
       "      <td>Area A_Compressor Power</td>\n",
       "      <td>True</td>\n",
       "      <td>Power</td>\n",
       "      <td>Compressor 1</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8C7F-6290-BEE8-1BE39219249E]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8C7F-6290-BEE8-1BE39219249E</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...</td>\n",
       "      <td>0EF5BE2D-6860-EAA0-869B-86B9099656F5</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedCondition</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>High Power</td>\n",
       "      <td>Compressor 1</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>[a=0EF5BE2D-6860-EAA0-869B-86B9099656F5]</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...</td>\n",
       "      <td>0EF5BE2D-6ABB-FB10-A137-40F1F47D73B9</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Compressor 1</td>\n",
       "      <td>Compressor 1</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...</td>\n",
       "      <td>0EF5BE2D-6979-66D0-98FA-B99C0592B0D1</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area A_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Refrigerator 1</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8206-77F0-8519-ECD251B886A6]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8206-77F0-8519-ECD251B886A6</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...</td>\n",
       "      <td>0EF5BE2D-688F-60D0-8C89-B90FF76F7294</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedCondition</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Compressor High Power</td>\n",
       "      <td>Refrigerator 1</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>...</td>\n",
       "      <td>[p0=0EF5BE2D-6A94-EA10-A877-914BA01F8514, p1=0...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...</td>\n",
       "      <td>0EF5BE2D-6BCD-6210-9C54-A3A276144B1C</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedCondition</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Other Compressors Are High Power</td>\n",
       "      <td>Compressor 2</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>[p0=0EF5BE2D-6ABB-FB10-A137-40F1F47D73B9]</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...</td>\n",
       "      <td>0EF5BE2D-6BF9-7130-A144-B1BED9CE8B6C</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Compressor 2</td>\n",
       "      <td>Compressor 2</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...</td>\n",
       "      <td>0EF5BE2D-6976-FFC0-80E7-2FC1F0A40968</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Compressor Power Max</td>\n",
       "      <td>Refrigerator 1</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>...</td>\n",
       "      <td>[p0=0EF5BE2D-682D-6650-BABC-30A0A1EC1AA3, p1=0...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...</td>\n",
       "      <td>0EF5BE2D-6A1F-7710-9A6E-9C8F3D44C7E6</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Refrigerator 1</td>\n",
       "      <td>Refrigerator 1</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...</td>\n",
       "      <td>0EF5BE2D-6976-FFC0-8F11-87D681E252F7</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Compressor 4</td>\n",
       "      <td>Area D_Compressor Power</td>\n",
       "      <td>True</td>\n",
       "      <td>Power</td>\n",
       "      <td>Compressor 4</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8673-64F0-8C6A-4C5AE6D5CFC8]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8673-64F0-8C6A-4C5AE6D5CFC8</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...</td>\n",
       "      <td>0EF5BE2D-68D8-64B0-99FB-71A54EC15608</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedCondition</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>High Power</td>\n",
       "      <td>Compressor 4</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>[a=0EF5BE2D-68D8-64B0-99FB-71A54EC15608]</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...</td>\n",
       "      <td>0EF5BE2D-6AE5-7320-AA1C-DEF7CDA5C01F</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedCondition</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Other Compressors Are High Power</td>\n",
       "      <td>Compressor 3</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>[p0=0EF5BE2D-6AE5-7320-AA1C-DEF7CDA5C01F]</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...</td>\n",
       "      <td>0EF5BE2D-6C1B-6410-86BE-0B4D106428C9</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>Compressor 3</td>\n",
       "      <td>Area C_Compressor Power</td>\n",
       "      <td>True</td>\n",
       "      <td>Power</td>\n",
       "      <td>Compressor 3</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-88FA-6480-92A3-70610FAED8C0]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-88FA-6480-92A3-70610FAED8C0</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...</td>\n",
       "      <td>0EF5BE2D-690E-6010-A10A-FDFF04B0ABEF</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedCondition</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>High Power</td>\n",
       "      <td>Compressor 3</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>[a=0EF5BE2D-690E-6010-A10A-FDFF04B0ABEF]</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...</td>\n",
       "      <td>0EF5BE2D-6B16-6060-8CBA-3EA167BBEFB2</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Compressor 3</td>\n",
       "      <td>Compressor 3</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...</td>\n",
       "      <td>0EF5BE2D-6979-66D0-9CEE-AE29933C7497</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>Example Data</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Area C_Temperature</td>\n",
       "      <td>True</td>\n",
       "      <td>Temperature</td>\n",
       "      <td>Refrigerator 2</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>...</td>\n",
       "      <td>[signal=0EF58FC2-8A5C-6490-85CE-FD5BD9A25B54]</td>\n",
       "      <td>False</td>\n",
       "      <td>0EF58FC2-8A5C-6490-85CE-FD5BD9A25B54</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...</td>\n",
       "      <td>0EF5BE2D-693E-FD50-9212-5C302A984C3F</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedCondition</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Compressor High Power</td>\n",
       "      <td>Refrigerator 2</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>...</td>\n",
       "      <td>[p0=0EF5BE2D-6AE5-7320-AA1C-DEF7CDA5C01F, p1=0...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...</td>\n",
       "      <td>0EF5BE2D-6C95-7530-A740-4DD43A2C978D</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedCondition</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Other Compressors Are High Power</td>\n",
       "      <td>Compressor 4</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>[p0=0EF5BE2D-6B16-6060-8CBA-3EA167BBEFB2]</td>\n",
       "      <td>False</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...</td>\n",
       "      <td>0EF5BE2D-6CCF-EEB0-B71E-F303362884BB</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Compressor 4</td>\n",
       "      <td>Compressor 4</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...</td>\n",
       "      <td>0EF5BE2D-6979-66D0-9623-8262FB63AC8C</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Compressor Power Max</td>\n",
       "      <td>Refrigerator 2</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>...</td>\n",
       "      <td>[p0=0EF5BE2D-68D8-64B0-99FB-71A54EC15608, p1=0...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...</td>\n",
       "      <td>0EF5BE2D-6A5C-77A0-A351-3A53B9085954</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Refrigerator 2</td>\n",
       "      <td>Refrigerator 2</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0EF5BE2D-2923-FB30-A567-172B344E74EE</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...</td>\n",
       "      <td>0EF5BE2D-6979-66D0-BFF1-2EB81F81ED2E</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>__side_effect_asset_1__</th>\n",
       "      <td>NaN</td>\n",
       "      <td>Asset</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...</td>\n",
       "      <td>0EF5BE2D-6974-E8B0-AA2B-FB7BD03518AC</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>25 rows × 24 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                         Description                 Type Datasource Name  \\\n",
       "0                                NaN     CalculatedSignal    Example Data   \n",
       "1                                NaN  CalculatedCondition             NaN   \n",
       "2                                NaN  CalculatedCondition             NaN   \n",
       "3                                NaN     CalculatedSignal    Example Data   \n",
       "4                                NaN  CalculatedCondition             NaN   \n",
       "5                                NaN                Asset             NaN   \n",
       "6                                NaN     CalculatedSignal    Example Data   \n",
       "7                                NaN  CalculatedCondition             NaN   \n",
       "8                                NaN  CalculatedCondition             NaN   \n",
       "9                                NaN                Asset             NaN   \n",
       "10                               NaN     CalculatedSignal             NaN   \n",
       "11                               NaN                Asset             NaN   \n",
       "12                               NaN     CalculatedSignal    Example Data   \n",
       "13                               NaN  CalculatedCondition             NaN   \n",
       "14                               NaN  CalculatedCondition             NaN   \n",
       "15                               NaN     CalculatedSignal    Example Data   \n",
       "16                               NaN  CalculatedCondition             NaN   \n",
       "17                               NaN                Asset             NaN   \n",
       "18                               NaN     CalculatedSignal    Example Data   \n",
       "19                               NaN  CalculatedCondition             NaN   \n",
       "20                               NaN  CalculatedCondition             NaN   \n",
       "21                               NaN                Asset             NaN   \n",
       "22                               NaN     CalculatedSignal             NaN   \n",
       "23                               NaN                Asset             NaN   \n",
       "__side_effect_asset_1__          NaN                Asset             NaN   \n",
       "\n",
       "                        Archived    Compressor          Referenced Name  \\\n",
       "0                          False  Compressor 2  Area B_Compressor Power   \n",
       "1                            NaN           NaN                      NaN   \n",
       "2                            NaN           NaN                      NaN   \n",
       "3                          False  Compressor 1  Area A_Compressor Power   \n",
       "4                            NaN           NaN                      NaN   \n",
       "5                            NaN           NaN                      NaN   \n",
       "6                          False           NaN       Area A_Temperature   \n",
       "7                            NaN           NaN                      NaN   \n",
       "8                            NaN           NaN                      NaN   \n",
       "9                            NaN           NaN                      NaN   \n",
       "10                           NaN           NaN                      NaN   \n",
       "11                           NaN           NaN                      NaN   \n",
       "12                         False  Compressor 4  Area D_Compressor Power   \n",
       "13                           NaN           NaN                      NaN   \n",
       "14                           NaN           NaN                      NaN   \n",
       "15                         False  Compressor 3  Area C_Compressor Power   \n",
       "16                           NaN           NaN                      NaN   \n",
       "17                           NaN           NaN                      NaN   \n",
       "18                         False           NaN       Area C_Temperature   \n",
       "19                           NaN           NaN                      NaN   \n",
       "20                           NaN           NaN                      NaN   \n",
       "21                           NaN           NaN                      NaN   \n",
       "22                           NaN           NaN                      NaN   \n",
       "23                           NaN           NaN                      NaN   \n",
       "__side_effect_asset_1__      NaN           NaN                      NaN   \n",
       "\n",
       "                        Reference                              Name  \\\n",
       "0                            True                             Power   \n",
       "1                             NaN                        High Power   \n",
       "2                             NaN  Other Compressors Are High Power   \n",
       "3                            True                             Power   \n",
       "4                             NaN                        High Power   \n",
       "5                             NaN                      Compressor 1   \n",
       "6                            True                       Temperature   \n",
       "7                             NaN             Compressor High Power   \n",
       "8                             NaN  Other Compressors Are High Power   \n",
       "9                             NaN                      Compressor 2   \n",
       "10                            NaN              Compressor Power Max   \n",
       "11                            NaN                    Refrigerator 1   \n",
       "12                           True                             Power   \n",
       "13                            NaN                        High Power   \n",
       "14                            NaN  Other Compressors Are High Power   \n",
       "15                           True                             Power   \n",
       "16                            NaN                        High Power   \n",
       "17                            NaN                      Compressor 3   \n",
       "18                           True                       Temperature   \n",
       "19                            NaN             Compressor High Power   \n",
       "20                            NaN  Other Compressors Are High Power   \n",
       "21                            NaN                      Compressor 4   \n",
       "22                            NaN              Compressor Power Max   \n",
       "23                            NaN                    Refrigerator 2   \n",
       "__side_effect_asset_1__       NaN                Refrigerator Units   \n",
       "\n",
       "                                      Asset  \\\n",
       "0                              Compressor 2   \n",
       "1                              Compressor 2   \n",
       "2                              Compressor 1   \n",
       "3                              Compressor 1   \n",
       "4                              Compressor 1   \n",
       "5                              Compressor 1   \n",
       "6                            Refrigerator 1   \n",
       "7                            Refrigerator 1   \n",
       "8                              Compressor 2   \n",
       "9                              Compressor 2   \n",
       "10                           Refrigerator 1   \n",
       "11                           Refrigerator 1   \n",
       "12                             Compressor 4   \n",
       "13                             Compressor 4   \n",
       "14                             Compressor 3   \n",
       "15                             Compressor 3   \n",
       "16                             Compressor 3   \n",
       "17                             Compressor 3   \n",
       "18                           Refrigerator 2   \n",
       "19                           Refrigerator 2   \n",
       "20                             Compressor 4   \n",
       "21                             Compressor 4   \n",
       "22                           Refrigerator 2   \n",
       "23                           Refrigerator 2   \n",
       "__side_effect_asset_1__  Refrigerator Units   \n",
       "\n",
       "                                                              Asset Object  \\\n",
       "0                        Refrigerator Units >> Refrigerator 1 >> Compre...   \n",
       "1                        Refrigerator Units >> Refrigerator 1 >> Compre...   \n",
       "2                        Refrigerator Units >> Refrigerator 1 >> Compre...   \n",
       "3                        Refrigerator Units >> Refrigerator 1 >> Compre...   \n",
       "4                        Refrigerator Units >> Refrigerator 1 >> Compre...   \n",
       "5                        Refrigerator Units >> Refrigerator 1 >> Compre...   \n",
       "6                                     Refrigerator Units >> Refrigerator 1   \n",
       "7                                     Refrigerator Units >> Refrigerator 1   \n",
       "8                        Refrigerator Units >> Refrigerator 1 >> Compre...   \n",
       "9                        Refrigerator Units >> Refrigerator 1 >> Compre...   \n",
       "10                                    Refrigerator Units >> Refrigerator 1   \n",
       "11                                    Refrigerator Units >> Refrigerator 1   \n",
       "12                       Refrigerator Units >> Refrigerator 2 >> Compre...   \n",
       "13                       Refrigerator Units >> Refrigerator 2 >> Compre...   \n",
       "14                       Refrigerator Units >> Refrigerator 2 >> Compre...   \n",
       "15                       Refrigerator Units >> Refrigerator 2 >> Compre...   \n",
       "16                       Refrigerator Units >> Refrigerator 2 >> Compre...   \n",
       "17                       Refrigerator Units >> Refrigerator 2 >> Compre...   \n",
       "18                                    Refrigerator Units >> Refrigerator 2   \n",
       "19                                    Refrigerator Units >> Refrigerator 2   \n",
       "20                       Refrigerator Units >> Refrigerator 2 >> Compre...   \n",
       "21                       Refrigerator Units >> Refrigerator 2 >> Compre...   \n",
       "22                                    Refrigerator Units >> Refrigerator 2   \n",
       "23                                    Refrigerator Units >> Refrigerator 2   \n",
       "__side_effect_asset_1__                                                NaN   \n",
       "\n",
       "                         ...  \\\n",
       "0                        ...   \n",
       "1                        ...   \n",
       "2                        ...   \n",
       "3                        ...   \n",
       "4                        ...   \n",
       "5                        ...   \n",
       "6                        ...   \n",
       "7                        ...   \n",
       "8                        ...   \n",
       "9                        ...   \n",
       "10                       ...   \n",
       "11                       ...   \n",
       "12                       ...   \n",
       "13                       ...   \n",
       "14                       ...   \n",
       "15                       ...   \n",
       "16                       ...   \n",
       "17                       ...   \n",
       "18                       ...   \n",
       "19                       ...   \n",
       "20                       ...   \n",
       "21                       ...   \n",
       "22                       ...   \n",
       "23                       ...   \n",
       "__side_effect_asset_1__  ...   \n",
       "\n",
       "                                                        Formula Parameters  \\\n",
       "0                            [signal=0EF58FC2-85A1-7590-AA5F-C66CA82059F8]   \n",
       "1                                 [a=0EF5BE2D-682D-6650-BABC-30A0A1EC1AA3]   \n",
       "2                                [p0=0EF5BE2D-6A94-EA10-A877-914BA01F8514]   \n",
       "3                            [signal=0EF58FC2-8C7F-6290-BEE8-1BE39219249E]   \n",
       "4                                 [a=0EF5BE2D-6860-EAA0-869B-86B9099656F5]   \n",
       "5                                                                      NaN   \n",
       "6                            [signal=0EF58FC2-8206-77F0-8519-ECD251B886A6]   \n",
       "7                        [p0=0EF5BE2D-6A94-EA10-A877-914BA01F8514, p1=0...   \n",
       "8                                [p0=0EF5BE2D-6ABB-FB10-A137-40F1F47D73B9]   \n",
       "9                                                                      NaN   \n",
       "10                       [p0=0EF5BE2D-682D-6650-BABC-30A0A1EC1AA3, p1=0...   \n",
       "11                                                                     NaN   \n",
       "12                           [signal=0EF58FC2-8673-64F0-8C6A-4C5AE6D5CFC8]   \n",
       "13                                [a=0EF5BE2D-68D8-64B0-99FB-71A54EC15608]   \n",
       "14                               [p0=0EF5BE2D-6AE5-7320-AA1C-DEF7CDA5C01F]   \n",
       "15                           [signal=0EF58FC2-88FA-6480-92A3-70610FAED8C0]   \n",
       "16                                [a=0EF5BE2D-690E-6010-A10A-FDFF04B0ABEF]   \n",
       "17                                                                     NaN   \n",
       "18                           [signal=0EF58FC2-8A5C-6490-85CE-FD5BD9A25B54]   \n",
       "19                       [p0=0EF5BE2D-6AE5-7320-AA1C-DEF7CDA5C01F, p1=0...   \n",
       "20                               [p0=0EF5BE2D-6B16-6060-8CBA-3EA167BBEFB2]   \n",
       "21                                                                     NaN   \n",
       "22                       [p0=0EF5BE2D-68D8-64B0-99FB-71A54EC15608, p1=0...   \n",
       "23                                                                     NaN   \n",
       "__side_effect_asset_1__                                                NaN   \n",
       "\n",
       "                        Cache Enabled                         Referenced ID  \\\n",
       "0                               False  0EF58FC2-85A1-7590-AA5F-C66CA82059F8   \n",
       "1                                 NaN                                   NaN   \n",
       "2                               False                                   NaN   \n",
       "3                               False  0EF58FC2-8C7F-6290-BEE8-1BE39219249E   \n",
       "4                                 NaN                                   NaN   \n",
       "5                                 NaN                                   NaN   \n",
       "6                               False  0EF58FC2-8206-77F0-8519-ECD251B886A6   \n",
       "7                                 NaN                                   NaN   \n",
       "8                               False                                   NaN   \n",
       "9                                 NaN                                   NaN   \n",
       "10                                NaN                                   NaN   \n",
       "11                                NaN                                   NaN   \n",
       "12                              False  0EF58FC2-8673-64F0-8C6A-4C5AE6D5CFC8   \n",
       "13                                NaN                                   NaN   \n",
       "14                              False                                   NaN   \n",
       "15                              False  0EF58FC2-88FA-6480-92A3-70610FAED8C0   \n",
       "16                                NaN                                   NaN   \n",
       "17                                NaN                                   NaN   \n",
       "18                              False  0EF58FC2-8A5C-6490-85CE-FD5BD9A25B54   \n",
       "19                                NaN                                   NaN   \n",
       "20                              False                                   NaN   \n",
       "21                                NaN                                   NaN   \n",
       "22                                NaN                                   NaN   \n",
       "23                                NaN                                   NaN   \n",
       "__side_effect_asset_1__           NaN                                   NaN   \n",
       "\n",
       "                                                    Scoped To  \\\n",
       "0                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "1                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "2                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "3                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "4                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "5                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "6                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "7                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "8                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "9                        0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "10                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "11                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "12                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "13                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "14                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "15                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "16                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "17                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "18                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "19                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "20                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "21                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "22                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "23                       0EF5BE2D-2923-FB30-A567-172B344E74EE   \n",
       "__side_effect_asset_1__                                   NaN   \n",
       "\n",
       "                        Datasource Class  Datasource ID  \\\n",
       "0                          Seeq Data Lab  Seeq Data Lab   \n",
       "1                          Seeq Data Lab  Seeq Data Lab   \n",
       "2                          Seeq Data Lab  Seeq Data Lab   \n",
       "3                          Seeq Data Lab  Seeq Data Lab   \n",
       "4                          Seeq Data Lab  Seeq Data Lab   \n",
       "5                          Seeq Data Lab  Seeq Data Lab   \n",
       "6                          Seeq Data Lab  Seeq Data Lab   \n",
       "7                          Seeq Data Lab  Seeq Data Lab   \n",
       "8                          Seeq Data Lab  Seeq Data Lab   \n",
       "9                          Seeq Data Lab  Seeq Data Lab   \n",
       "10                         Seeq Data Lab  Seeq Data Lab   \n",
       "11                         Seeq Data Lab  Seeq Data Lab   \n",
       "12                         Seeq Data Lab  Seeq Data Lab   \n",
       "13                         Seeq Data Lab  Seeq Data Lab   \n",
       "14                         Seeq Data Lab  Seeq Data Lab   \n",
       "15                         Seeq Data Lab  Seeq Data Lab   \n",
       "16                         Seeq Data Lab  Seeq Data Lab   \n",
       "17                         Seeq Data Lab  Seeq Data Lab   \n",
       "18                         Seeq Data Lab  Seeq Data Lab   \n",
       "19                         Seeq Data Lab  Seeq Data Lab   \n",
       "20                         Seeq Data Lab  Seeq Data Lab   \n",
       "21                         Seeq Data Lab  Seeq Data Lab   \n",
       "22                         Seeq Data Lab  Seeq Data Lab   \n",
       "23                         Seeq Data Lab  Seeq Data Lab   \n",
       "__side_effect_asset_1__    Seeq Data Lab  Seeq Data Lab   \n",
       "\n",
       "                                                                   Data ID  \\\n",
       "0                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...   \n",
       "1                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...   \n",
       "2                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...   \n",
       "3                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...   \n",
       "4                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...   \n",
       "5                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...   \n",
       "6                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...   \n",
       "7                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...   \n",
       "8                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...   \n",
       "9                        [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...   \n",
       "10                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...   \n",
       "11                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...   \n",
       "12                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...   \n",
       "13                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...   \n",
       "14                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...   \n",
       "15                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...   \n",
       "16                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...   \n",
       "17                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...   \n",
       "18                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...   \n",
       "19                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...   \n",
       "20                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Condit...   \n",
       "21                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...   \n",
       "22                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Signal...   \n",
       "23                       [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...   \n",
       "__side_effect_asset_1__  [0EF5BE2D-2923-FB30-A567-172B344E74EE] {Asset}...   \n",
       "\n",
       "                                                           ID Push Result  \\\n",
       "0                        0EF5BE2D-682D-6650-BABC-30A0A1EC1AA3     Success   \n",
       "1                        0EF5BE2D-6A94-EA10-A877-914BA01F8514     Success   \n",
       "2                        0EF5BE2D-6BA6-7110-8901-7F36D75CBA80     Success   \n",
       "3                        0EF5BE2D-6860-EAA0-869B-86B9099656F5     Success   \n",
       "4                        0EF5BE2D-6ABB-FB10-A137-40F1F47D73B9     Success   \n",
       "5                        0EF5BE2D-6979-66D0-98FA-B99C0592B0D1     Success   \n",
       "6                        0EF5BE2D-688F-60D0-8C89-B90FF76F7294     Success   \n",
       "7                        0EF5BE2D-6BCD-6210-9C54-A3A276144B1C     Success   \n",
       "8                        0EF5BE2D-6BF9-7130-A144-B1BED9CE8B6C     Success   \n",
       "9                        0EF5BE2D-6976-FFC0-80E7-2FC1F0A40968     Success   \n",
       "10                       0EF5BE2D-6A1F-7710-9A6E-9C8F3D44C7E6     Success   \n",
       "11                       0EF5BE2D-6976-FFC0-8F11-87D681E252F7     Success   \n",
       "12                       0EF5BE2D-68D8-64B0-99FB-71A54EC15608     Success   \n",
       "13                       0EF5BE2D-6AE5-7320-AA1C-DEF7CDA5C01F     Success   \n",
       "14                       0EF5BE2D-6C1B-6410-86BE-0B4D106428C9     Success   \n",
       "15                       0EF5BE2D-690E-6010-A10A-FDFF04B0ABEF     Success   \n",
       "16                       0EF5BE2D-6B16-6060-8CBA-3EA167BBEFB2     Success   \n",
       "17                       0EF5BE2D-6979-66D0-9CEE-AE29933C7497     Success   \n",
       "18                       0EF5BE2D-693E-FD50-9212-5C302A984C3F     Success   \n",
       "19                       0EF5BE2D-6C95-7530-A740-4DD43A2C978D     Success   \n",
       "20                       0EF5BE2D-6CCF-EEB0-B71E-F303362884BB     Success   \n",
       "21                       0EF5BE2D-6979-66D0-9623-8262FB63AC8C     Success   \n",
       "22                       0EF5BE2D-6A5C-77A0-A351-3A53B9085954     Success   \n",
       "23                       0EF5BE2D-6979-66D0-BFF1-2EB81F81ED2E     Success   \n",
       "__side_effect_asset_1__  0EF5BE2D-6974-E8B0-AA2B-FB7BD03518AC     Success   \n",
       "\n",
       "                        Value Unit Of Measure  \n",
       "0                                         NaN  \n",
       "1                                         NaN  \n",
       "2                                         NaN  \n",
       "3                                         NaN  \n",
       "4                                         NaN  \n",
       "5                                         NaN  \n",
       "6                                         NaN  \n",
       "7                                         NaN  \n",
       "8                                         NaN  \n",
       "9                                         NaN  \n",
       "10                                        NaN  \n",
       "11                                        NaN  \n",
       "12                                        NaN  \n",
       "13                                        NaN  \n",
       "14                                        NaN  \n",
       "15                                        NaN  \n",
       "16                                        NaN  \n",
       "17                                        NaN  \n",
       "18                                        NaN  \n",
       "19                                        NaN  \n",
       "20                                        NaN  \n",
       "21                                        NaN  \n",
       "22                                        NaN  \n",
       "23                                        NaN  \n",
       "__side_effect_asset_1__                   NaN  \n",
       "\n",
       "[25 rows x 24 columns]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "class Refrigerator(Asset):\n",
    "    @Asset.Attribute()\n",
    "    def Temperature(self, metadata):\n",
    "        # This signal attribute is assigned to the Refrigerator asset\n",
    "        return metadata[metadata['Name'].str.endswith('Temperature')]\n",
    "\n",
    "    # Note the use of Asset.Component here, which allows us to return a list of definitions\n",
    "    # instead of just a single definition.\n",
    "    @Asset.Component()\n",
    "    def Compressors(self, metadata):\n",
    "        # Using the Compressor template class, we build all of the compressor definitions\n",
    "        # associated with a particular Refrigerator. The column_name supplied tells the\n",
    "        # build_components function which metadata column to use for the Compressor names.\n",
    "        return self.build_components(template=Compressor, metadata=metadata, column_name='Compressor')\n",
    "    \n",
    "    @Asset.Attribute()\n",
    "    def Compressor_Power_Max(self, metadata):\n",
    "        # We can refer to the Compressors and \"pick\" attributes for which to perform a\n",
    "        # roll up. In this example, we're picking the 'Power' signals that are on each\n",
    "        # compressor and creating a new signal representing the maximum power across\n",
    "        # all the compressors.\n",
    "        return self.Compressors().pick({\n",
    "            'Name': 'Power'\n",
    "        }).roll_up('maximum')\n",
    "    \n",
    "    @Asset.Attribute()\n",
    "    def Compressor_High_Power(self, metadata):\n",
    "        # Similar to Compressor_Power_Max, we are rolling up a compressor calculation but\n",
    "        # this time it's a condition. 'High Power' at the Refrigerator level will have\n",
    "        # capsules if either compressor's 'High Power' condition is present.\n",
    "        #\n",
    "        # This time we'll use a different method of picking the child items than we used\n",
    "        # in Compressor_Power_Max() above. In this case, we're going to select the set of\n",
    "        # compressors that are owned by this asset from the entire set of assets, and use\n",
    "        # Python conditional logic to find the \"High Power\" conditions. What you see\n",
    "        # below is called a Python \"list comprehension\" that combines iteration over all\n",
    "        # assets (the \"for/in\" construct) with filtering (the \"if\" statement).\n",
    "        #\n",
    "        # Helpful functions:\n",
    "        #  asset.is_child_of(self)      - Is the asset one of my direct children?\n",
    "        #  asset.is_parent_of(self)     - Is the asset my direct parent?\n",
    "        #  asset.is_descendant_of(self) - Is the asset below me in the tree?\n",
    "        #  asset.is_ancestor_of(self)   - Is the asset above me? (i.e. parent/grandparent/great-grandparent/etc)\n",
    "        #\n",
    "        return ItemGroup([\n",
    "            asset.High_Power() for asset in self.all_assets()\n",
    "            if asset.is_child_of(self)\n",
    "        ]).roll_up('union')\n",
    "    \n",
    "class Compressor(Asset):\n",
    "    @Asset.Attribute()\n",
    "    def Power(self, metadata):\n",
    "        # Each compressor has just a single attribute, Power\n",
    "        return metadata[metadata['Name'].str.endswith('Power')]\n",
    "    \n",
    "    @Asset.Attribute()\n",
    "    def High_Power(self, metadata):\n",
    "        return {\n",
    "            'Type': 'Condition',\n",
    "            'Formula': '$a.valueSearch(isGreaterThan(20kW))',\n",
    "            'Formula Parameters': {\n",
    "                '$a': self.Power()\n",
    "            }\n",
    "        }\n",
    "    \n",
    "    @Asset.Attribute()\n",
    "    def Other_Compressors_Are_High_Power(self, metadata):\n",
    "        # This is a more complex example of using self.all_assets() where we want to\n",
    "        # look at sibling assets as opposed to parents/children, and do a roll up.\n",
    "        # Here the \"if\" statement selects Compressor assets where our parent and\n",
    "        # their parent are the same but we exclude ourselves.\n",
    "        return ItemGroup([\n",
    "            asset.High_Power() for asset in self.all_assets()\n",
    "            if isinstance(asset, Compressor) and self.parent == asset.parent and self != asset\n",
    "        ]).roll_up('union')\n",
    "        \n",
    "        \n",
    "\n",
    "build_df = spy.assets.build(Refrigerator, metadata_df, errors='raise')\n",
    "\n",
    "spy.push(metadata=build_df, workbook='SPy Documentation Examples >> spy.assets')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There should now be a `Refrigerator Units` asset tree in Seeq with two Refrigerators with two Compressors each.\n",
    "\n",
    "In this manner, you can make an arbitrarily deep hierarchy composed of various asset types."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Metrics\n",
    "\n",
    "Metrics (aka _Scorecard Metrics_ / _Threshold Metrics_) are powerful items in Seeq that allow you to easily specify aggregations, statistics and associated boundaries. Click on `Scorecard Metric` in the Seeq Workbench _Tools_ pane to experiment with them.\n",
    "\n",
    "Metrics can be specified as attributes in asset classes and can refer to other attributes. Here are some examples:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "class HVAC_With_Metrics(HVAC):\n",
    "    @Asset.Attribute()\n",
    "    def Too_Humid(self, metadata):\n",
    "        return {\n",
    "            'Type': 'Condition',\n",
    "            'Name': 'Too Humid',\n",
    "            'Formula': '$relhumid.valueSearch(isGreaterThan(70%))',\n",
    "            'Formula Parameters': {\n",
    "                '$relhumid': self.Relative_Humidity(),\n",
    "            }\n",
    "        }\n",
    "\n",
    "    @Asset.Attribute()\n",
    "    def Humidity_Upper_Bound(self, metadata):\n",
    "        return {\n",
    "            'Type': 'Signal',\n",
    "            'Name': 'Humidity Upper Bound',\n",
    "            'Formula': '$relhumid + 10',\n",
    "            'Formula Parameters': {\n",
    "                '$relhumid': self.Relative_Humidity(),\n",
    "            }\n",
    "        }\n",
    "\n",
    "    @Asset.Attribute()\n",
    "    def Humidity_Lower_Bound(self, metadata):\n",
    "        return {\n",
    "            'Type': 'Signal',\n",
    "            'Name': 'Humidity Lower Bound',\n",
    "            'Formula': '$relhumid - 10',\n",
    "            'Formula Parameters': {\n",
    "                '$relhumid': self.Relative_Humidity(),\n",
    "            }\n",
    "        }\n",
    "\n",
    "    @Asset.Attribute()\n",
    "    def Humidity_Statistic_KPI(self, metadata):\n",
    "        return {\n",
    "            'Type': 'Metric',\n",
    "            'Measured Item': self.Relative_Humidity(),\n",
    "            'Statistic': 'Range'\n",
    "        }\n",
    "\n",
    "    @Asset.Attribute()\n",
    "    def Humidity_Simple_KPI(self, metadata):\n",
    "        return {\n",
    "            'Type': 'Metric',\n",
    "            'Measured Item': self.Relative_Humidity(),\n",
    "            'Thresholds': {\n",
    "                'HiHi': self.Humidity_Upper_Bound(),\n",
    "                'LoLo': self.Humidity_Lower_Bound()\n",
    "            }\n",
    "        }\n",
    "\n",
    "    @Asset.Attribute()\n",
    "    def Humidity_Condition_KPI(self, metadata):\n",
    "        return {\n",
    "            'Type': 'Metric',\n",
    "            'Measured Item': self.Relative_Humidity(),\n",
    "            'Statistic': 'Maximum',\n",
    "            'Bounding Condition': self.Too_Humid(),\n",
    "            'Bounding Condition Maximum Duration': '30h'\n",
    "        }\n",
    "\n",
    "    @Asset.Attribute()\n",
    "    def Humidity_Continuous_KPI(self, metadata):\n",
    "        return {\n",
    "            'Type': 'Metric',\n",
    "            'Measured Item': self.Relative_Humidity(),\n",
    "            'Statistic': 'Minimum',\n",
    "            'Duration': '6h',\n",
    "            'Period': '4h',\n",
    "            'Metric Neutral Color':'#189E4D',\n",
    "            #hex color codes can be optionally appended to thresholds\n",
    "            'Thresholds': {\n",
    "                'HiHiHi#FF0000': 60,\n",
    "                'HiHi': 40,\n",
    "                'LoLo#0000ff': 20\n",
    "            }\n",
    "        }"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's push a small asset tree with these metrics in it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"background-color: #EEFFEE;color:black; text-align: left;\">Pushed successfully to datasource <strong>Seeq Data Lab [Datasource ID: Seeq Data Lab]</strong> and scoped to workbook ID <strong>0EF5BE2D-2923-FB30-A567-172B344E74EE</strong><br>Click the following link to see what you pushed in Seeq:<br><a href=\"http://localhost:34216/0EF5BE2D-2738-FFA0-81E0-D2B058859C4D/workbook/0EF5BE2D-2923-FB30-A567-172B344E74EE/worksheet/0EF5BE2D-2A01-FDE0-ABC4-799849E1C026\" target=\"_blank\">http://localhost:34216/0EF5BE2D-2738-FFA0-81E0-D2B058859C4D/workbook/0EF5BE2D-2923-FB30-A567-172B344E74EE/worksheet/0EF5BE2D-2A01-FDE0-ABC4-799849E1C026</a></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "metadata_df = spy.search({\n",
    "    'Name': 'Area A_*',\n",
    "    'Datasource Class': 'Time Series CSV Files'\n",
    "})\n",
    "\n",
    "metadata_df['Build Asset'] = 'Metrics Area A'\n",
    "metadata_df['Build Path'] = 'Metrics Example'\n",
    "build_df = spy.assets.build(HVAC_With_Metrics, metadata_df)\n",
    "push_df = spy.push(metadata=build_df, workbook='SPy Documentation Examples >> spy.assets')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You should now see a `Metrics Example` tree that you can drill into and bring up metrics."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Troubleshooting / Debugging\n",
    "\n",
    "Since we are using Python classes to describe our asset tree and the attributes therein, troubleshooting our code is a little bit harder than just working with DataFrames. If the code within your `@Asset.Attribute`-decorated function isn't working the way you expect, ideally you would be able to see what's happening inside of it while the `spy.assets.build()` function is running.\n",
    "\n",
    "A useful tool is Python's built-in command-line debugger called [pdb](https://docs.python.org/3/library/pdb.html). Let's try using it in the example below. When you execute the following cell, you'll notice that an `ipdb>` prompt appears, showing you the line of code you're about to execute. You can show the value of the `metadata` variable just by typing `metadata` and pressing ENTER. Then type `c` and hit ENTER to allow execution to continue."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"background-color: #EEFFEE;color:black; text-align: left;\">Successfully built 1 assets and 1 attributes.</div><table class=\"tex2jax_ignore\" style=\"color:black;\"><tr><td style=\"background-color: #EEFFEE;\"></td><td style=\"background-color: #EEFFEE; text-align: left;\">Build Path</td><td style=\"background-color: #EEFFEE; text-align: left;\">Build Asset</td><td style=\"background-color: #EEFFEE; text-align: left;\">Build Template</td><td style=\"background-color: #EEFFEE; text-align: left;\">Build Result</td></tr><tr style=\"background-color: #EEFFEE;\"><td style=\"vertical-align: top;\">0</td><td style=\"text-align: left; vertical-align: top;\">Debugging Example</td><td style=\"text-align: left; vertical-align: top;\">Debugging Area A</td><td style=\"text-align: left; vertical-align: top;\">DebuggingExample</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# You must import the IPython breakpoint function, called \"set_trace\"\n",
    "from IPython.core.debugger import set_trace\n",
    "\n",
    "class DebuggingExample(Asset):\n",
    "    @Asset.Attribute()\n",
    "    def My_Scalar(self, metadata):\n",
    "        # Put in a \"breakpoint\" so that execution stops here and a command line pops up. Notice the\n",
    "        # if statement here as an example of how to be more precise about when the breakpoint is hit:\n",
    "        # We're only going to enter the debugger if the asset's name is 'Debugging Area A'\n",
    "        if self.definition['Name'] == 'Debugging Area A':\n",
    "            set_trace()\n",
    "        \n",
    "        return {\n",
    "            'Type': 'Scalar',\n",
    "            'Formula': '%s' % len(metadata)\n",
    "        }\n",
    "    \n",
    "debugging_metadata_df = pd.DataFrame([{\n",
    "    'Build Asset': 'Debugging Area A',\n",
    "    'Build Path': 'Debugging Example'\n",
    "}])\n",
    "\n",
    "build_df = spy.assets.build(DebuggingExample, debugging_metadata_df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There are lots of great commands to help you navigate through your code as it executes. Read through all the commands at [pdb](https://docs.python.org/3/library/pdb.html) to familiarize yourself. The most important ones are `step`, `next` and `continue`. Anything else you type at the prompt gets evaluated as Python code, so you can do things like `metadata['Build Asset']` to show just the `Build Asset` column of the `metadata` DataFrame."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Using an Integrated Development Environment (IDE)\n",
    "\n",
    "If you want to \"level up\" and start using more powerful development and debugging tools, you can! There are several good choices available to you, including [SPyder](https://www.spyder-ide.org/) (free and open source) and [PyCharm](https://www.jetbrains.com/pycharm/) (Community Edition is free).\n",
    "\n",
    "If you take this route, you'll want to move your code into \"normal\" .py files and execute SPy commands from a main script with the debugger engaged."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Detailed Help\n",
    "\n",
    "All SPy functions have detailed documentation to help you use them. Just execute `help(spy.<func>)` like\n",
    "you see below.\n",
    "\n",
    "**Make sure you re-execute the cell below to see the latest documentation. It otherwise might be from an\n",
    "earlier version of SPy.**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Help on function build in module seeq.spy.assets._build:\n",
      "\n",
      "build(model, metadata, *, workbooks=None, errors=None, quiet=None, status: 'Status' = None)\n",
      "    Utilizes a Python Class-based asset model specification to produce a set\n",
      "    of item definitions as a metadata DataFrame.\n",
      "    \n",
      "    Parameters\n",
      "    ----------\n",
      "    model : {ModuleType, type, List[type]}\n",
      "        A Python module, a spy.assets.Asset or list of spy.asset.Assets to\n",
      "        use as the model for the asset tree to be produced. Follow the\n",
      "        spy.assets.ipynb Tutorial to understand the structure of your\n",
      "        module/classes.\n",
      "    \n",
      "    metadata : {pd.DataFrame}\n",
      "        The metadata DataFrame, usually produced from calls to spy.search(),\n",
      "        that will be used as the \"ingredients\" for the asset tree and passed\n",
      "        into all Asset.Attribute() and Asset.Component() decorated class\n",
      "        functions.\n",
      "    \n",
      "    workbooks : {list}\n",
      "        The set of workbooks (usually a single AnalysisTemplate object and\n",
      "        one or more TopicTemplate objects) to be used in @Display and\n",
      "        @Document functions.\n",
      "    \n",
      "    errors : {'raise', 'catalog'}, default 'catalog'\n",
      "        If 'raise', any errors encountered will cause an exception. If\n",
      "        'catalog', errors will be added to a 'Result' column in the status.df\n",
      "        DataFrame.\n",
      "    \n",
      "    quiet : bool, default False\n",
      "        If True, suppresses progress output.\n",
      "    \n",
      "    status : spy.Status, optional\n",
      "        If specified, the supplied Status object will be updated as the command\n",
      "        progresses. It gets filled in with the same information you would see\n",
      "        in Jupyter in the blue/green/red table below your code while the\n",
      "        command is executed. The table itself is accessible as a DataFrame via\n",
      "        the status.df property.\n",
      "    \n",
      "    Returns\n",
      "    -------\n",
      "    pandas.DataFrame\n",
      "        A DataFrame with the metadata for the items that were built and are\n",
      "        meant to be pushed, along with any errors in the Build Result column\n",
      "        about the operation.\n",
      "    \n",
      "        Additionally, the following properties are stored on the \"spy\"\n",
      "        attribute of the output DataFrame:\n",
      "    \n",
      "        =================== ===================================================\n",
      "        Property            Description\n",
      "        =================== ===================================================\n",
      "        func                A str value of 'spy.assets.build'\n",
      "        kwargs              A dict with the values of the input parameters\n",
      "                            passed to spy.assets.build to get the output\n",
      "                            DataFrame\n",
      "        context             An object with the intermediate outputs of the\n",
      "                            build process, sometimes useful for debugging\n",
      "        status              A spy.Status object with the status of the\n",
      "                            spy.assets.build call\n",
      "        =================== ===================================================\n",
      "\n"
     ]
    }
   ],
   "source": [
    "help(spy.assets.build)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3.11",
   "language": "python",
   "name": "python311"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
