{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from seeq import spy\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"background-color: #EEFFEE;text-align: left;\">Logged in to <strong>http://localhost:34216</strong> successfully as <strong>agent_api_key</strong>.<br>Seeq Server Version: <strong>R54.0.0-SNAPSHOT</strong><br>Seeq Python Module Version: <strong>54.0.0.179.19</strong></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": [
    "# spy.assets\n",
    "\n",
    "The `spy.assets` submodule provides a framework for creating templates and building them into asset trees full of signals, conditions and scalars.\n",
    "\n",
    "With `spy.assets`, you can:\n",
    "\n",
    "* Map tags from external datasources like OSIsoft PI, Honeywell PHD and others to user-friendly and purpose-built asset trees\n",
    "* 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",
    "* Convert units of measure, re-sample data, and apply data cleansing tools to raw data\n",
    "* Add high-value calculations to asset templates with simple dependency referencing syntax\n",
    "\n",
    "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": [
    "## 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 _decorator_ 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 \"ingedients\" 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;text-align: left;\">Query successful</div><table><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;\">Time</td><td style=\"background-color: #EEFFEE; text-align: right;\">Count</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.08</td><td style=\"text-align: right; vertical-align: top;\">70</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>F3E3FAF9-2978-4CA4-AADC-0644EBB8DEE7</td>\n",
       "      <td>Area I_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>5A782752-6CC8-45F7-A7C2-D39DD6408B89</td>\n",
       "      <td>Area B_Compressor Stage_AsInt32</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>NaN</td>\n",
       "      <td>54.200.148.162</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0690814E-8E52-4A89-BB46-A8A1033907D5</td>\n",
       "      <td>Area C_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>A8696746-48D5-4FC8-8372-8DB6CCC4E520</td>\n",
       "      <td>Area A_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>4</th>\n",
       "      <td>72A1AD9F-139B-4D0A-9716-03535151C5AC</td>\n",
       "      <td>Area B_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  F3E3FAF9-2978-4CA4-AADC-0644EBB8DEE7               Area I_Temperature   \n",
       "1  5A782752-6CC8-45F7-A7C2-D39DD6408B89  Area B_Compressor Stage_AsInt32   \n",
       "2  0690814E-8E52-4A89-BB46-A8A1033907D5         Area C_Relative Humidity   \n",
       "3  A8696746-48D5-4FC8-8372-8DB6CCC4E520         Area A_Relative Humidity   \n",
       "4  72A1AD9F-139B-4D0A-9716-03535151C5AC               Area B_Temperature   \n",
       "\n",
       "   Description          Type Value Unit Of Measure Datasource Name  Archived  \n",
       "0          NaN  StoredSignal                    °F    Example Data     False  \n",
       "1          NaN  StoredSignal                   NaN  54.200.148.162     False  \n",
       "2          NaN  StoredSignal                     %    Example Data     False  \n",
       "3          NaN  StoredSignal                     %    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 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>F3E3FAF9-2978-4CA4-AADC-0644EBB8DEE7</td>\n",
       "      <td>Area I_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 I</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5A782752-6CC8-45F7-A7C2-D39DD6408B89</td>\n",
       "      <td>Area B_Compressor Stage_AsInt32</td>\n",
       "      <td>NaN</td>\n",
       "      <td>StoredSignal</td>\n",
       "      <td>NaN</td>\n",
       "      <td>54.200.148.162</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>2</th>\n",
       "      <td>0690814E-8E52-4A89-BB46-A8A1033907D5</td>\n",
       "      <td>Area C_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 C</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>A8696746-48D5-4FC8-8372-8DB6CCC4E520</td>\n",
       "      <td>Area A_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 A</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>72A1AD9F-139B-4D0A-9716-03535151C5AC</td>\n",
       "      <td>Area B_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 B</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>65</th>\n",
       "      <td>B42CEBAE-10FF-4CA3-A027-96DAD2D80A08</td>\n",
       "      <td>Area H_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 H</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>66</th>\n",
       "      <td>86AE1088-BD86-4F0C-924E-AFE536D1C525</td>\n",
       "      <td>Area D_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 D</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67</th>\n",
       "      <td>65FA19A3-09D1-4111-BC4B-CF9A75427CF2</td>\n",
       "      <td>Area K_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 K</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>68</th>\n",
       "      <td>C0E38C4B-35C2-49AB-8E38-213D9F4D5E73</td>\n",
       "      <td>Area D_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 D</td>\n",
       "      <td>My HVAC Units &gt;&gt; Facility #1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>69</th>\n",
       "      <td>E61E8781-5598-4A2E-BE93-CD06E8C8CA8B</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",
       "  </tbody>\n",
       "</table>\n",
       "<p>70 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                      ID                             Name  \\\n",
       "0   F3E3FAF9-2978-4CA4-AADC-0644EBB8DEE7               Area I_Temperature   \n",
       "1   5A782752-6CC8-45F7-A7C2-D39DD6408B89  Area B_Compressor Stage_AsInt32   \n",
       "2   0690814E-8E52-4A89-BB46-A8A1033907D5         Area C_Relative Humidity   \n",
       "3   A8696746-48D5-4FC8-8372-8DB6CCC4E520         Area A_Relative Humidity   \n",
       "4   72A1AD9F-139B-4D0A-9716-03535151C5AC               Area B_Temperature   \n",
       "..                                   ...                              ...   \n",
       "65  B42CEBAE-10FF-4CA3-A027-96DAD2D80A08                 Area H_Optimizer   \n",
       "66  86AE1088-BD86-4F0C-924E-AFE536D1C525               Area D_Temperature   \n",
       "67  65FA19A3-09D1-4111-BC4B-CF9A75427CF2         Area K_Relative Humidity   \n",
       "68  C0E38C4B-35C2-49AB-8E38-213D9F4D5E73                 Area D_Optimizer   \n",
       "69  E61E8781-5598-4A2E-BE93-CD06E8C8CA8B                  Area B_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                   NaN  54.200.148.162     False   \n",
       "2           NaN  StoredSignal                     %    Example Data     False   \n",
       "3           NaN  StoredSignal                     %    Example Data     False   \n",
       "4           NaN  StoredSignal                    °F    Example Data     False   \n",
       "..          ...           ...                   ...             ...       ...   \n",
       "65          NaN  StoredSignal                   NaN    Example Data     False   \n",
       "66          NaN  StoredSignal                    °F    Example Data     False   \n",
       "67          NaN  StoredSignal                     %    Example Data     False   \n",
       "68          NaN  StoredSignal                   NaN    Example Data     False   \n",
       "69          NaN  StoredSignal                    °F    Example Data     False   \n",
       "\n",
       "   Build Asset                    Build Path  \n",
       "0       Area I  My HVAC Units >> Facility #1  \n",
       "1       Area B  My HVAC Units >> Facility #1  \n",
       "2       Area C  My HVAC Units >> Facility #1  \n",
       "3       Area A  My HVAC Units >> Facility #1  \n",
       "4       Area B  My HVAC Units >> Facility #1  \n",
       "..         ...                           ...  \n",
       "65      Area H  My HVAC Units >> Facility #1  \n",
       "66      Area D  My HVAC Units >> Facility #1  \n",
       "67      Area K  My HVAC Units >> Facility #1  \n",
       "68      Area D  My HVAC Units >> Facility #1  \n",
       "69      Area B  My HVAC Units >> Facility #1  \n",
       "\n",
       "[70 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`. (The underscore will, by default, automatically be replaced with a space.)"
   ]
  },
  {
   "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;text-align: left;\">Errors were encountered. Look for entries in \"Build Result\" that are not \"Success\".</div><table><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 Phase</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 I</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</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 B</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</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 C</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</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 A</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</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 E</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</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 J</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</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 H</td><td style=\"text-align: left; vertical-align: top;\">HVAC</td><td style=\"text-align: left; vertical-align: top;\">Success</td><td style=\"text-align: left; vertical-align: top;\">Success</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">15</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><td style=\"text-align: left; vertical-align: top;\">Success</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">16</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;\">Building</td><td style=\"text-align: left; vertical-align: top;\">The following issues could not be resolved:<br>\"My HVAC Units >> Facility #1 >> Area F >> Temperature [on HVAC class]\": No matching metadata row found<br>\"My HVAC Units >> Facility #1 >> Area F >> Relative_Humidity [on HVAC class]\": No matching metadata row found</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">18</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><td style=\"text-align: left; vertical-align: top;\">Success</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">23</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><td style=\"text-align: left; vertical-align: top;\">Success</td></tr><tr style=\"background-color: #FFEEEE;\"><td style=\"vertical-align: top;\">24</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><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>CA0D8B24-61F4-456E-959D-5B4A524864F8</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>1</th>\n",
       "      <td>F3E3FAF9-2978-4CA4-AADC-0644EBB8DEE7</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>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 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>3</th>\n",
       "      <td>93A648DD-910D-49FC-BFCB-96677F48953D</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>4</th>\n",
       "      <td>72A1AD9F-139B-4D0A-9716-03535151C5AC</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>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 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>6</th>\n",
       "      <td>0690814E-8E52-4A89-BB46-A8A1033907D5</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>7</th>\n",
       "      <td>404E0E8E-259E-421D-9950-F1C8E3EE1CA3</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>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 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>9</th>\n",
       "      <td>A8696746-48D5-4FC8-8372-8DB6CCC4E520</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>10</th>\n",
       "      <td>EF686BC3-3A82-4345-9B94-E918BB022A03</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>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 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>12</th>\n",
       "      <td>45A5BF10-8F16-4CC1-8E3E-02BB1122C0C3</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>13</th>\n",
       "      <td>C8CDC158-EB7F-484E-8CA4-CE4D05B55ABF</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>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 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>15</th>\n",
       "      <td>C1BD66BF-D47D-433A-899D-7C5207D49CB2</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>16</th>\n",
       "      <td>F0EB4B76-3F96-483B-8521-062A17A2DFD4</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>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 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>18</th>\n",
       "      <td>F5EB3E99-3E87-4370-90EE-80A60DBB5D86</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>19</th>\n",
       "      <td>5FE26EC5-BF9E-4239-86DB-1E4B768CB7D0</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>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 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>21</th>\n",
       "      <td>6511D49F-5263-4C41-B9AE-EFF12FBF162B</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>22</th>\n",
       "      <td>01337ED2-2D5C-4677-B550-8FF3391A0E11</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>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 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>24</th>\n",
       "      <td>E928F72E-7816-44DA-9AD6-38446BDA4B3C</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>25</th>\n",
       "      <td>991C48B5-3E29-4EC7-A641-719CB13FBAD2</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>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 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",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>65FA19A3-09D1-4111-BC4B-CF9A75427CF2</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>A8A13CC3-7BBA-4DC8-8553-1FC717678105</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>675108D6-A365-41D7-B0F0-6AC45F0F4DB0</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>31</th>\n",
       "      <td>86AE1088-BD86-4F0C-924E-AFE536D1C525</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>32</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",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                      ID  Description          Type  \\\n",
       "0   CA0D8B24-61F4-456E-959D-5B4A524864F8          NaN  StoredSignal   \n",
       "1   F3E3FAF9-2978-4CA4-AADC-0644EBB8DEE7          NaN  StoredSignal   \n",
       "2                                    NaN          NaN         Asset   \n",
       "3   93A648DD-910D-49FC-BFCB-96677F48953D          NaN  StoredSignal   \n",
       "4   72A1AD9F-139B-4D0A-9716-03535151C5AC          NaN  StoredSignal   \n",
       "5                                    NaN          NaN         Asset   \n",
       "6   0690814E-8E52-4A89-BB46-A8A1033907D5          NaN  StoredSignal   \n",
       "7   404E0E8E-259E-421D-9950-F1C8E3EE1CA3          NaN  StoredSignal   \n",
       "8                                    NaN          NaN         Asset   \n",
       "9   A8696746-48D5-4FC8-8372-8DB6CCC4E520          NaN  StoredSignal   \n",
       "10  EF686BC3-3A82-4345-9B94-E918BB022A03          NaN  StoredSignal   \n",
       "11                                   NaN          NaN         Asset   \n",
       "12  45A5BF10-8F16-4CC1-8E3E-02BB1122C0C3          NaN  StoredSignal   \n",
       "13  C8CDC158-EB7F-484E-8CA4-CE4D05B55ABF          NaN  StoredSignal   \n",
       "14                                   NaN          NaN         Asset   \n",
       "15  C1BD66BF-D47D-433A-899D-7C5207D49CB2          NaN  StoredSignal   \n",
       "16  F0EB4B76-3F96-483B-8521-062A17A2DFD4          NaN  StoredSignal   \n",
       "17                                   NaN          NaN         Asset   \n",
       "18  F5EB3E99-3E87-4370-90EE-80A60DBB5D86          NaN  StoredSignal   \n",
       "19  5FE26EC5-BF9E-4239-86DB-1E4B768CB7D0          NaN  StoredSignal   \n",
       "20                                   NaN          NaN         Asset   \n",
       "21  6511D49F-5263-4C41-B9AE-EFF12FBF162B          NaN  StoredSignal   \n",
       "22  01337ED2-2D5C-4677-B550-8FF3391A0E11          NaN  StoredSignal   \n",
       "23                                   NaN          NaN         Asset   \n",
       "24  E928F72E-7816-44DA-9AD6-38446BDA4B3C          NaN  StoredSignal   \n",
       "25  991C48B5-3E29-4EC7-A641-719CB13FBAD2          NaN  StoredSignal   \n",
       "26                                   NaN          NaN         Asset   \n",
       "27  65FA19A3-09D1-4111-BC4B-CF9A75427CF2          NaN  StoredSignal   \n",
       "28  A8A13CC3-7BBA-4DC8-8553-1FC717678105          NaN  StoredSignal   \n",
       "29                                   NaN          NaN         Asset   \n",
       "30  675108D6-A365-41D7-B0F0-6AC45F0F4DB0          NaN  StoredSignal   \n",
       "31  86AE1088-BD86-4F0C-924E-AFE536D1C525          NaN  StoredSignal   \n",
       "32                                   NaN          NaN         Asset   \n",
       "\n",
       "   Value Unit Of Measure Datasource Name Archived           Referenced Name  \\\n",
       "0                      %    Example Data    False  Area I_Relative Humidity   \n",
       "1                     °F    Example Data    False        Area I_Temperature   \n",
       "2                    NaN             NaN      NaN                       NaN   \n",
       "3                      %    Example Data    False  Area B_Relative Humidity   \n",
       "4                     °F    Example Data    False        Area B_Temperature   \n",
       "5                    NaN             NaN      NaN                       NaN   \n",
       "6                      %    Example Data    False  Area C_Relative Humidity   \n",
       "7                     °F    Example Data    False        Area C_Temperature   \n",
       "8                    NaN             NaN      NaN                       NaN   \n",
       "9                      %    Example Data    False  Area A_Relative Humidity   \n",
       "10                    °F    Example Data    False        Area A_Temperature   \n",
       "11                   NaN             NaN      NaN                       NaN   \n",
       "12                     %    Example Data    False  Area E_Relative Humidity   \n",
       "13                    °F    Example Data    False        Area E_Temperature   \n",
       "14                   NaN             NaN      NaN                       NaN   \n",
       "15                     %    Example Data    False  Area J_Relative Humidity   \n",
       "16                    °F    Example Data    False        Area J_Temperature   \n",
       "17                   NaN             NaN      NaN                       NaN   \n",
       "18                     %    Example Data    False  Area H_Relative Humidity   \n",
       "19                    °F    Example Data    False        Area H_Temperature   \n",
       "20                   NaN             NaN      NaN                       NaN   \n",
       "21                     %    Example Data    False  Area G_Relative Humidity   \n",
       "22                    °F    Example Data    False        Area G_Temperature   \n",
       "23                   NaN             NaN      NaN                       NaN   \n",
       "24                     %    Example Data    False  Area Z_Relative Humidity   \n",
       "25                    °F    Example Data    False        Area Z_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                     %    Example Data    False  Area D_Relative Humidity   \n",
       "31                    °F    Example Data    False        Area D_Temperature   \n",
       "32                   NaN             NaN      NaN                       NaN   \n",
       "\n",
       "   Reference               Name   Asset  \\\n",
       "0       True  Relative Humidity  Area I   \n",
       "1       True        Temperature  Area I   \n",
       "2        NaN             Area I  Area I   \n",
       "3       True  Relative Humidity  Area B   \n",
       "4       True        Temperature  Area B   \n",
       "5        NaN             Area B  Area B   \n",
       "6       True  Relative Humidity  Area C   \n",
       "7       True        Temperature  Area C   \n",
       "8        NaN             Area C  Area C   \n",
       "9       True  Relative Humidity  Area A   \n",
       "10      True        Temperature  Area A   \n",
       "11       NaN             Area A  Area A   \n",
       "12      True  Relative Humidity  Area E   \n",
       "13      True        Temperature  Area E   \n",
       "14       NaN             Area E  Area E   \n",
       "15      True  Relative Humidity  Area J   \n",
       "16      True        Temperature  Area J   \n",
       "17       NaN             Area J  Area J   \n",
       "18      True  Relative Humidity  Area H   \n",
       "19      True        Temperature  Area H   \n",
       "20       NaN             Area H  Area H   \n",
       "21      True  Relative Humidity  Area G   \n",
       "22      True        Temperature  Area G   \n",
       "23       NaN             Area G  Area G   \n",
       "24      True  Relative Humidity  Area Z   \n",
       "25      True        Temperature  Area Z   \n",
       "26       NaN             Area Z  Area Z   \n",
       "27      True  Relative Humidity  Area K   \n",
       "28      True        Temperature  Area K   \n",
       "29       NaN             Area K  Area K   \n",
       "30      True  Relative Humidity  Area D   \n",
       "31      True        Temperature  Area D   \n",
       "32       NaN             Area D  Area D   \n",
       "\n",
       "                              Asset Object                          Path  \\\n",
       "0   My HVAC Units >> Facility #1 >> Area I  My HVAC Units >> Facility #1   \n",
       "1   My HVAC Units >> Facility #1 >> Area I  My HVAC Units >> Facility #1   \n",
       "2   My HVAC Units >> Facility #1 >> Area I  My HVAC Units >> Facility #1   \n",
       "3   My HVAC Units >> Facility #1 >> Area B  My HVAC Units >> Facility #1   \n",
       "4   My HVAC Units >> Facility #1 >> Area B  My HVAC Units >> Facility #1   \n",
       "5   My HVAC Units >> Facility #1 >> Area B  My HVAC Units >> Facility #1   \n",
       "6   My HVAC Units >> Facility #1 >> Area C  My HVAC Units >> Facility #1   \n",
       "7   My HVAC Units >> Facility #1 >> Area C  My HVAC Units >> Facility #1   \n",
       "8   My HVAC Units >> Facility #1 >> Area C  My HVAC Units >> Facility #1   \n",
       "9   My HVAC Units >> Facility #1 >> Area A  My HVAC Units >> Facility #1   \n",
       "10  My HVAC Units >> Facility #1 >> Area A  My HVAC Units >> Facility #1   \n",
       "11  My HVAC Units >> Facility #1 >> Area A  My HVAC Units >> Facility #1   \n",
       "12  My HVAC Units >> Facility #1 >> Area E  My HVAC Units >> Facility #1   \n",
       "13  My HVAC Units >> Facility #1 >> Area E  My HVAC Units >> Facility #1   \n",
       "14  My HVAC Units >> Facility #1 >> Area E  My HVAC Units >> Facility #1   \n",
       "15  My HVAC Units >> Facility #1 >> Area J  My HVAC Units >> Facility #1   \n",
       "16  My HVAC Units >> Facility #1 >> Area J  My HVAC Units >> Facility #1   \n",
       "17  My HVAC Units >> Facility #1 >> Area J  My HVAC Units >> Facility #1   \n",
       "18  My HVAC Units >> Facility #1 >> Area H  My HVAC Units >> Facility #1   \n",
       "19  My HVAC Units >> Facility #1 >> Area H  My HVAC Units >> Facility #1   \n",
       "20  My HVAC Units >> Facility #1 >> Area H  My HVAC Units >> Facility #1   \n",
       "21  My HVAC Units >> Facility #1 >> Area G  My HVAC Units >> Facility #1   \n",
       "22  My HVAC Units >> Facility #1 >> Area G  My HVAC Units >> Facility #1   \n",
       "23  My HVAC Units >> Facility #1 >> Area G  My HVAC Units >> Facility #1   \n",
       "24  My HVAC Units >> Facility #1 >> Area Z  My HVAC Units >> Facility #1   \n",
       "25  My HVAC Units >> Facility #1 >> Area Z  My HVAC Units >> Facility #1   \n",
       "26  My HVAC Units >> Facility #1 >> Area Z  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 D  My HVAC Units >> Facility #1   \n",
       "31  My HVAC Units >> Facility #1 >> Area D  My HVAC Units >> Facility #1   \n",
       "32  My HVAC Units >> Facility #1 >> Area D  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  "
      ]
     },
     "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;text-align: left;\">Pushed successfully to datasource <strong>Seeq Data Lab [Datasource ID: Seeq Data Lab]</strong> and scoped to workbook ID <strong>63E10897-4C87-4137-A356-930A96913F21</strong><br>Click the following link to see what you pushed in Seeq:<br><a href=\"http://localhost:34216/1C990074-22A1-4B35-8250-95CB1586B508/workbook/63E10897-4C87-4137-A356-930A96913F21/worksheet/60A3F238-3C29-4EBF-9F16-63154E734D75\" target=\"_new\">http://localhost:34216/1C990074-22A1-4B35-8250-95CB1586B508/workbook/63E10897-4C87-4137-A356-930A96913F21/worksheet/60A3F238-3C29-4EBF-9F16-63154E734D75</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>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",
       "      <th>Formula Parameters</th>\n",
       "      <th>Datasource Class</th>\n",
       "      <th>Datasource ID</th>\n",
       "      <th>Data ID</th>\n",
       "      <th>Push Result</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>74883C34-2583-4E40-B38B-809FD9306229</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>signal=CA0D8B24-61F4-456E-959D-5B4A524864F8</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area I &gt;&gt; Relative Humidity</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>AD2A580A-69A9-4D6C-9248-B401A9CD976A</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=F3E3FAF9-2978-4CA4-AADC-0644EBB8DEE7]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area I &gt;&gt; Temperature</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>A513CC9F-B274-4A0C-910A-B62CF9F366A8</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",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area I</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>85039223-0CB4-492B-AC88-7D4863286D5E</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=93A648DD-910D-49FC-BFCB-96677F48953D]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area B &gt;&gt; Relative Humidity</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>7928FCA5-EF07-4FA7-B058-B2E6B1CF6F7B</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=72A1AD9F-139B-4D0A-9716-03535151C5AC]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area B &gt;&gt; Temperature</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>A886D1F6-F04E-4BCE-83CD-D367A98F4656</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",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area B</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>49F63002-781F-4E78-8EBF-D3945DC803F0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=0690814E-8E52-4A89-BB46-A8A1033907D5]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area C &gt;&gt; Relative Humidity</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8BB6F0A9-129B-447A-BB62-D89B2AE432C8</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=404E0E8E-259E-421D-9950-F1C8E3EE1CA3]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area C &gt;&gt; Temperature</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>A7CAEFF6-E6A4-45E7-A390-7CA238141688</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",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area C</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>BA357F42-6C40-4FD8-A2D3-284D015DEEBE</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=A8696746-48D5-4FC8-8372-8DB6CCC4E520]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area A &gt;&gt; Relative Humidity</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>6CC7C2D3-35B9-4322-9788-0ED252AC7AA1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=EF686BC3-3A82-4345-9B94-E918BB022A03]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area A &gt;&gt; Temperature</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>9F8F92F2-7477-423D-AECA-E74E22C55B59</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",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area A</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>FD6BB8D6-4AE5-4B63-BF14-73E987E6DFCB</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=45A5BF10-8F16-4CC1-8E3E-02BB1122C0C3]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area E &gt;&gt; Relative Humidity</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>D5D7B021-9D3E-4610-A423-974AD23F2FDC</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=C8CDC158-EB7F-484E-8CA4-CE4D05B55ABF]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area E &gt;&gt; Temperature</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>5D82B9BD-31AB-4A89-B16C-47D92FB35EA8</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",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area E</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>E68D56CC-A4FA-4152-BE45-9779B7CDE909</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=C1BD66BF-D47D-433A-899D-7C5207D49CB2]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area J &gt;&gt; Relative Humidity</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>983F91FE-F899-4DB3-8B3F-EC524D639ECF</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=F0EB4B76-3F96-483B-8521-062A17A2DFD4]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area J &gt;&gt; Temperature</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>69C6363A-77C5-4C65-A2DC-5FA4ECF62D30</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",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area J</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>2FD12D67-4BBE-4C28-A227-496C494645C3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=F5EB3E99-3E87-4370-90EE-80A60DBB5D86]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area H &gt;&gt; Relative Humidity</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>68BBF95F-C39D-4FA7-AF96-E971E3806F90</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=5FE26EC5-BF9E-4239-86DB-1E4B768CB7D0]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area H &gt;&gt; Temperature</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>036DA388-9195-4903-9154-8ED5A440FB5A</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",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area H</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>39189DD1-8551-4CD7-8279-BD77BD39EEBD</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=6511D49F-5263-4C41-B9AE-EFF12FBF162B]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G &gt;&gt; Relative Humidity</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>15313803-BF2A-409E-BC51-47EF815C6F0C</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=01337ED2-2D5C-4677-B550-8FF3391A0E11]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G &gt;&gt; Temperature</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>72D97EAF-D2C2-423C-9C45-591557226FCF</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",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area G</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>0EFA4D21-5EFE-45FA-8300-2B7948E91BB1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=E928F72E-7816-44DA-9AD6-38446BDA4B3C]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area Z &gt;&gt; Relative Humidity</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>63C20E16-D87B-47CE-BC27-7A204E3A1776</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=991C48B5-3E29-4EC7-A641-719CB13FBAD2]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area Z &gt;&gt; Temperature</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>0FF4676B-F90D-4382-884B-33DAF701DE88</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",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area Z</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>47228584-6887-4DA7-9929-000C079777EA</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=65FA19A3-09D1-4111-BC4B-CF9A75427CF2]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area K &gt;&gt; Relative Humidity</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>126D670D-E138-4D01-9ADE-AA349BA612E3</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=A8A13CC3-7BBA-4DC8-8553-1FC717678105]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area K &gt;&gt; Temperature</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>67D9FD64-C418-40AF-AF8A-BE77D31FBDE9</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",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area K</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>B22513D4-8389-4EE9-B5C2-54C4BA884D16</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=675108D6-A365-41D7-B0F0-6AC45F0F4DB0]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area D &gt;&gt; Relative Humidity</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>19A39CFE-2608-4E2B-9493-B1D14AED5276</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</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",
       "      <td>[signal=86AE1088-BD86-4F0C-924E-AFE536D1C525]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area D &gt;&gt; Temperature</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>FA1C503B-79C8-4E1F-9B63-3097860855F7</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",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units &gt;&gt; Facility #1 &gt;&gt; Area D</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                      ID Description              Type  \\\n",
       "0   74883C34-2583-4E40-B38B-809FD9306229         NaN  CalculatedSignal   \n",
       "1   AD2A580A-69A9-4D6C-9248-B401A9CD976A         NaN  CalculatedSignal   \n",
       "2   A513CC9F-B274-4A0C-910A-B62CF9F366A8         NaN             Asset   \n",
       "3   85039223-0CB4-492B-AC88-7D4863286D5E         NaN  CalculatedSignal   \n",
       "4   7928FCA5-EF07-4FA7-B058-B2E6B1CF6F7B         NaN  CalculatedSignal   \n",
       "5   A886D1F6-F04E-4BCE-83CD-D367A98F4656         NaN             Asset   \n",
       "6   49F63002-781F-4E78-8EBF-D3945DC803F0         NaN  CalculatedSignal   \n",
       "7   8BB6F0A9-129B-447A-BB62-D89B2AE432C8         NaN  CalculatedSignal   \n",
       "8   A7CAEFF6-E6A4-45E7-A390-7CA238141688         NaN             Asset   \n",
       "9   BA357F42-6C40-4FD8-A2D3-284D015DEEBE         NaN  CalculatedSignal   \n",
       "10  6CC7C2D3-35B9-4322-9788-0ED252AC7AA1         NaN  CalculatedSignal   \n",
       "11  9F8F92F2-7477-423D-AECA-E74E22C55B59         NaN             Asset   \n",
       "12  FD6BB8D6-4AE5-4B63-BF14-73E987E6DFCB         NaN  CalculatedSignal   \n",
       "13  D5D7B021-9D3E-4610-A423-974AD23F2FDC         NaN  CalculatedSignal   \n",
       "14  5D82B9BD-31AB-4A89-B16C-47D92FB35EA8         NaN             Asset   \n",
       "15  E68D56CC-A4FA-4152-BE45-9779B7CDE909         NaN  CalculatedSignal   \n",
       "16  983F91FE-F899-4DB3-8B3F-EC524D639ECF         NaN  CalculatedSignal   \n",
       "17  69C6363A-77C5-4C65-A2DC-5FA4ECF62D30         NaN             Asset   \n",
       "18  2FD12D67-4BBE-4C28-A227-496C494645C3         NaN  CalculatedSignal   \n",
       "19  68BBF95F-C39D-4FA7-AF96-E971E3806F90         NaN  CalculatedSignal   \n",
       "20  036DA388-9195-4903-9154-8ED5A440FB5A         NaN             Asset   \n",
       "21  39189DD1-8551-4CD7-8279-BD77BD39EEBD         NaN  CalculatedSignal   \n",
       "22  15313803-BF2A-409E-BC51-47EF815C6F0C         NaN  CalculatedSignal   \n",
       "23  72D97EAF-D2C2-423C-9C45-591557226FCF         NaN             Asset   \n",
       "24  0EFA4D21-5EFE-45FA-8300-2B7948E91BB1         NaN  CalculatedSignal   \n",
       "25  63C20E16-D87B-47CE-BC27-7A204E3A1776         NaN  CalculatedSignal   \n",
       "26  0FF4676B-F90D-4382-884B-33DAF701DE88         NaN             Asset   \n",
       "27  47228584-6887-4DA7-9929-000C079777EA         NaN  CalculatedSignal   \n",
       "28  126D670D-E138-4D01-9ADE-AA349BA612E3         NaN  CalculatedSignal   \n",
       "29  67D9FD64-C418-40AF-AF8A-BE77D31FBDE9         NaN             Asset   \n",
       "30  B22513D4-8389-4EE9-B5C2-54C4BA884D16         NaN  CalculatedSignal   \n",
       "31  19A39CFE-2608-4E2B-9493-B1D14AED5276         NaN  CalculatedSignal   \n",
       "32  FA1C503B-79C8-4E1F-9B63-3097860855F7         NaN             Asset   \n",
       "\n",
       "   Value Unit Of Measure Datasource Name Archived           Referenced Name  \\\n",
       "0                      %    Example Data    False  Area I_Relative Humidity   \n",
       "1                     °F    Example Data    False        Area I_Temperature   \n",
       "2                    NaN             NaN      NaN                       NaN   \n",
       "3                      %    Example Data    False  Area B_Relative Humidity   \n",
       "4                     °F    Example Data    False        Area B_Temperature   \n",
       "5                    NaN             NaN      NaN                       NaN   \n",
       "6                      %    Example Data    False  Area C_Relative Humidity   \n",
       "7                     °F    Example Data    False        Area C_Temperature   \n",
       "8                    NaN             NaN      NaN                       NaN   \n",
       "9                      %    Example Data    False  Area A_Relative Humidity   \n",
       "10                    °F    Example Data    False        Area A_Temperature   \n",
       "11                   NaN             NaN      NaN                       NaN   \n",
       "12                     %    Example Data    False  Area E_Relative Humidity   \n",
       "13                    °F    Example Data    False        Area E_Temperature   \n",
       "14                   NaN             NaN      NaN                       NaN   \n",
       "15                     %    Example Data    False  Area J_Relative Humidity   \n",
       "16                    °F    Example Data    False        Area J_Temperature   \n",
       "17                   NaN             NaN      NaN                       NaN   \n",
       "18                     %    Example Data    False  Area H_Relative Humidity   \n",
       "19                    °F    Example Data    False        Area H_Temperature   \n",
       "20                   NaN             NaN      NaN                       NaN   \n",
       "21                     %    Example Data    False  Area G_Relative Humidity   \n",
       "22                    °F    Example Data    False        Area G_Temperature   \n",
       "23                   NaN             NaN      NaN                       NaN   \n",
       "24                     %    Example Data    False  Area Z_Relative Humidity   \n",
       "25                    °F    Example Data    False        Area Z_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                     %    Example Data    False  Area D_Relative Humidity   \n",
       "31                    °F    Example Data    False        Area D_Temperature   \n",
       "32                   NaN             NaN      NaN                       NaN   \n",
       "\n",
       "   Reference               Name   Asset  \\\n",
       "0       True  Relative Humidity  Area I   \n",
       "1       True        Temperature  Area I   \n",
       "2        NaN             Area I  Area I   \n",
       "3       True  Relative Humidity  Area B   \n",
       "4       True        Temperature  Area B   \n",
       "5        NaN             Area B  Area B   \n",
       "6       True  Relative Humidity  Area C   \n",
       "7       True        Temperature  Area C   \n",
       "8        NaN             Area C  Area C   \n",
       "9       True  Relative Humidity  Area A   \n",
       "10      True        Temperature  Area A   \n",
       "11       NaN             Area A  Area A   \n",
       "12      True  Relative Humidity  Area E   \n",
       "13      True        Temperature  Area E   \n",
       "14       NaN             Area E  Area E   \n",
       "15      True  Relative Humidity  Area J   \n",
       "16      True        Temperature  Area J   \n",
       "17       NaN             Area J  Area J   \n",
       "18      True  Relative Humidity  Area H   \n",
       "19      True        Temperature  Area H   \n",
       "20       NaN             Area H  Area H   \n",
       "21      True  Relative Humidity  Area G   \n",
       "22      True        Temperature  Area G   \n",
       "23       NaN             Area G  Area G   \n",
       "24      True  Relative Humidity  Area Z   \n",
       "25      True        Temperature  Area Z   \n",
       "26       NaN             Area Z  Area Z   \n",
       "27      True  Relative Humidity  Area K   \n",
       "28      True        Temperature  Area K   \n",
       "29       NaN             Area K  Area K   \n",
       "30      True  Relative Humidity  Area D   \n",
       "31      True        Temperature  Area D   \n",
       "32       NaN             Area D  Area D   \n",
       "\n",
       "                              Asset Object                          Path  \\\n",
       "0   My HVAC Units >> Facility #1 >> Area I  My HVAC Units >> Facility #1   \n",
       "1   My HVAC Units >> Facility #1 >> Area I  My HVAC Units >> Facility #1   \n",
       "2   My HVAC Units >> Facility #1 >> Area I  My HVAC Units >> Facility #1   \n",
       "3   My HVAC Units >> Facility #1 >> Area B  My HVAC Units >> Facility #1   \n",
       "4   My HVAC Units >> Facility #1 >> Area B  My HVAC Units >> Facility #1   \n",
       "5   My HVAC Units >> Facility #1 >> Area B  My HVAC Units >> Facility #1   \n",
       "6   My HVAC Units >> Facility #1 >> Area C  My HVAC Units >> Facility #1   \n",
       "7   My HVAC Units >> Facility #1 >> Area C  My HVAC Units >> Facility #1   \n",
       "8   My HVAC Units >> Facility #1 >> Area C  My HVAC Units >> Facility #1   \n",
       "9   My HVAC Units >> Facility #1 >> Area A  My HVAC Units >> Facility #1   \n",
       "10  My HVAC Units >> Facility #1 >> Area A  My HVAC Units >> Facility #1   \n",
       "11  My HVAC Units >> Facility #1 >> Area A  My HVAC Units >> Facility #1   \n",
       "12  My HVAC Units >> Facility #1 >> Area E  My HVAC Units >> Facility #1   \n",
       "13  My HVAC Units >> Facility #1 >> Area E  My HVAC Units >> Facility #1   \n",
       "14  My HVAC Units >> Facility #1 >> Area E  My HVAC Units >> Facility #1   \n",
       "15  My HVAC Units >> Facility #1 >> Area J  My HVAC Units >> Facility #1   \n",
       "16  My HVAC Units >> Facility #1 >> Area J  My HVAC Units >> Facility #1   \n",
       "17  My HVAC Units >> Facility #1 >> Area J  My HVAC Units >> Facility #1   \n",
       "18  My HVAC Units >> Facility #1 >> Area H  My HVAC Units >> Facility #1   \n",
       "19  My HVAC Units >> Facility #1 >> Area H  My HVAC Units >> Facility #1   \n",
       "20  My HVAC Units >> Facility #1 >> Area H  My HVAC Units >> Facility #1   \n",
       "21  My HVAC Units >> Facility #1 >> Area G  My HVAC Units >> Facility #1   \n",
       "22  My HVAC Units >> Facility #1 >> Area G  My HVAC Units >> Facility #1   \n",
       "23  My HVAC Units >> Facility #1 >> Area G  My HVAC Units >> Facility #1   \n",
       "24  My HVAC Units >> Facility #1 >> Area Z  My HVAC Units >> Facility #1   \n",
       "25  My HVAC Units >> Facility #1 >> Area Z  My HVAC Units >> Facility #1   \n",
       "26  My HVAC Units >> Facility #1 >> Area Z  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 D  My HVAC Units >> Facility #1   \n",
       "31  My HVAC Units >> Facility #1 >> Area D  My HVAC Units >> Facility #1   \n",
       "32  My HVAC Units >> Facility #1 >> Area D  My HVAC Units >> Facility #1   \n",
       "\n",
       "   Template Build Result                             Formula Parameters  \\\n",
       "0      HVAC      Success    signal=CA0D8B24-61F4-456E-959D-5B4A524864F8   \n",
       "1      HVAC      Success  [signal=F3E3FAF9-2978-4CA4-AADC-0644EBB8DEE7]   \n",
       "2      HVAC      Success                                            NaN   \n",
       "3      HVAC      Success  [signal=93A648DD-910D-49FC-BFCB-96677F48953D]   \n",
       "4      HVAC      Success  [signal=72A1AD9F-139B-4D0A-9716-03535151C5AC]   \n",
       "5      HVAC      Success                                            NaN   \n",
       "6      HVAC      Success  [signal=0690814E-8E52-4A89-BB46-A8A1033907D5]   \n",
       "7      HVAC      Success  [signal=404E0E8E-259E-421D-9950-F1C8E3EE1CA3]   \n",
       "8      HVAC      Success                                            NaN   \n",
       "9      HVAC      Success  [signal=A8696746-48D5-4FC8-8372-8DB6CCC4E520]   \n",
       "10     HVAC      Success  [signal=EF686BC3-3A82-4345-9B94-E918BB022A03]   \n",
       "11     HVAC      Success                                            NaN   \n",
       "12     HVAC      Success  [signal=45A5BF10-8F16-4CC1-8E3E-02BB1122C0C3]   \n",
       "13     HVAC      Success  [signal=C8CDC158-EB7F-484E-8CA4-CE4D05B55ABF]   \n",
       "14     HVAC      Success                                            NaN   \n",
       "15     HVAC      Success  [signal=C1BD66BF-D47D-433A-899D-7C5207D49CB2]   \n",
       "16     HVAC      Success  [signal=F0EB4B76-3F96-483B-8521-062A17A2DFD4]   \n",
       "17     HVAC      Success                                            NaN   \n",
       "18     HVAC      Success  [signal=F5EB3E99-3E87-4370-90EE-80A60DBB5D86]   \n",
       "19     HVAC      Success  [signal=5FE26EC5-BF9E-4239-86DB-1E4B768CB7D0]   \n",
       "20     HVAC      Success                                            NaN   \n",
       "21     HVAC      Success  [signal=6511D49F-5263-4C41-B9AE-EFF12FBF162B]   \n",
       "22     HVAC      Success  [signal=01337ED2-2D5C-4677-B550-8FF3391A0E11]   \n",
       "23     HVAC      Success                                            NaN   \n",
       "24     HVAC      Success  [signal=E928F72E-7816-44DA-9AD6-38446BDA4B3C]   \n",
       "25     HVAC      Success  [signal=991C48B5-3E29-4EC7-A641-719CB13FBAD2]   \n",
       "26     HVAC      Success                                            NaN   \n",
       "27     HVAC      Success  [signal=65FA19A3-09D1-4111-BC4B-CF9A75427CF2]   \n",
       "28     HVAC      Success  [signal=A8A13CC3-7BBA-4DC8-8553-1FC717678105]   \n",
       "29     HVAC      Success                                            NaN   \n",
       "30     HVAC      Success  [signal=675108D6-A365-41D7-B0F0-6AC45F0F4DB0]   \n",
       "31     HVAC      Success  [signal=86AE1088-BD86-4F0C-924E-AFE536D1C525]   \n",
       "32     HVAC      Success                                            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",
       "\n",
       "                                                                                                        Data ID  \\\n",
       "0   [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area I >> Relative Humidity   \n",
       "1         [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area I >> Temperature   \n",
       "2                         [63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units >> Facility #1 >> Area I   \n",
       "3   [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area B >> Relative Humidity   \n",
       "4         [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area B >> Temperature   \n",
       "5                         [63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units >> Facility #1 >> Area B   \n",
       "6   [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area C >> Relative Humidity   \n",
       "7         [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area C >> Temperature   \n",
       "8                         [63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units >> Facility #1 >> Area C   \n",
       "9   [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area A >> Relative Humidity   \n",
       "10        [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area A >> Temperature   \n",
       "11                        [63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units >> Facility #1 >> Area A   \n",
       "12  [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area E >> Relative Humidity   \n",
       "13        [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area E >> Temperature   \n",
       "14                        [63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units >> Facility #1 >> Area E   \n",
       "15  [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area J >> Relative Humidity   \n",
       "16        [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area J >> Temperature   \n",
       "17                        [63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units >> Facility #1 >> Area J   \n",
       "18  [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area H >> Relative Humidity   \n",
       "19        [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area H >> Temperature   \n",
       "20                        [63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units >> Facility #1 >> Area H   \n",
       "21  [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area G >> Relative Humidity   \n",
       "22        [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area G >> Temperature   \n",
       "23                        [63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units >> Facility #1 >> Area G   \n",
       "24  [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area Z >> Relative Humidity   \n",
       "25        [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area Z >> Temperature   \n",
       "26                        [63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units >> Facility #1 >> Area Z   \n",
       "27  [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area K >> Relative Humidity   \n",
       "28        [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area K >> Temperature   \n",
       "29                        [63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units >> Facility #1 >> Area K   \n",
       "30  [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area D >> Relative Humidity   \n",
       "31        [63E10897-4C87-4137-A356-930A96913F21] {Signal} My HVAC Units >> Facility #1 >> Area D >> Temperature   \n",
       "32                        [63E10897-4C87-4137-A356-930A96913F21] {Asset} My HVAC Units >> Facility #1 >> Area D   \n",
       "\n",
       "   Push Result  \n",
       "0      Success  \n",
       "1      Success  \n",
       "2      Success  \n",
       "3      Success  \n",
       "4      Success  \n",
       "5      Success  \n",
       "6      Success  \n",
       "7      Success  \n",
       "8      Success  \n",
       "9      Success  \n",
       "10     Success  \n",
       "11     Success  \n",
       "12     Success  \n",
       "13     Success  \n",
       "14     Success  \n",
       "15     Success  \n",
       "16     Success  \n",
       "17     Success  \n",
       "18     Success  \n",
       "19     Success  \n",
       "20     Success  \n",
       "21     Success  \n",
       "22     Success  \n",
       "23     Success  \n",
       "24     Success  \n",
       "25     Success  \n",
       "26     Success  \n",
       "27     Success  \n",
       "28     Success  \n",
       "29     Success  \n",
       "30     Success  \n",
       "31     Success  \n",
       "32     Success  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "spy.push(metadata=build_df)"
   ]
  },
  {
   "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 _Data Lab >> Data Lab Analysis_, 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(metadata),\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(metadata),\n",
    "                \n",
    "                # We can also reference other attributes in this derived class\n",
    "                '$threshold': self.Hot_Threshold(metadata)\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;text-align: left;\">Pushed successfully to datasource <strong>Seeq Data Lab [Datasource ID: Seeq Data Lab]</strong> and scoped to workbook ID <strong>63E10897-4C87-4137-A356-930A96913F21</strong><br>Click the following link to see what you pushed in Seeq:<br><a href=\"http://localhost:34216/1C990074-22A1-4B35-8250-95CB1586B508/workbook/63E10897-4C87-4137-A356-930A96913F21/worksheet/60A3F238-3C29-4EBF-9F16-63154E734D75\" target=\"_new\">http://localhost:34216/1C990074-22A1-4B35-8250-95CB1586B508/workbook/63E10897-4C87-4137-A356-930A96913F21/worksheet/60A3F238-3C29-4EBF-9F16-63154E734D75</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>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>Formula Parameters</th>\n",
       "      <th>Datasource Class</th>\n",
       "      <th>Datasource ID</th>\n",
       "      <th>Data ID</th>\n",
       "      <th>Push Result</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 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 With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>9BDDDAAB-C8BF-478B-AC98-76FA8D1A12B7</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>[63E10897-4C87-4137-A356-930A96913F21] {Scalar...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>NaN</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 With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>74883C34-2583-4E40-B38B-809FD9306229</td>\n",
       "      <td>NaN</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>[signal=CA0D8B24-61F4-456E-959D-5B4A524864F8]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>NaN</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 With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>AD2A580A-69A9-4D6C-9248-B401A9CD976A</td>\n",
       "      <td>NaN</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>[signal=F3E3FAF9-2978-4CA4-AADC-0644EBB8DEE7]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal...</td>\n",
       "      <td>Success</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 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 With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>9D93389E-6E8C-4CFE-8AEA-7E104440C9D2</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[temp=AD2A580A-69A9-4D6C-9248-B401A9CD976A]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal...</td>\n",
       "      <td>Success</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 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 With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>BCB3118D-2D0E-4CB4-9953-9DF2B6F0DCFB</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[temp=AD2A580A-69A9-4D6C-9248-B401A9CD976A, th...</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Condit...</td>\n",
       "      <td>Success</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",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>62</th>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>NaN</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 With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>B22513D4-8389-4EE9-B5C2-54C4BA884D16</td>\n",
       "      <td>NaN</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>[signal=675108D6-A365-41D7-B0F0-6AC45F0F4DB0]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63</th>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>NaN</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 With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>19A39CFE-2608-4E2B-9493-B1D14AED5276</td>\n",
       "      <td>NaN</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>[signal=86AE1088-BD86-4F0C-924E-AFE536D1C525]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64</th>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>$temp.lowPassFilter(150min, 3min, 333).derivat...</td>\n",
       "      <td>Temperature Rate Of Change</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 With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>D831DDA3-32B0-4A14-9638-56E3D2D2BA05</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[temp=19A39CFE-2608-4E2B-9493-B1D14AED5276]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal...</td>\n",
       "      <td>Success</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 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 With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>DC7EC2E7-ACA7-424F-A7CF-E8F104979D58</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[temp=19A39CFE-2608-4E2B-9493-B1D14AED5276, th...</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Condit...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>66</th>\n",
       "      <td>Asset</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 With Calcs</td>\n",
       "      <td>Success</td>\n",
       "      <td>FA1C503B-79C8-4E1F-9B63-3097860855F7</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>[63E10897-4C87-4137-A356-930A96913F21] {Asset}...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>67 rows × 20 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                   Type                                            Formula  \\\n",
       "0      CalculatedScalar                                                80F   \n",
       "1      CalculatedSignal                                                NaN   \n",
       "2      CalculatedSignal                                                NaN   \n",
       "3      CalculatedSignal  $temp.lowPassFilter(150min, 3min, 333).derivat...   \n",
       "4   CalculatedCondition       $temp.valueSearch(isGreaterThan($threshold))   \n",
       "..                  ...                                                ...   \n",
       "62     CalculatedSignal                                                NaN   \n",
       "63     CalculatedSignal                                                NaN   \n",
       "64     CalculatedSignal  $temp.lowPassFilter(150min, 3min, 333).derivat...   \n",
       "65  CalculatedCondition       $temp.valueSearch(isGreaterThan($threshold))   \n",
       "66                Asset                                                NaN   \n",
       "\n",
       "                          Name   Asset  \\\n",
       "0                Hot Threshold  Area I   \n",
       "1            Relative Humidity  Area I   \n",
       "2                  Temperature  Area I   \n",
       "3   Temperature Rate Of Change  Area I   \n",
       "4                      Too Hot  Area I   \n",
       "..                         ...     ...   \n",
       "62           Relative Humidity  Area D   \n",
       "63                 Temperature  Area D   \n",
       "64  Temperature Rate Of Change  Area D   \n",
       "65                     Too Hot  Area D   \n",
       "66                      Area D  Area D   \n",
       "\n",
       "                              Asset Object                          Path  \\\n",
       "0   My HVAC Units >> Facility #1 >> Area I  My HVAC Units >> Facility #1   \n",
       "1   My HVAC Units >> Facility #1 >> Area I  My HVAC Units >> Facility #1   \n",
       "2   My HVAC Units >> Facility #1 >> Area I  My HVAC Units >> Facility #1   \n",
       "3   My HVAC Units >> Facility #1 >> Area I  My HVAC Units >> Facility #1   \n",
       "4   My HVAC Units >> Facility #1 >> Area I  My HVAC Units >> Facility #1   \n",
       "..                                     ...                           ...   \n",
       "62  My HVAC Units >> Facility #1 >> Area D  My HVAC Units >> Facility #1   \n",
       "63  My HVAC Units >> Facility #1 >> Area D  My HVAC Units >> Facility #1   \n",
       "64  My HVAC Units >> Facility #1 >> Area D  My HVAC Units >> Facility #1   \n",
       "65  My HVAC Units >> Facility #1 >> Area D  My HVAC Units >> Facility #1   \n",
       "66  My HVAC Units >> Facility #1 >> Area D  My HVAC Units >> Facility #1   \n",
       "\n",
       "           Template Build Result                                    ID  \\\n",
       "0   HVAC With Calcs      Success  9BDDDAAB-C8BF-478B-AC98-76FA8D1A12B7   \n",
       "1   HVAC With Calcs      Success  74883C34-2583-4E40-B38B-809FD9306229   \n",
       "2   HVAC With Calcs      Success  AD2A580A-69A9-4D6C-9248-B401A9CD976A   \n",
       "3   HVAC With Calcs      Success  9D93389E-6E8C-4CFE-8AEA-7E104440C9D2   \n",
       "4   HVAC With Calcs      Success  BCB3118D-2D0E-4CB4-9953-9DF2B6F0DCFB   \n",
       "..              ...          ...                                   ...   \n",
       "62  HVAC With Calcs      Success  B22513D4-8389-4EE9-B5C2-54C4BA884D16   \n",
       "63  HVAC With Calcs      Success  19A39CFE-2608-4E2B-9493-B1D14AED5276   \n",
       "64  HVAC With Calcs      Success  D831DDA3-32B0-4A14-9638-56E3D2D2BA05   \n",
       "65  HVAC With Calcs      Success  DC7EC2E7-ACA7-424F-A7CF-E8F104979D58   \n",
       "66  HVAC With Calcs      Success  FA1C503B-79C8-4E1F-9B63-3097860855F7   \n",
       "\n",
       "   Description Value Unit Of Measure Datasource Name Archived  \\\n",
       "0          NaN                   NaN             NaN      NaN   \n",
       "1          NaN                     %    Example Data    False   \n",
       "2          NaN                    °F    Example Data    False   \n",
       "3          NaN                   NaN             NaN      NaN   \n",
       "4          NaN                   NaN             NaN      NaN   \n",
       "..         ...                   ...             ...      ...   \n",
       "62         NaN                     %    Example Data    False   \n",
       "63         NaN                    °F    Example Data    False   \n",
       "64         NaN                   NaN             NaN      NaN   \n",
       "65         NaN                   NaN             NaN      NaN   \n",
       "66         NaN                   NaN             NaN      NaN   \n",
       "\n",
       "             Referenced Name Reference  \\\n",
       "0                        NaN       NaN   \n",
       "1   Area I_Relative Humidity      True   \n",
       "2         Area I_Temperature      True   \n",
       "3                        NaN       NaN   \n",
       "4                        NaN       NaN   \n",
       "..                       ...       ...   \n",
       "62  Area D_Relative Humidity      True   \n",
       "63        Area D_Temperature      True   \n",
       "64                       NaN       NaN   \n",
       "65                       NaN       NaN   \n",
       "66                       NaN       NaN   \n",
       "\n",
       "                                   Formula Parameters Datasource Class  \\\n",
       "0                                                 NaN    Seeq Data Lab   \n",
       "1       [signal=CA0D8B24-61F4-456E-959D-5B4A524864F8]    Seeq Data Lab   \n",
       "2       [signal=F3E3FAF9-2978-4CA4-AADC-0644EBB8DEE7]    Seeq Data Lab   \n",
       "3         [temp=AD2A580A-69A9-4D6C-9248-B401A9CD976A]    Seeq Data Lab   \n",
       "4   [temp=AD2A580A-69A9-4D6C-9248-B401A9CD976A, th...    Seeq Data Lab   \n",
       "..                                                ...              ...   \n",
       "62      [signal=675108D6-A365-41D7-B0F0-6AC45F0F4DB0]    Seeq Data Lab   \n",
       "63      [signal=86AE1088-BD86-4F0C-924E-AFE536D1C525]    Seeq Data Lab   \n",
       "64        [temp=19A39CFE-2608-4E2B-9493-B1D14AED5276]    Seeq Data Lab   \n",
       "65  [temp=19A39CFE-2608-4E2B-9493-B1D14AED5276, th...    Seeq Data Lab   \n",
       "66                                                NaN    Seeq Data Lab   \n",
       "\n",
       "    Datasource ID                                            Data ID  \\\n",
       "0   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Scalar...   \n",
       "1   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Signal...   \n",
       "2   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Signal...   \n",
       "3   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Signal...   \n",
       "4   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Condit...   \n",
       "..            ...                                                ...   \n",
       "62  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Signal...   \n",
       "63  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Signal...   \n",
       "64  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Signal...   \n",
       "65  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Condit...   \n",
       "66  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Asset}...   \n",
       "\n",
       "   Push Result  \n",
       "0      Success  \n",
       "1      Success  \n",
       "2      Success  \n",
       "3      Success  \n",
       "4      Success  \n",
       "..         ...  \n",
       "62     Success  \n",
       "63     Success  \n",
       "64     Success  \n",
       "65     Success  \n",
       "66     Success  \n",
       "\n",
       "[67 rows x 20 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)"
   ]
  },
  {
   "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;text-align: left;\">Query successful</div><table><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: left;\">Time</td><td style=\"background-color: #EEFFEE; text-align: right;\">Count</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.02</td><td style=\"text-align: right; vertical-align: top;\">8</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>72A1AD9F-139B-4D0A-9716-03535151C5AC</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>1</th>\n",
       "      <td>FED5D114-BC4A-4FC6-B4D9-67AC9330A24F</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",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>EF686BC3-3A82-4345-9B94-E918BB022A03</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>3</th>\n",
       "      <td>6470A54F-73CC-4D1C-9F98-D2FD462803C5</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>4</th>\n",
       "      <td>404E0E8E-259E-421D-9950-F1C8E3EE1CA3</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>5</th>\n",
       "      <td>85D111A3-AEC2-4626-8DFB-02DA4CC5E7B5</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>6</th>\n",
       "      <td>FCE20C34-372F-4EB6-842A-B6B8C7940781</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>7</th>\n",
       "      <td>86AE1088-BD86-4F0C-924E-AFE536D1C525</td>\n",
       "      <td>Area D_Temperature</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                     ID                     Name  \\\n",
       "0  72A1AD9F-139B-4D0A-9716-03535151C5AC       Area B_Temperature   \n",
       "1  FED5D114-BC4A-4FC6-B4D9-67AC9330A24F  Area A_Compressor Power   \n",
       "2  EF686BC3-3A82-4345-9B94-E918BB022A03       Area A_Temperature   \n",
       "3  6470A54F-73CC-4D1C-9F98-D2FD462803C5  Area C_Compressor Power   \n",
       "4  404E0E8E-259E-421D-9950-F1C8E3EE1CA3       Area C_Temperature   \n",
       "5  85D111A3-AEC2-4626-8DFB-02DA4CC5E7B5  Area B_Compressor Power   \n",
       "6  FCE20C34-372F-4EB6-842A-B6B8C7940781  Area D_Compressor Power   \n",
       "7  86AE1088-BD86-4F0C-924E-AFE536D1C525       Area D_Temperature   \n",
       "\n",
       "           Build Path     Build Asset    Compressor  \n",
       "0  Refrigerator Units             NaN           NaN  \n",
       "1  Refrigerator Units  Refrigerator 1  Compressor 1  \n",
       "2  Refrigerator Units  Refrigerator 1           NaN  \n",
       "3  Refrigerator Units  Refrigerator 2  Compressor 3  \n",
       "4  Refrigerator Units  Refrigerator 2           NaN  \n",
       "5  Refrigerator Units  Refrigerator 1  Compressor 2  \n",
       "6  Refrigerator Units  Refrigerator 2  Compressor 4  \n",
       "7  Refrigerator Units             NaN           NaN  "
      ]
     },
     "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.at[metadata_df['Name'] == 'Area A_Temperature', 'Build Asset'] = 'Refrigerator 1'\n",
    "metadata_df.at[metadata_df['Name'] == 'Area A_Compressor Power', 'Build Asset'] = 'Refrigerator 1'\n",
    "metadata_df.at[metadata_df['Name'] == 'Area A_Compressor Power', 'Compressor'] = 'Compressor 1'\n",
    "metadata_df.at[metadata_df['Name'] == 'Area B_Compressor Power', 'Build Asset'] = 'Refrigerator 1'\n",
    "metadata_df.at[metadata_df['Name'] == 'Area B_Compressor Power', 'Compressor'] = 'Compressor 2'\n",
    "metadata_df.at[metadata_df['Name'] == 'Area C_Temperature', 'Build Asset'] = 'Refrigerator 2'\n",
    "metadata_df.at[metadata_df['Name'] == 'Area C_Compressor Power', 'Build Asset'] = 'Refrigerator 2'\n",
    "metadata_df.at[metadata_df['Name'] == 'Area C_Compressor Power', 'Compressor'] = 'Compressor 3'\n",
    "metadata_df.at[metadata_df['Name'] == 'Area D_Compressor Power', 'Build Asset'] = 'Refrigerator 2'\n",
    "metadata_df.at[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;text-align: left;\">Pushed successfully to datasource <strong>Seeq Data Lab [Datasource ID: Seeq Data Lab]</strong> and scoped to workbook ID <strong>63E10897-4C87-4137-A356-930A96913F21</strong><br>Click the following link to see what you pushed in Seeq:<br><a href=\"http://localhost:34216/1C990074-22A1-4B35-8250-95CB1586B508/workbook/63E10897-4C87-4137-A356-930A96913F21/worksheet/60A3F238-3C29-4EBF-9F16-63154E734D75\" target=\"_new\">http://localhost:34216/1C990074-22A1-4B35-8250-95CB1586B508/workbook/63E10897-4C87-4137-A356-930A96913F21/worksheet/60A3F238-3C29-4EBF-9F16-63154E734D75</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>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>Compressor</th>\n",
       "      <th>Referenced Name</th>\n",
       "      <th>Reference</th>\n",
       "      <th>Name</th>\n",
       "      <th>...</th>\n",
       "      <th>Asset Object</th>\n",
       "      <th>Path</th>\n",
       "      <th>Template</th>\n",
       "      <th>Build Result</th>\n",
       "      <th>Formula</th>\n",
       "      <th>Formula Parameters</th>\n",
       "      <th>Datasource Class</th>\n",
       "      <th>Datasource ID</th>\n",
       "      <th>Data ID</th>\n",
       "      <th>Push Result</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>7DD29FA9-19B0-4C6A-B241-3F5D41A2A72A</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>kW</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>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[signal=FED5D114-BC4A-4FC6-B4D9-67AC9330A24F]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>C5C0CB2C-B6F2-45D5-BADD-BC2A1869716D</td>\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>NaN</td>\n",
       "      <td>High Power</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>$a.valueSearch(isGreaterThan(20kW))</td>\n",
       "      <td>[a=7DD29FA9-19B0-4C6A-B241-3F5D41A2A72A]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Condit...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>E43772FE-6591-46A9-ABCB-924C681C2E2B</td>\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>NaN</td>\n",
       "      <td>Other Compressors Are High Power</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>$p0</td>\n",
       "      <td>[p0=C5C0CB2C-B6F2-45D5-BADD-BC2A1869716D]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Condit...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5E0F1F62-37E2-467F-B393-DB8AE2A1AED8</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>kW</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>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[signal=85D111A3-AEC2-4626-8DFB-02DA4CC5E7B5]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>019206B5-EDDB-4166-8E30-D8F3FC0BB34F</td>\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>NaN</td>\n",
       "      <td>High Power</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>$a.valueSearch(isGreaterThan(20kW))</td>\n",
       "      <td>[a=5E0F1F62-37E2-467F-B393-DB8AE2A1AED8]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Condit...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>1D3F6041-063E-4ED9-A10A-D50FA4CE85BC</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>NaN</td>\n",
       "      <td>Compressor 2</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset}...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1B45CB04-9640-4012-B10B-8415D11DFCA1</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>°F</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>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[signal=EF686BC3-3A82-4345-9B94-E918BB022A03]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>F9128F29-26D0-44F8-8DEC-8FD244C2ED21</td>\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>NaN</td>\n",
       "      <td>Compressor High Power</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator</td>\n",
       "      <td>Success</td>\n",
       "      <td>$p0 or $p1</td>\n",
       "      <td>[p0=C5C0CB2C-B6F2-45D5-BADD-BC2A1869716D, p1=0...</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Condit...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>91E22577-97C2-47DA-BDC9-17C1F9091C93</td>\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>NaN</td>\n",
       "      <td>Other Compressors Are High Power</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>$p0</td>\n",
       "      <td>[p0=019206B5-EDDB-4166-8E30-D8F3FC0BB34F]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Condit...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>9E807A4B-3B9C-4899-B01B-FF9ED96AB4F5</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>NaN</td>\n",
       "      <td>Compressor 1</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset}...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>53E1CE0A-D17B-4F57-8FDE-0DC60C6E2D7C</td>\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>NaN</td>\n",
       "      <td>Compressor Power Max</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator</td>\n",
       "      <td>Success</td>\n",
       "      <td>$p0.max($p1)</td>\n",
       "      <td>[p0=7DD29FA9-19B0-4C6A-B241-3F5D41A2A72A, p1=5...</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>AE92C2C6-A1F0-449D-B79C-F08B49D310EE</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>NaN</td>\n",
       "      <td>Refrigerator 1</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 1</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset}...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>6983E74A-7D5F-4656-9392-EE9075B1F2C2</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>kW</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>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[signal=6470A54F-73CC-4D1C-9F98-D2FD462803C5]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>495861B2-4900-4D27-B07F-060AAF17872F</td>\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>NaN</td>\n",
       "      <td>High Power</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>$a.valueSearch(isGreaterThan(20kW))</td>\n",
       "      <td>[a=6983E74A-7D5F-4656-9392-EE9075B1F2C2]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Condit...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>0911423A-609A-4299-A065-8CAC70FD827D</td>\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>NaN</td>\n",
       "      <td>Other Compressors Are High Power</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>$p0</td>\n",
       "      <td>[p0=495861B2-4900-4D27-B07F-060AAF17872F]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Condit...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>E04F3F73-A26C-44A7-93C5-ED64D5BEBE99</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>kW</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>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[signal=FCE20C34-372F-4EB6-842A-B6B8C7940781]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>44279D1A-C046-4671-8C45-B9FD30880ED3</td>\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>NaN</td>\n",
       "      <td>High Power</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>$a.valueSearch(isGreaterThan(20kW))</td>\n",
       "      <td>[a=E04F3F73-A26C-44A7-93C5-ED64D5BEBE99]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Condit...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>355E27F0-ECE5-44BB-A6F5-65A0A1F10AEF</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>NaN</td>\n",
       "      <td>Compressor 4</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset}...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>22D02747-42B5-4C4D-8EEC-196FE6C74BFD</td>\n",
       "      <td>NaN</td>\n",
       "      <td>CalculatedSignal</td>\n",
       "      <td>°F</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>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[signal=404E0E8E-259E-421D-9950-F1C8E3EE1CA3]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>23118E3C-422B-4F1F-AA47-C8D5A03847CE</td>\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>NaN</td>\n",
       "      <td>Compressor High Power</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator</td>\n",
       "      <td>Success</td>\n",
       "      <td>$p0 or $p1</td>\n",
       "      <td>[p0=495861B2-4900-4D27-B07F-060AAF17872F, p1=4...</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Condit...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>B204C853-4719-4B30-9DBF-EAAFCF239598</td>\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>NaN</td>\n",
       "      <td>Other Compressors Are High Power</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>$p0</td>\n",
       "      <td>[p0=44279D1A-C046-4671-8C45-B9FD30880ED3]</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Condit...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>C894CD7E-7466-4EF9-83A6-8CD131345576</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>NaN</td>\n",
       "      <td>Compressor 3</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2 &gt;&gt; Compre...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>Compressor</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset}...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>CBF7BB88-2B7A-45FA-BC28-E333FCB38BFA</td>\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>NaN</td>\n",
       "      <td>Compressor Power Max</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator</td>\n",
       "      <td>Success</td>\n",
       "      <td>$p0.max($p1)</td>\n",
       "      <td>[p0=6983E74A-7D5F-4656-9392-EE9075B1F2C2, p1=E...</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Signal...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>FA0118EE-902D-483A-91E9-CD7A738C26FD</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>NaN</td>\n",
       "      <td>Refrigerator 2</td>\n",
       "      <td>...</td>\n",
       "      <td>Refrigerator Units &gt;&gt; Refrigerator 2</td>\n",
       "      <td>Refrigerator Units</td>\n",
       "      <td>Refrigerator</td>\n",
       "      <td>Success</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>Seeq Data Lab</td>\n",
       "      <td>[63E10897-4C87-4137-A356-930A96913F21] {Asset}...</td>\n",
       "      <td>Success</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>24 rows × 21 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                      ID Description                 Type  \\\n",
       "0   7DD29FA9-19B0-4C6A-B241-3F5D41A2A72A         NaN     CalculatedSignal   \n",
       "1   C5C0CB2C-B6F2-45D5-BADD-BC2A1869716D         NaN  CalculatedCondition   \n",
       "2   E43772FE-6591-46A9-ABCB-924C681C2E2B         NaN  CalculatedCondition   \n",
       "3   5E0F1F62-37E2-467F-B393-DB8AE2A1AED8         NaN     CalculatedSignal   \n",
       "4   019206B5-EDDB-4166-8E30-D8F3FC0BB34F         NaN  CalculatedCondition   \n",
       "5   1D3F6041-063E-4ED9-A10A-D50FA4CE85BC         NaN                Asset   \n",
       "6   1B45CB04-9640-4012-B10B-8415D11DFCA1         NaN     CalculatedSignal   \n",
       "7   F9128F29-26D0-44F8-8DEC-8FD244C2ED21         NaN  CalculatedCondition   \n",
       "8   91E22577-97C2-47DA-BDC9-17C1F9091C93         NaN  CalculatedCondition   \n",
       "9   9E807A4B-3B9C-4899-B01B-FF9ED96AB4F5         NaN                Asset   \n",
       "10  53E1CE0A-D17B-4F57-8FDE-0DC60C6E2D7C         NaN     CalculatedSignal   \n",
       "11  AE92C2C6-A1F0-449D-B79C-F08B49D310EE         NaN                Asset   \n",
       "12  6983E74A-7D5F-4656-9392-EE9075B1F2C2         NaN     CalculatedSignal   \n",
       "13  495861B2-4900-4D27-B07F-060AAF17872F         NaN  CalculatedCondition   \n",
       "14  0911423A-609A-4299-A065-8CAC70FD827D         NaN  CalculatedCondition   \n",
       "15  E04F3F73-A26C-44A7-93C5-ED64D5BEBE99         NaN     CalculatedSignal   \n",
       "16  44279D1A-C046-4671-8C45-B9FD30880ED3         NaN  CalculatedCondition   \n",
       "17  355E27F0-ECE5-44BB-A6F5-65A0A1F10AEF         NaN                Asset   \n",
       "18  22D02747-42B5-4C4D-8EEC-196FE6C74BFD         NaN     CalculatedSignal   \n",
       "19  23118E3C-422B-4F1F-AA47-C8D5A03847CE         NaN  CalculatedCondition   \n",
       "20  B204C853-4719-4B30-9DBF-EAAFCF239598         NaN  CalculatedCondition   \n",
       "21  C894CD7E-7466-4EF9-83A6-8CD131345576         NaN                Asset   \n",
       "22  CBF7BB88-2B7A-45FA-BC28-E333FCB38BFA         NaN     CalculatedSignal   \n",
       "23  FA0118EE-902D-483A-91E9-CD7A738C26FD         NaN                Asset   \n",
       "\n",
       "   Value Unit Of Measure Datasource Name Archived    Compressor  \\\n",
       "0                     kW    Example Data    False  Compressor 1   \n",
       "1                    NaN             NaN      NaN           NaN   \n",
       "2                    NaN             NaN      NaN           NaN   \n",
       "3                     kW    Example Data    False  Compressor 2   \n",
       "4                    NaN             NaN      NaN           NaN   \n",
       "5                    NaN             NaN      NaN           NaN   \n",
       "6                     °F    Example Data    False           NaN   \n",
       "7                    NaN             NaN      NaN           NaN   \n",
       "8                    NaN             NaN      NaN           NaN   \n",
       "9                    NaN             NaN      NaN           NaN   \n",
       "10                   NaN             NaN      NaN           NaN   \n",
       "11                   NaN             NaN      NaN           NaN   \n",
       "12                    kW    Example Data    False  Compressor 3   \n",
       "13                   NaN             NaN      NaN           NaN   \n",
       "14                   NaN             NaN      NaN           NaN   \n",
       "15                    kW    Example Data    False  Compressor 4   \n",
       "16                   NaN             NaN      NaN           NaN   \n",
       "17                   NaN             NaN      NaN           NaN   \n",
       "18                    °F    Example Data    False           NaN   \n",
       "19                   NaN             NaN      NaN           NaN   \n",
       "20                   NaN             NaN      NaN           NaN   \n",
       "21                   NaN             NaN      NaN           NaN   \n",
       "22                   NaN             NaN      NaN           NaN   \n",
       "23                   NaN             NaN      NaN           NaN   \n",
       "\n",
       "            Referenced Name Reference                              Name  ...  \\\n",
       "0   Area A_Compressor Power      True                             Power  ...   \n",
       "1                       NaN       NaN                        High Power  ...   \n",
       "2                       NaN       NaN  Other Compressors Are High Power  ...   \n",
       "3   Area B_Compressor Power      True                             Power  ...   \n",
       "4                       NaN       NaN                        High Power  ...   \n",
       "5                       NaN       NaN                      Compressor 2  ...   \n",
       "6        Area A_Temperature      True                       Temperature  ...   \n",
       "7                       NaN       NaN             Compressor High Power  ...   \n",
       "8                       NaN       NaN  Other Compressors Are High Power  ...   \n",
       "9                       NaN       NaN                      Compressor 1  ...   \n",
       "10                      NaN       NaN              Compressor Power Max  ...   \n",
       "11                      NaN       NaN                    Refrigerator 1  ...   \n",
       "12  Area C_Compressor Power      True                             Power  ...   \n",
       "13                      NaN       NaN                        High Power  ...   \n",
       "14                      NaN       NaN  Other Compressors Are High Power  ...   \n",
       "15  Area D_Compressor Power      True                             Power  ...   \n",
       "16                      NaN       NaN                        High Power  ...   \n",
       "17                      NaN       NaN                      Compressor 4  ...   \n",
       "18       Area C_Temperature      True                       Temperature  ...   \n",
       "19                      NaN       NaN             Compressor High Power  ...   \n",
       "20                      NaN       NaN  Other Compressors Are High Power  ...   \n",
       "21                      NaN       NaN                      Compressor 3  ...   \n",
       "22                      NaN       NaN              Compressor Power Max  ...   \n",
       "23                      NaN       NaN                    Refrigerator 2  ...   \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",
       "\n",
       "                                    Path      Template Build Result  \\\n",
       "0   Refrigerator Units >> Refrigerator 1    Compressor      Success   \n",
       "1   Refrigerator Units >> Refrigerator 1    Compressor      Success   \n",
       "2   Refrigerator Units >> Refrigerator 1    Compressor      Success   \n",
       "3   Refrigerator Units >> Refrigerator 1    Compressor      Success   \n",
       "4   Refrigerator Units >> Refrigerator 1    Compressor      Success   \n",
       "5   Refrigerator Units >> Refrigerator 1    Compressor      Success   \n",
       "6                     Refrigerator Units  Refrigerator      Success   \n",
       "7                     Refrigerator Units  Refrigerator      Success   \n",
       "8   Refrigerator Units >> Refrigerator 1    Compressor      Success   \n",
       "9   Refrigerator Units >> Refrigerator 1    Compressor      Success   \n",
       "10                    Refrigerator Units  Refrigerator      Success   \n",
       "11                    Refrigerator Units  Refrigerator      Success   \n",
       "12  Refrigerator Units >> Refrigerator 2    Compressor      Success   \n",
       "13  Refrigerator Units >> Refrigerator 2    Compressor      Success   \n",
       "14  Refrigerator Units >> Refrigerator 2    Compressor      Success   \n",
       "15  Refrigerator Units >> Refrigerator 2    Compressor      Success   \n",
       "16  Refrigerator Units >> Refrigerator 2    Compressor      Success   \n",
       "17  Refrigerator Units >> Refrigerator 2    Compressor      Success   \n",
       "18                    Refrigerator Units  Refrigerator      Success   \n",
       "19                    Refrigerator Units  Refrigerator      Success   \n",
       "20  Refrigerator Units >> Refrigerator 2    Compressor      Success   \n",
       "21  Refrigerator Units >> Refrigerator 2    Compressor      Success   \n",
       "22                    Refrigerator Units  Refrigerator      Success   \n",
       "23                    Refrigerator Units  Refrigerator      Success   \n",
       "\n",
       "                                Formula  \\\n",
       "0                                   NaN   \n",
       "1   $a.valueSearch(isGreaterThan(20kW))   \n",
       "2                                   $p0   \n",
       "3                                   NaN   \n",
       "4   $a.valueSearch(isGreaterThan(20kW))   \n",
       "5                                   NaN   \n",
       "6                                   NaN   \n",
       "7                            $p0 or $p1   \n",
       "8                                   $p0   \n",
       "9                                   NaN   \n",
       "10                         $p0.max($p1)   \n",
       "11                                  NaN   \n",
       "12                                  NaN   \n",
       "13  $a.valueSearch(isGreaterThan(20kW))   \n",
       "14                                  $p0   \n",
       "15                                  NaN   \n",
       "16  $a.valueSearch(isGreaterThan(20kW))   \n",
       "17                                  NaN   \n",
       "18                                  NaN   \n",
       "19                           $p0 or $p1   \n",
       "20                                  $p0   \n",
       "21                                  NaN   \n",
       "22                         $p0.max($p1)   \n",
       "23                                  NaN   \n",
       "\n",
       "                                   Formula Parameters Datasource Class  \\\n",
       "0       [signal=FED5D114-BC4A-4FC6-B4D9-67AC9330A24F]    Seeq Data Lab   \n",
       "1            [a=7DD29FA9-19B0-4C6A-B241-3F5D41A2A72A]    Seeq Data Lab   \n",
       "2           [p0=C5C0CB2C-B6F2-45D5-BADD-BC2A1869716D]    Seeq Data Lab   \n",
       "3       [signal=85D111A3-AEC2-4626-8DFB-02DA4CC5E7B5]    Seeq Data Lab   \n",
       "4            [a=5E0F1F62-37E2-467F-B393-DB8AE2A1AED8]    Seeq Data Lab   \n",
       "5                                                 NaN    Seeq Data Lab   \n",
       "6       [signal=EF686BC3-3A82-4345-9B94-E918BB022A03]    Seeq Data Lab   \n",
       "7   [p0=C5C0CB2C-B6F2-45D5-BADD-BC2A1869716D, p1=0...    Seeq Data Lab   \n",
       "8           [p0=019206B5-EDDB-4166-8E30-D8F3FC0BB34F]    Seeq Data Lab   \n",
       "9                                                 NaN    Seeq Data Lab   \n",
       "10  [p0=7DD29FA9-19B0-4C6A-B241-3F5D41A2A72A, p1=5...    Seeq Data Lab   \n",
       "11                                                NaN    Seeq Data Lab   \n",
       "12      [signal=6470A54F-73CC-4D1C-9F98-D2FD462803C5]    Seeq Data Lab   \n",
       "13           [a=6983E74A-7D5F-4656-9392-EE9075B1F2C2]    Seeq Data Lab   \n",
       "14          [p0=495861B2-4900-4D27-B07F-060AAF17872F]    Seeq Data Lab   \n",
       "15      [signal=FCE20C34-372F-4EB6-842A-B6B8C7940781]    Seeq Data Lab   \n",
       "16           [a=E04F3F73-A26C-44A7-93C5-ED64D5BEBE99]    Seeq Data Lab   \n",
       "17                                                NaN    Seeq Data Lab   \n",
       "18      [signal=404E0E8E-259E-421D-9950-F1C8E3EE1CA3]    Seeq Data Lab   \n",
       "19  [p0=495861B2-4900-4D27-B07F-060AAF17872F, p1=4...    Seeq Data Lab   \n",
       "20          [p0=44279D1A-C046-4671-8C45-B9FD30880ED3]    Seeq Data Lab   \n",
       "21                                                NaN    Seeq Data Lab   \n",
       "22  [p0=6983E74A-7D5F-4656-9392-EE9075B1F2C2, p1=E...    Seeq Data Lab   \n",
       "23                                                NaN    Seeq Data Lab   \n",
       "\n",
       "    Datasource ID                                            Data ID  \\\n",
       "0   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Signal...   \n",
       "1   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Condit...   \n",
       "2   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Condit...   \n",
       "3   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Signal...   \n",
       "4   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Condit...   \n",
       "5   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Asset}...   \n",
       "6   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Signal...   \n",
       "7   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Condit...   \n",
       "8   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Condit...   \n",
       "9   Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Asset}...   \n",
       "10  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Signal...   \n",
       "11  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Asset}...   \n",
       "12  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Signal...   \n",
       "13  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Condit...   \n",
       "14  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Condit...   \n",
       "15  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Signal...   \n",
       "16  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Condit...   \n",
       "17  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Asset}...   \n",
       "18  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Signal...   \n",
       "19  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Condit...   \n",
       "20  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Condit...   \n",
       "21  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Asset}...   \n",
       "22  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Signal...   \n",
       "23  Seeq Data Lab  [63E10897-4C87-4137-A356-930A96913F21] {Asset}...   \n",
       "\n",
       "   Push Result  \n",
       "0      Success  \n",
       "1      Success  \n",
       "2      Success  \n",
       "3      Success  \n",
       "4      Success  \n",
       "5      Success  \n",
       "6      Success  \n",
       "7      Success  \n",
       "8      Success  \n",
       "9      Success  \n",
       "10     Success  \n",
       "11     Success  \n",
       "12     Success  \n",
       "13     Success  \n",
       "14     Success  \n",
       "15     Success  \n",
       "16     Success  \n",
       "17     Success  \n",
       "18     Success  \n",
       "19     Success  \n",
       "20     Success  \n",
       "21     Success  \n",
       "22     Success  \n",
       "23     Success  \n",
       "\n",
       "[24 rows x 21 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)"
   ]
  },
  {
   "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;text-align: left;\">Pushed successfully to datasource <strong>Seeq Data Lab [Datasource ID: Seeq Data Lab]</strong> and scoped to workbook ID <strong>63E10897-4C87-4137-A356-930A96913F21</strong><br>Click the following link to see what you pushed in Seeq:<br><a href=\"http://localhost:34216/1C990074-22A1-4B35-8250-95CB1586B508/workbook/63E10897-4C87-4137-A356-930A96913F21/worksheet/60A3F238-3C29-4EBF-9F16-63154E734D75\" target=\"_new\">http://localhost:34216/1C990074-22A1-4B35-8250-95CB1586B508/workbook/63E10897-4C87-4137-A356-930A96913F21/worksheet/60A3F238-3C29-4EBF-9F16-63154E734D75</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)"
   ]
  },
  {
   "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;text-align: left;\">Successfully built 1 assets and 1 attributes.</div><table><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 Phase</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><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."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "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.7.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}