diff --git a/MAC/Services/src/PipelineControl.py b/MAC/Services/src/PipelineControl.py index d9aa782a72d10c19604115fd6e19ca3bf4121c53..abfab5bcc1bcbec4ccc74554293b8ec795f7bb00 100755 --- a/MAC/Services/src/PipelineControl.py +++ b/MAC/Services/src/PipelineControl.py @@ -102,15 +102,17 @@ def runCommand(cmdline, input=None): cmdline, stdin=subprocess.PIPE if input else None, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, + stderr=subprocess.PIPE, shell=True, universal_newlines=True ) # Feed input and wait for termination logger.debug("runCommand input: %s", input) - stdout, _ = communicate_returning_strings(proc, input) + stdout, stderr = communicate_returning_strings(proc, input) logger.debug("runCommand output: %s", stdout) + if stderr: + logger.warn("runCommand stderr output: %s", stderr) # Check exit status, bail on error if proc.returncode != 0: diff --git a/SAS/TMSS/scripts/notebooks/project_report_poc.ipynb b/SAS/TMSS/scripts/notebooks/project_report_poc.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..09d0a809ff2ed7e040b84aa7ba78366344b77fe4 --- /dev/null +++ b/SAS/TMSS/scripts/notebooks/project_report_poc.ipynb @@ -0,0 +1,1267 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9cdf5a35", + "metadata": {}, + "source": [ + "# Project Report PoC - TMSS\n", + "\n", + "This notebook shows how to generate a report for a project.\n", + "\n", + "The data is retrieved through the *TMSS APIs* and it is analysed and visualised using the *Pandas* library.\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "id": "ec22618d", + "metadata": {}, + "source": [ + "### Prerequirements\n", + "\n", + "Before proceeding you need to import some modules, as well as specify some configurations." + ] + }, + { + "cell_type": "markdown", + "id": "56ae3f42", + "metadata": {}, + "source": [ + "#### Imports\n", + "\n", + "The Pandas and Requests libraries are required." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d169d2ba", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import requests" + ] + }, + { + "cell_type": "markdown", + "id": "b3403df5", + "metadata": {}, + "source": [ + "#### Configs\n", + "\n", + "Your authentication credentials are needed to perform HTTP requests to the TMSS APIs." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "48b766e7", + "metadata": {}, + "outputs": [], + "source": [ + "BASE_URL = 'http://localhost:8000/api' # TMSS API endpoint\n", + "auth = ('test', 'test') # username and password" + ] + }, + { + "cell_type": "markdown", + "id": "76fe037c", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "9812780a", + "metadata": {}, + "source": [ + "## Retrieve the data\n", + "\n", + "To retrieve the data, you need to perform a GET request to the following endpoint: `http://127.0.0.1:8000/api/project/<project>/report`\n", + "\n", + "This can be done by using the `requests` module. To perform the request, you need to provide your target project, by specifying its *id* in the `project` variable, and to pass your authentication credentials in the `auth` parameter. Since the response will be a JSON object, you can simply store the result of `response.json()` in the `result` variable." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "62acf8a9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'project': 'high',\n", + " 'quota': [{'id': 1,\n", + " 'resource_type_id': 'LTA Storage',\n", + " 'value': 1000000000000.0}],\n", + " 'SUBs': {'finished': [], 'failed': []},\n", + " 'durations': {'total': 12120.0,\n", + " 'total_succeeded': 0.0,\n", + " 'total_not_cancelled': 12120.0,\n", + " 'total_failed': 0.0},\n", + " 'LTA dataproducts': {'size__sum': None},\n", + " 'SAPs': [{'sap_name': 'placeholder', 'total_exposure': 0}]}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "project = 'high' # Specify your target project\n", + "\n", + "# Retrieve the data related to project\n", + "response = requests.get(BASE_URL + '/project/%s/report' % project, auth=auth)\n", + "result = response.json()\n", + "result" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "3276ce6d", + "metadata": {}, + "outputs": [], + "source": [ + "# TODO: Remove, just for testing purposes.\n", + "result = {\n", + " \"project\": \"high\",\n", + " \"quota\": [\n", + " {\n", + " \"id\": 2,\n", + " \"resource_type_id\": \"LTA Storage\",\n", + " \"value\": 1300.0\n", + " },\n", + " {\n", + " \"id\": 4,\n", + " \"resource_type_id\": \"LTA Storage\",\n", + " \"value\": 1000.0\n", + " },\n", + " {\n", + " \"id\": 11,\n", + " \"resource_type_id\": \"LTA Storage\",\n", + " \"value\": 2400.0\n", + " }\n", + " ],\n", + " \"SUBs\": {\n", + " \"finished\": [\n", + " {\n", + " \"id\": 3,\n", + " \"name\": \"amazing_sub\",\n", + " \"duration\": 600.000003\n", + " },\n", + " {\n", + " \"id\": 8,\n", + " \"name\": \"another_amazing_sub\",\n", + " \"duration\": 600.000003\n", + " },\n", + " {\n", + " \"id\": 21,\n", + " \"name\": \"another_amazing_sub\",\n", + " \"duration\": 800.000003\n", + " }\n", + " ],\n", + " \"failed\": [\n", + " {\n", + " \"id\": 12,\n", + " \"name\": \"horrible_sub\",\n", + " \"duration\": 600.000003\n", + " },\n", + " {\n", + " \"id\": 36,\n", + " \"name\": \"another_horrible_sub\",\n", + " \"duration\": 200.000003\n", + " },\n", + " {\n", + " \"id\": 43,\n", + " \"name\": \"yet_another_horrible_sub\",\n", + " \"duration\": 350.000003\n", + " }\n", + " ]\n", + " },\n", + " \"durations\": {\n", + " \"total\": 4000.000018,\n", + " \"total_succeeded\": 2000.000009,\n", + " \"total_not_cancelled\": 3250.000009,\n", + " \"total_failed\": 1150.000009\n", + " },\n", + " \"LTA dataproducts\": {\n", + " \"size__sum\": 246\n", + " },\n", + " \"SAPs\": [\n", + " {\n", + " \"sap_name\": \"sap_1\",\n", + " \"total_exposure\": 340.0\n", + " },\n", + " {\n", + " \"sap_name\":\"sap_2\",\n", + " \"total_exposure\": 195.0\n", + " },\n", + " {\n", + " \"sap_name\":\"sap_3\",\n", + " \"total_exposure\": 235.0\n", + " },\n", + " {\n", + " \"sap_name\":\"sap_4\",\n", + " \"total_exposure\": 345.0\n", + " },\n", + " {\n", + " \"sap_name\":\"sap_5\",\n", + " \"total_exposure\": 137.0\n", + " }\n", + " ]\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "1721b2bc", + "metadata": {}, + "source": [ + "### Manage the data\n", + "\n", + "Once you have retrieved the data, you need to extract it in a proper way. In the following snippet, we do such operation by defining some variables that will be used afterwards." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d1b58c3a", + "metadata": {}, + "outputs": [], + "source": [ + "project_id = result['project'] # Project id\n", + "quota = result['quota'] # Allocated resources\n", + "durations = result['durations'] # Durations\n", + "subs_finished = result['SUBs']['finished'] # SUBs succeeded\n", + "subs_failed = result['SUBs']['failed'] # SUBs failed\n", + "lta_dataproducts = result['LTA dataproducts'] # LTA Dataproducts sizes\n", + "saps = result['SAPs'] # SAPs" + ] + }, + { + "cell_type": "markdown", + "id": "883d53a9", + "metadata": {}, + "source": [ + "You can now use a library (i.e., Pandas) for the data analysis and visualisation parts.\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "id": "c9765847", + "metadata": {}, + "source": [ + "## Create tables\n", + "\n", + "Pandas mainly provides two *data structures*:\n", + "- **Series**: a one-dimensional data structure that comprises of a key-value pair. It is similar to a python dictionary, except it provides more freedom to manipulate and edit the data.\n", + "- **DataFrame**: a two-dimensional data-structure that can be thought of as a spreadsheet. A dataframe can also be thought of as a combination of two or more series." + ] + }, + { + "cell_type": "markdown", + "id": "43dbc054", + "metadata": {}, + "source": [ + "#### Caveat\n", + "\n", + "All of the durations retrieved from the APIs are expressed in seconds. In order to better visualise them, you can adopt a custom format to convert *seconds* into *timedeltas*. This will not touch the values contained by the DataFrames, but will only affect their on-the-fly visualisation. In this case, we are specifying the following conversion when displaying any DataFrame." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "9647e60b", + "metadata": {}, + "outputs": [], + "source": [ + "to_timedelta = lambda x: '{}'.format(pd.to_timedelta(x, unit='s').round('1s'))" + ] + }, + { + "cell_type": "markdown", + "id": "af79759e", + "metadata": {}, + "source": [ + "### Summary Table\n", + "\n", + "You can create a unique table within all the data related to a project. It might be convenient to create a different DataFrame for each variable of the previous step, as they could be used for subsequent analysis later." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "8a0a7ed9", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "<style type=\"text/css\" >\n", + "</style><table id=\"T_d3546088_9dff_11eb_84e4_000c299c9be6\" ><caption>Summary Table - high</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >total</th> <th class=\"col_heading level0 col1\" >total_succeeded</th> <th class=\"col_heading level0 col2\" >total_not_cancelled</th> <th class=\"col_heading level0 col3\" >total_failed</th> <th class=\"col_heading level0 col4\" >size__sum</th> </tr></thead><tbody>\n", + " <tr>\n", + " <th id=\"T_d3546088_9dff_11eb_84e4_000c299c9be6level0_row0\" class=\"row_heading level0 row0\" >high</th>\n", + " <td id=\"T_d3546088_9dff_11eb_84e4_000c299c9be6row0_col0\" class=\"data row0 col0\" >0 days 01:06:40</td>\n", + " <td id=\"T_d3546088_9dff_11eb_84e4_000c299c9be6row0_col1\" class=\"data row0 col1\" >0 days 00:33:20</td>\n", + " <td id=\"T_d3546088_9dff_11eb_84e4_000c299c9be6row0_col2\" class=\"data row0 col2\" >0 days 00:54:10</td>\n", + " <td id=\"T_d3546088_9dff_11eb_84e4_000c299c9be6row0_col3\" class=\"data row0 col3\" >0 days 00:19:10</td>\n", + " <td id=\"T_d3546088_9dff_11eb_84e4_000c299c9be6row0_col4\" class=\"data row0 col4\" >246</td>\n", + " </tr>\n", + " </tbody></table>" + ], + "text/plain": [ + "<pandas.io.formats.style.Styler at 0x7f1d6f3f5128>" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Create a DataFrame for each data you want to summarise\n", + "df_durations = pd.DataFrame(durations, index=[project_id])\n", + "df_lta_dataproducts = pd.DataFrame(lta_dataproducts, index=[project_id])\n", + "\n", + "# Create a general DataFrame as a summary table\n", + "df = pd.concat([df_durations, df_lta_dataproducts], axis=1)\n", + "df.style.format({'total': to_timedelta, 'total_succeeded': to_timedelta, 'total_not_cancelled': to_timedelta, 'total_failed': to_timedelta}).set_caption(f'Summary Table - {project_id}')" + ] + }, + { + "cell_type": "markdown", + "id": "17475585", + "metadata": {}, + "source": [ + "Note that for the other values, you can follow a similar procedure as illustrated by the following sections." + ] + }, + { + "cell_type": "markdown", + "id": "97374167", + "metadata": {}, + "source": [ + "### Quota table\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0d86e8a4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<style type=\"text/css\" >\n", + "</style><table id=\"T_d3576666_9dff_11eb_84e4_000c299c9be6\" ><caption>Quota - high</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >resource_type_id</th> <th class=\"col_heading level0 col1\" >value</th> </tr> <tr> <th class=\"index_name level0\" >id</th> <th class=\"blank\" ></th> <th class=\"blank\" ></th> </tr></thead><tbody>\n", + " <tr>\n", + " <th id=\"T_d3576666_9dff_11eb_84e4_000c299c9be6level0_row0\" class=\"row_heading level0 row0\" >2</th>\n", + " <td id=\"T_d3576666_9dff_11eb_84e4_000c299c9be6row0_col0\" class=\"data row0 col0\" >LTA Storage</td>\n", + " <td id=\"T_d3576666_9dff_11eb_84e4_000c299c9be6row0_col1\" class=\"data row0 col1\" >1300.00</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d3576666_9dff_11eb_84e4_000c299c9be6level0_row1\" class=\"row_heading level0 row1\" >4</th>\n", + " <td id=\"T_d3576666_9dff_11eb_84e4_000c299c9be6row1_col0\" class=\"data row1 col0\" >LTA Storage</td>\n", + " <td id=\"T_d3576666_9dff_11eb_84e4_000c299c9be6row1_col1\" class=\"data row1 col1\" >1000.00</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d3576666_9dff_11eb_84e4_000c299c9be6level0_row2\" class=\"row_heading level0 row2\" >11</th>\n", + " <td id=\"T_d3576666_9dff_11eb_84e4_000c299c9be6row2_col0\" class=\"data row2 col0\" >LTA Storage</td>\n", + " <td id=\"T_d3576666_9dff_11eb_84e4_000c299c9be6row2_col1\" class=\"data row2 col1\" >2400.00</td>\n", + " </tr>\n", + " </tbody></table>" + ], + "text/plain": [ + "<pandas.io.formats.style.Styler at 0x7f1d6f667400>" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Create a DataFrame for quota\n", + "df_quota = pd.DataFrame(quota).set_index('id')\n", + "df_quota.style.format({'value': '{:.2f}'}).set_caption(f'Quota - {project_id}')" + ] + }, + { + "cell_type": "markdown", + "id": "d1106c43", + "metadata": {}, + "source": [ + "### SchedulingUnitBlueprints\n" + ] + }, + { + "cell_type": "markdown", + "id": "8a3b5c78", + "metadata": {}, + "source": [ + "#### Finished SUBs\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "a8588756", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<style type=\"text/css\" >\n", + "</style><table id=\"T_d3593702_9dff_11eb_84e4_000c299c9be6\" ><caption>Finished SUBs - high</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >name</th> <th class=\"col_heading level0 col1\" >duration</th> </tr> <tr> <th class=\"index_name level0\" >id</th> <th class=\"blank\" ></th> <th class=\"blank\" ></th> </tr></thead><tbody>\n", + " <tr>\n", + " <th id=\"T_d3593702_9dff_11eb_84e4_000c299c9be6level0_row0\" class=\"row_heading level0 row0\" >3</th>\n", + " <td id=\"T_d3593702_9dff_11eb_84e4_000c299c9be6row0_col0\" class=\"data row0 col0\" >amazing_sub</td>\n", + " <td id=\"T_d3593702_9dff_11eb_84e4_000c299c9be6row0_col1\" class=\"data row0 col1\" >0 days 00:10:00</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d3593702_9dff_11eb_84e4_000c299c9be6level0_row1\" class=\"row_heading level0 row1\" >8</th>\n", + " <td id=\"T_d3593702_9dff_11eb_84e4_000c299c9be6row1_col0\" class=\"data row1 col0\" >another_amazing_sub</td>\n", + " <td id=\"T_d3593702_9dff_11eb_84e4_000c299c9be6row1_col1\" class=\"data row1 col1\" >0 days 00:10:00</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d3593702_9dff_11eb_84e4_000c299c9be6level0_row2\" class=\"row_heading level0 row2\" >21</th>\n", + " <td id=\"T_d3593702_9dff_11eb_84e4_000c299c9be6row2_col0\" class=\"data row2 col0\" >another_amazing_sub</td>\n", + " <td id=\"T_d3593702_9dff_11eb_84e4_000c299c9be6row2_col1\" class=\"data row2 col1\" >0 days 00:13:20</td>\n", + " </tr>\n", + " </tbody></table>" + ], + "text/plain": [ + "<pandas.io.formats.style.Styler at 0x7f1d6f6673c8>" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Create a DataFrame for finished SUBs\n", + "df_subs_finished = pd.DataFrame(subs_finished).set_index('id')\n", + "df_subs_finished.style.format({'duration': to_timedelta}).set_caption(f'Finished SUBs - {project_id}')" + ] + }, + { + "cell_type": "markdown", + "id": "4a14140a", + "metadata": {}, + "source": [ + "#### Failed SUBs\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "b0e3224a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<style type=\"text/css\" >\n", + "</style><table id=\"T_d35ac8e2_9dff_11eb_84e4_000c299c9be6\" ><caption>Failed SUBs - high</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >name</th> <th class=\"col_heading level0 col1\" >duration</th> </tr> <tr> <th class=\"index_name level0\" >id</th> <th class=\"blank\" ></th> <th class=\"blank\" ></th> </tr></thead><tbody>\n", + " <tr>\n", + " <th id=\"T_d35ac8e2_9dff_11eb_84e4_000c299c9be6level0_row0\" class=\"row_heading level0 row0\" >12</th>\n", + " <td id=\"T_d35ac8e2_9dff_11eb_84e4_000c299c9be6row0_col0\" class=\"data row0 col0\" >horrible_sub</td>\n", + " <td id=\"T_d35ac8e2_9dff_11eb_84e4_000c299c9be6row0_col1\" class=\"data row0 col1\" >0 days 00:10:00</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d35ac8e2_9dff_11eb_84e4_000c299c9be6level0_row1\" class=\"row_heading level0 row1\" >36</th>\n", + " <td id=\"T_d35ac8e2_9dff_11eb_84e4_000c299c9be6row1_col0\" class=\"data row1 col0\" >another_horrible_sub</td>\n", + " <td id=\"T_d35ac8e2_9dff_11eb_84e4_000c299c9be6row1_col1\" class=\"data row1 col1\" >0 days 00:03:20</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d35ac8e2_9dff_11eb_84e4_000c299c9be6level0_row2\" class=\"row_heading level0 row2\" >43</th>\n", + " <td id=\"T_d35ac8e2_9dff_11eb_84e4_000c299c9be6row2_col0\" class=\"data row2 col0\" >yet_another_horrible_sub</td>\n", + " <td id=\"T_d35ac8e2_9dff_11eb_84e4_000c299c9be6row2_col1\" class=\"data row2 col1\" >0 days 00:05:50</td>\n", + " </tr>\n", + " </tbody></table>" + ], + "text/plain": [ + "<pandas.io.formats.style.Styler at 0x7f1d6f667a20>" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Create a DataFrame for failed SUBs\n", + "df_subs_failed = pd.DataFrame(subs_failed).set_index('id')\n", + "df_subs_failed.style.format({'duration': to_timedelta}).set_caption(f'Failed SUBs - {project_id}')" + ] + }, + { + "cell_type": "markdown", + "id": "901b2937", + "metadata": {}, + "source": [ + "### SAPs\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e8907f52", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<style type=\"text/css\" >\n", + "</style><table id=\"T_d35c8b46_9dff_11eb_84e4_000c299c9be6\" ><caption>SAPs - high</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >total_exposure</th> </tr> <tr> <th class=\"index_name level0\" >sap_name</th> <th class=\"blank\" ></th> </tr></thead><tbody>\n", + " <tr>\n", + " <th id=\"T_d35c8b46_9dff_11eb_84e4_000c299c9be6level0_row0\" class=\"row_heading level0 row0\" >sap_1</th>\n", + " <td id=\"T_d35c8b46_9dff_11eb_84e4_000c299c9be6row0_col0\" class=\"data row0 col0\" >0 days 00:05:40</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d35c8b46_9dff_11eb_84e4_000c299c9be6level0_row1\" class=\"row_heading level0 row1\" >sap_2</th>\n", + " <td id=\"T_d35c8b46_9dff_11eb_84e4_000c299c9be6row1_col0\" class=\"data row1 col0\" >0 days 00:03:15</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d35c8b46_9dff_11eb_84e4_000c299c9be6level0_row2\" class=\"row_heading level0 row2\" >sap_3</th>\n", + " <td id=\"T_d35c8b46_9dff_11eb_84e4_000c299c9be6row2_col0\" class=\"data row2 col0\" >0 days 00:03:55</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d35c8b46_9dff_11eb_84e4_000c299c9be6level0_row3\" class=\"row_heading level0 row3\" >sap_4</th>\n", + " <td id=\"T_d35c8b46_9dff_11eb_84e4_000c299c9be6row3_col0\" class=\"data row3 col0\" >0 days 00:05:45</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d35c8b46_9dff_11eb_84e4_000c299c9be6level0_row4\" class=\"row_heading level0 row4\" >sap_5</th>\n", + " <td id=\"T_d35c8b46_9dff_11eb_84e4_000c299c9be6row4_col0\" class=\"data row4 col0\" >0 days 00:02:17</td>\n", + " </tr>\n", + " </tbody></table>" + ], + "text/plain": [ + "<pandas.io.formats.style.Styler at 0x7f1d6f6677b8>" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Create a DataFrame for SAPs\n", + "df_saps = pd.DataFrame(saps).set_index('sap_name')\n", + "df_saps.style.format({'total_exposure': to_timedelta}).set_caption(f'SAPs - {project_id}')" + ] + }, + { + "cell_type": "markdown", + "id": "6261c701", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "b7a4b0b9", + "metadata": {}, + "source": [ + "## Create a plot\n", + "\n", + "To better visualise the data, you could plot it in several ways. The following sections show some examples." + ] + }, + { + "cell_type": "markdown", + "id": "bc9a3b19", + "metadata": {}, + "source": [ + "### Quota\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "18b5ce1d", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot a pie graph\n", + "ax_quota = df_quota.plot.pie(title=f'Quota - {project_id}', y='value', autopct='%.2f%%')" + ] + }, + { + "cell_type": "markdown", + "id": "f3458db6", + "metadata": {}, + "source": [ + "### Durations\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "da3340db", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "image/png": "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379/v2dkZHhpaalXVFT4gAEDfOrUqe7uPmDAAH/22Wfd3b2iosL37t3rS5cu9by8PN+7d6+7u5eVlbm7e15enj/11FPu7l5VVeUFBQXu7j5+/Hi/9957q2v485//7O7uN954o99zzz3u7v6b3/zGAS8pKfE1a9b4F7/4Rd++fXv1/ouKivzjjz/2bt26eWlpqe/fv98HDhzo119/fRNG/PDq+5kAVnoDuaqLsSISV81+9O+88051P/phw4ZV96PPzs6u7kc/c+ZM8vPzmTdvHjk5OXzwwQeN7kf/1FNP0atXL3JzcyksLOTrX/867dq146677qJ///6MGDGCs846q3r9xx57jFmzZpGdnc1XvvIVtm3bxujRo7n00ks577zzyM3NZcaMGQAsWLCARx55hJycHLKysnj++ecBmDVrFitXriQ7O5tzzjmH2bNnAzB16lSWLVtGVlYWzzzzDN26dQPgnHPO4Yc//CEjR44kOzubESNGsHXrVjIzM5k2bRp5eXmcf/75adVaWv3oRdKc+tFLXepHLyIitehirIi0uN/97nd8//vfr7WsR48ePPvssymqKGwKehFpcaNGjWLUqFGpLuOooakbEZHAKehFRAKnoBcRCZzm6EVam3UTE7u/Mxckdn+SdnRGLyJxpXs/+h//+McJ3V+i1OxHP23atOp/3Gqs448/PmG1KOhFJK5070efrkGfThT0IhJXS/ajnzt3LmPHjmX06NH07NmT733ve9WPLVy4kN69e9OrV6/q1+BPmTKFffv2kZuby8SJDU9pzZ8/v7p1w9VXXw3Ar3/9awYMGMC5557L8OHDq9shT5s2jWuvvZYLLriAM844g1mzZsXdT0P97BvSUF/8TZs2kZeXR+/evbnzzjsbNV6N1lATnFR9qKmZSG3/1MBq7YTEfhxGzUZkixcv9uHDh/uBAwd827Ztfvrpp/vHH3/sr732mo8ZM6Z6m7179/q+ffvc3X3dunV+6Pf6cE3N5syZ4z169PDy8nLft2+fd+vWzT/66CPfsmWLn3766b5jxw6vrKz0oUOHVjczO+644+LWX1hY6D179vSSkhJ3/6zJ2c6dO6sbqD388MN+2223ubv71KlTPS8vzysqKrykpMQ7d+7s+/fvb3A/48eP9zfeeMPd3Tdv3uxnnXVW9ddyqKnZ1KlT/b777nN392HDhvm6devc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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# You can associate a color for each duration\n", + "colors = {'total': '#58a5f0', 'total_not_cancelled': '#ffd95a', 'total_succeeded': '#60ad5e', 'total_failed': '#ff5f52'}\n", + "# Plot a horizontal bar graph\n", + "ax_durations = df_durations.plot.barh(title=f'Durations - {project_id}', color=colors)" + ] + }, + { + "cell_type": "markdown", + "id": "cf9b7e2c", + "metadata": {}, + "source": [ + "### Scheduling Unit Blueprints\n", + "\n", + "You can plot either the finished or the failed SUBs. In addiction, you can also plot a unified bar graph. Here all of the three options are shown." + ] + }, + { + "cell_type": "markdown", + "id": "a1816784", + "metadata": {}, + "source": [ + "#### Finished SUBs" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "0869ef70", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot a bar graph\n", + "ax_subs_finished = df_subs_finished.plot.bar(title='Finished SUBs', color='#60ad5e')" + ] + }, + { + "cell_type": "markdown", + "id": "cfa3909f", + "metadata": {}, + "source": [ + "#### Failed SUBs" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "ac375a19", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot a bar graph\n", + "ax_subs_failed = df_subs_failed.plot.bar(title='Failed SUBs', color='#ff5f52')" + ] + }, + { + "cell_type": "markdown", + "id": "77084d49", + "metadata": {}, + "source": [ + "#### SUBs Summary\n", + "\n", + "To summarise both finished and failed SchedulingUnitBlueprints, you can concatenate the prior DataFrames as well as adding a new column to distinguish them in the new DataFrame:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "9755ccd4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<style type=\"text/css\" >\n", + "</style><table id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6\" ><caption>SUBs Summary - high</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >name</th> <th class=\"col_heading level0 col1\" >duration</th> <th class=\"col_heading level0 col2\" >status</th> </tr> <tr> <th class=\"index_name level0\" >id</th> <th class=\"blank\" ></th> <th class=\"blank\" ></th> <th class=\"blank\" ></th> </tr></thead><tbody>\n", + " <tr>\n", + " <th id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6level0_row0\" class=\"row_heading level0 row0\" >3</th>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row0_col0\" class=\"data row0 col0\" >amazing_sub</td>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row0_col1\" class=\"data row0 col1\" >0 days 00:10:00</td>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row0_col2\" class=\"data row0 col2\" >finished</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6level0_row1\" class=\"row_heading level0 row1\" >8</th>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row1_col0\" class=\"data row1 col0\" >another_amazing_sub</td>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row1_col1\" class=\"data row1 col1\" >0 days 00:10:00</td>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row1_col2\" class=\"data row1 col2\" >finished</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6level0_row2\" class=\"row_heading level0 row2\" >12</th>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row2_col0\" class=\"data row2 col0\" >horrible_sub</td>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row2_col1\" class=\"data row2 col1\" >0 days 00:10:00</td>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row2_col2\" class=\"data row2 col2\" >failed</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6level0_row3\" class=\"row_heading level0 row3\" >21</th>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row3_col0\" class=\"data row3 col0\" >another_amazing_sub</td>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row3_col1\" class=\"data row3 col1\" >0 days 00:13:20</td>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row3_col2\" class=\"data row3 col2\" >finished</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6level0_row4\" class=\"row_heading level0 row4\" >36</th>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row4_col0\" class=\"data row4 col0\" >another_horrible_sub</td>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row4_col1\" class=\"data row4 col1\" >0 days 00:03:20</td>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row4_col2\" class=\"data row4 col2\" >failed</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6level0_row5\" class=\"row_heading level0 row5\" >43</th>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row5_col0\" class=\"data row5 col0\" >yet_another_horrible_sub</td>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row5_col1\" class=\"data row5 col1\" >0 days 00:05:50</td>\n", + " <td id=\"T_d3bf2de6_9dff_11eb_84e4_000c299c9be6row5_col2\" class=\"data row5 col2\" >failed</td>\n", + " </tr>\n", + " </tbody></table>" + ], + "text/plain": [ + "<pandas.io.formats.style.Styler at 0x7f1d69ab3978>" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Add a status column to differentiate colors later\n", + "df_subs_finished['status'] = 'finished'\n", + "df_subs_failed['status'] = 'failed'\n", + "# Create a new DataFrame, within index sorting, as a concatenation of finished and failed SUBs.\n", + "df_subs = pd.concat([df_subs_finished, df_subs_failed]).sort_index()\n", + "df_subs.style.format({'duration': to_timedelta}).set_caption(f'SUBs Summary - {project_id}')" + ] + }, + { + "cell_type": "markdown", + "id": "ee01dc60", + "metadata": {}, + "source": [ + "Then, you can plot a bar graph discriminting colors by status:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "9cbe3a9f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Associate colors\n", + "colors = {'finished': '#60ad5e', 'failed': '#ff5f52'}\n", + "# Plot the concatenated DataFrame\n", + "ax_subs = df_subs.plot.bar(title='SUBs Summary', y='duration', legend=False, color=list(df_subs['status'].map(colors)))" + ] + }, + { + "cell_type": "markdown", + "id": "892416f7", + "metadata": {}, + "source": [ + "#### SAPs" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "b323083e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot a bar graph\n", + "ax_saps = df_saps.plot.bar(title='SAPs', color=['#ffd95a'])" + ] + }, + { + "cell_type": "markdown", + "id": "6825282e", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "d4bbe1fb", + "metadata": {}, + "source": [ + "## Tables and Plots all in one\n", + "\n", + "In this section you can see a complete overview of the project report, generated by following the above documentation." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "336df2b9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<style type=\"text/css\" >\n", + "</style><table id=\"T_d3f6afaa_9dff_11eb_84e4_000c299c9be6\" ><caption>Summary Table - high</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >total</th> <th class=\"col_heading level0 col1\" >total_succeeded</th> <th class=\"col_heading level0 col2\" >total_not_cancelled</th> <th class=\"col_heading level0 col3\" >total_failed</th> <th class=\"col_heading level0 col4\" >size__sum</th> </tr></thead><tbody>\n", + " <tr>\n", + " <th id=\"T_d3f6afaa_9dff_11eb_84e4_000c299c9be6level0_row0\" class=\"row_heading level0 row0\" >high</th>\n", + " <td id=\"T_d3f6afaa_9dff_11eb_84e4_000c299c9be6row0_col0\" class=\"data row0 col0\" >0 days 01:06:40</td>\n", + " <td id=\"T_d3f6afaa_9dff_11eb_84e4_000c299c9be6row0_col1\" class=\"data row0 col1\" >0 days 00:33:20</td>\n", + " <td id=\"T_d3f6afaa_9dff_11eb_84e4_000c299c9be6row0_col2\" class=\"data row0 col2\" >0 days 00:54:10</td>\n", + " <td id=\"T_d3f6afaa_9dff_11eb_84e4_000c299c9be6row0_col3\" class=\"data row0 col3\" >0 days 00:19:10</td>\n", + " <td id=\"T_d3f6afaa_9dff_11eb_84e4_000c299c9be6row0_col4\" class=\"data row0 col4\" >246</td>\n", + " </tr>\n", + " </tbody></table>" + ], + "text/plain": [ + "<pandas.io.formats.style.Styler at 0x7f1d699a9eb8>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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2DqStHPnTnXo0EHHHHOM5syZo0OHDsWr/KTHlRiApJaWlqbzzjtPXbt21cUXX6zu3bsrMzNTZqaHHnpIJ510ktLS0tSkSRNlZmZq3LhxmjBhgkaNGqWnnnpKw4YN0/HHHx/vw0ha5u7xruEwPXv2dG6QAsnj448/1plnnhnvMpBAKjsnzCzH3XtWXJfuRABAsAgxAECwCDEAQLAIMQBAsAgxAECwCDEAQLAIMQBAsPhjZwAJZfzz19Xr/maOnF3t8qKiIs2bN6/GoViWLl1a41AsGzZs0CWXXKL8/PwjqjWeOnXqpBUrVqht27a1Wn/WrFlasWKFHn/88QaurHpciQFIavU5KCYaHyEGIKk15nhiK1euVO/evZWVlaXu3btrzZo13xoNetq0acrOzpYkrV27VoMHD1ZmZqZ69OihdevWSZIefPBBdevWTZmZmZo0aZIkad26dRo2bJjOOecc9evXT5988okkadu2bRo1apR69eqlXr166b333pMkFRYWasiQIcrIyNCPf/xjlf/0pqeffrqszhtvvLHssyFnzpyp008/Xb179y7bT7zRnQggqTXmeGIzZszQrbfeqrFjx+rAgQM6dOiQtmzZUuX6Y8eO1aRJk3TFFVdo3759Kikp0eLFi/WnP/1Jy5YtU7NmzbRjxw5J0g033KAZM2aoS5cuWrZsmSZMmKA33nhDt956qyZOnKjzzz9fn332mYYOHaqPP/5Y999/v84//3xNnjxZr7zyip588klJsY98WrBggd577z2lpKRowoQJmjt3ri666CLdd999ysnJUcuWLTVw4ECdffbZ9fATODqEGABEGno8sb59++pXv/qVCgoKNHLkSHXp0qXKdXft2qVNmzbpiiuukKSy4V5ee+01jR8/Xs2aNZMktWnTRrt379bSpUt11VVXlW2/f//+svU/+uijsvlfffWVdu/erSVLluj555+XJI0YMUKtW7eWJL3++uvKyclRr169JEl79+7ViSeeqGXLlumCCy5Qu3btJElXX311QoyjRogBQB0d6XhiY8aMUZ8+ffTKK69o+PDh+sMf/qDTTz9dJSUlZevs27evzvWUlJSoVatWys3NrXTZ+++/X+sa3V3XXXedfv3rXx82/8UXX6xzXY2Be2IAklpjjif26aefqnPnzrrlllt02WWX6cMPP1T79u21detWFRYWav/+/WVdli1atFDHjh3LwmP//v3as2ePLrroIs2cOVN79uyRJO3YsUMnnHCC0tPTtXDhQkmxIMrLy5MkDRkyRI899lhZDaVB179//7KHVRYvXqwvv/xSknThhRdq0aJF2rp1a9n+N27cqD59+ujtt99WYWGhiouLy94r3rgSA5BQanokvr415nhizz77rObMmaOUlBSddNJJuvvuu5WSkqLJkyerd+/eOvnkk3XGGWeUrT9nzhzdeOONmjx5slJSUrRw4UINGzZMubm56tmzp4477jgNHz5cU6ZM0dy5c/XTn/5UDzzwgIqLi3XNNdcoMzNTjz76qG666SZ1795dBw8eVP/+/TVjxgzdd999Gj16tDIyMvT9739fp556qiTprLPO0gMPPKAhQ4aopKREKSkpmj59us4991xlZ2erb9++atWqlbKyshrix1FnjCcGIK4YTwwVMZ4YACAp0J0IAPXsr3/9q+66667D5qWnp+uFF16IU0XfXYQYANSzoUOHaujQofEuIynQnQgACBYhBgAIFiEGAAgWIQYACBYPdgBILKvH1u/+Tp9b7eJEH09sypQpuvvuu+ttf/Wl/Hhi2dnZat68uW6//fZab9+8eXPt3r37qOvgSgxAUkv08cSmTJkSl/cNBSEGIKk15nhis2bN0siRIzVs2DB16dJFd955Z9my+fPnq1u3buratWvZ35hNmjRJe/fuVVZWlsaOrfoK9amnnir7uKxrr71WkvTnP/9Zffr00dlnn63BgweXDfmSnZ2t66+/XhdccIE6d+6sRx99tNr9VDUeWVWqGtds/fr16tu3r7p166Z77723Vu1VK+6eUF/nnHOOA0geH3300eEzVo2p368arF+/3jMyMtzdfdGiRT548GA/ePCgf/HFF37KKaf4559/7m+++aaPGDGibJuvv/7a9+7d6+7uq1ev9tLfW+X3VZmZM2d6enq6FxUV+d69e/3UU0/1zz77zDdt2uSnnHKKb9261YuLi33gwIH+wgsvuLv78ccfX239+fn53qVLF9+2bZu7uxcWFrq7+44dO7ykpMTd3Z944gm/7bbb3N39vvvu8759+/q+fft827Zt3qZNGz9w4ECV+xk9erS/88477u6+ceNGP+OMM8qO5aabbirb529+8xt3dx80aJCvXr3a3d3ff/99HzhwoLu7X3rppT579mx3d3/88cerPa5vnRPuLmmFV5IZ3BMDgEhDjycmxT4lvmXLlpJiH7a7ceNGFRYWHjZW19ixY7VkyRJdfvnlNe7vjTfe0FVXXaW2bdtKio0vJkkFBQW6+uqrtXnzZh04cEDp6ell24wYMUJNmzZV06ZNdeKJJ2rLli1V7qeq8cgqU924Zu+9956ee+45SdK11177rU80OVKEGADU0ZGOJyZJTZs2LZtu0qSJDh482BAl6uabb9Ztt92mH/zgB3rrrbeUnZ19RDXUZTyy6sY1kyQzq3X9tcU9MQBJrTHHE6tK79699fbbb2v79u06dOiQ5s+frwEDBkiSUlJSVFxcXOW2gwYN0sKFC1VYWCgpNv5XaY0nn3yyJGn27JqHt6lqP1WNR1aZ6sY1O++88/TMM89IkubOrf6J0brgSgxAYqnhkfj61pjjiVWlQ4cOmjp1qgYOHCh314gRI3TZZZdJkm644QZ1795dPXr0qPSXf0ZGhu655x4NGDBATZo00dlnn61Zs2YpOztbV111lVq3bq1BgwZp/fr11dZQ1X6qGo+sKlWNa/bII49ozJgxevDBB8uOrT4wnhiAuGI8MVTEeGIAgKRAdyIA1LOGGE+ssLBQF1544bfmv/7660pLSzvi/YaOEAOAetYQ44mlpaVV+1BFsqI7EQAQLEIMABAsQgwAECxCDAAQLB7sAJBYxo2q3/3Neq7axY09ntjo0aO1cuVKjR8/XhMnTqx0nRkzZqhZs2b64Q9/qHHjxumSSy7RlVdeWe1716WG7xJCDEBSKx1PrKYQmzdvXo0hVpMvvvhCy5cv19q1a6td7yc/+clRvU8yoTsRQFJrzPHEhgwZok2bNikrK0vvvPOOnnjiCfXq1UuZmZkaNWqU9uzZIyk25te0adO+tX1OTo4GDBigc845R0OHDtXmzZvL5mdmZiozM1PTp0+vp5YJAyEGIKlNnTpVp512mnJzc3XuuecqNzdXeXl5eu2113THHXdo8+bNmjp1qvr166fc3FxNnDhRJ554ol599VV98MEHWrBggW655ZZavddLL71U9l79+vXTyJEjtXz5cuXl5enMM8/Uk08+WeW2xcXFuvnmm7Vo0SLl5OTo+uuv1z333CNJGj9+vB577LGyD9tNJnQnAkCkMcYTKy8/P1/33nuvioqKtHv37mr/QHrVqlXKz8/XRRddJEk6dOiQOnTooKKiIhUVFal///6SYmN1LV68+IjqCREhBgB1dDTjiZU3btw4vfjii8rMzNSsWbP01ltvVbmuuysjI0N///vfD5tfVFR0RO/9XUF3IoCkFs/xxHbt2qUOHTqouLi4xjG2vve972nbtm1lIVZcXKyVK1eqVatWatWqld59911J9TtWVwi4EgOQWGp4JL6+xXM8sV/+8pfq06eP2rVrpz59+hwWlBUdd9xxWrRokW655Rbt3LlTBw8e1M9//nNlZGRo5syZuv7662VmGjJkyJE2RZAYTwxAXDGeGCpiPDEAQFKgOxEA6llDjCeGyiVeiG1YV/8fO4OG0cj3LoBQNMR4Yqgc3YkA4i7R7s0jfup6LhBiAOIqNTVVhYWFBBnk7iosLKzT390lXncigKTSsWNHFRQUaNu2bfEuBQkgNTVVHTt2rPX6hBiAuEpJSVF6enq8y0Cg6E4EAASLEAMABIsQAwAEixADAASLEAMABIsQAwAEixADAASLEAMABIsQAwAEixADAASLEAMABIsQAwAEixADAASLEAMABIsQAwAEixADAASLEAMABIsQAwAEixADAASLEAMABIsQAwAEixADAASLEAMABIsQAwAEixADAASLEAMABIsQAwAEixADAASLEAMABOvYeBfwLScdI92dGu8qUBurx8a7AiAxnD433hUkLa7EAADBIsQAAMEixAAAwSLEAADBIsQAAMEixAAAwSLEAADBIsQAAMEixAAAwSLEAADBIsQAAMEixAAAwSLEAADBIsQAAMEixAAAwSLEAADBIsQAAMEixAAAwSLEAADBIsQAAMEixAAAwSLEAADBIsQAAMEixAAAwSLEAADBIsQAAMEixAAAwSLEAADBIsQAAMGqMcTMrJOZ5Vcy//+Y2eAats02s9uPpkAAAKpy7JFu6O6T67MQAADqqrbdiU3M7AkzW2lmfzOzfzOzWWZ2pSSZ2XAz+8TMcszsUTN7udy2Z5nZW2b2qZndUv+HAABIVrUNsS6Sprt7hqQiSaNKF5hZqqQ/SLrY3c+R1K7CtmdIGiqpt6T7zCzlaIsGAECqfXfienfPjaZzJHUqt+wMSZ+6+/ro9XxJN5Rb/oq775e038y2SmovqaD8zs3shtJtjm97vMbnH3EvJxCEmSNnx7sE4Duhtldi+8tNH1Ld7qXVuK27/5e793T3nqktU+uwawBAMquP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\n", + "text/plain": [ + "<Figure size 504x360 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df_table = df.style.format({'total': to_timedelta, 'total_succeeded': to_timedelta, 'total_not_cancelled': to_timedelta, 'total_failed': to_timedelta}).set_caption(f'Summary Table - {project_id}')\n", + "colors = {'total': '#58a5f0', 'total_not_cancelled': '#ffd95a', 'total_succeeded': '#60ad5e', 'total_failed': '#ff5f52'}\n", + "ax_durations = df_durations.plot.barh(title=f'Durations - {project_id}', color=colors, figsize=(7,5))\n", + "display(df_table)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "42ec4db1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<style type=\"text/css\" >\n", + "</style><table id=\"T_d417480a_9dff_11eb_84e4_000c299c9be6\" ><caption>Quota - high</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >resource_type_id</th> <th class=\"col_heading level0 col1\" >value</th> </tr> <tr> <th class=\"index_name level0\" >id</th> <th class=\"blank\" ></th> <th class=\"blank\" ></th> </tr></thead><tbody>\n", + " <tr>\n", + " <th id=\"T_d417480a_9dff_11eb_84e4_000c299c9be6level0_row0\" class=\"row_heading level0 row0\" >2</th>\n", + " <td id=\"T_d417480a_9dff_11eb_84e4_000c299c9be6row0_col0\" class=\"data row0 col0\" >LTA Storage</td>\n", + " <td id=\"T_d417480a_9dff_11eb_84e4_000c299c9be6row0_col1\" class=\"data row0 col1\" >1300.00</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d417480a_9dff_11eb_84e4_000c299c9be6level0_row1\" class=\"row_heading level0 row1\" >4</th>\n", + " <td id=\"T_d417480a_9dff_11eb_84e4_000c299c9be6row1_col0\" class=\"data row1 col0\" >LTA Storage</td>\n", + " <td id=\"T_d417480a_9dff_11eb_84e4_000c299c9be6row1_col1\" class=\"data row1 col1\" >1000.00</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d417480a_9dff_11eb_84e4_000c299c9be6level0_row2\" class=\"row_heading level0 row2\" >11</th>\n", + " <td id=\"T_d417480a_9dff_11eb_84e4_000c299c9be6row2_col0\" class=\"data row2 col0\" >LTA Storage</td>\n", + " <td id=\"T_d417480a_9dff_11eb_84e4_000c299c9be6row2_col1\" class=\"data row2 col1\" >2400.00</td>\n", + " </tr>\n", + " </tbody></table>" + ], + "text/plain": [ + "<pandas.io.formats.style.Styler at 0x7f1d69929630>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 360x360 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_quota_table = df_quota.style.format({'value': '{:.2f}'}).set_caption(f'Quota - {project_id}')\n", + "ax_quota = df_quota.plot.pie(title=f'Quota - {project_id}', y='value', autopct='%.2f%%', figsize=(5,5))\n", + "display(df_quota_table)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "0ff27ce1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<style type=\"text/css\" >\n", + "</style><table id=\"T_d439f346_9dff_11eb_84e4_000c299c9be6\" ><caption>Finished SUBs - high</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >name</th> <th class=\"col_heading level0 col1\" >duration</th> <th class=\"col_heading level0 col2\" >status</th> </tr> <tr> <th class=\"index_name level0\" >id</th> <th class=\"blank\" ></th> <th class=\"blank\" ></th> <th class=\"blank\" ></th> </tr></thead><tbody>\n", + " <tr>\n", + " <th id=\"T_d439f346_9dff_11eb_84e4_000c299c9be6level0_row0\" class=\"row_heading level0 row0\" >3</th>\n", + " <td id=\"T_d439f346_9dff_11eb_84e4_000c299c9be6row0_col0\" class=\"data row0 col0\" >amazing_sub</td>\n", + " <td id=\"T_d439f346_9dff_11eb_84e4_000c299c9be6row0_col1\" class=\"data row0 col1\" >0 days 00:10:00</td>\n", + " <td id=\"T_d439f346_9dff_11eb_84e4_000c299c9be6row0_col2\" class=\"data row0 col2\" >finished</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d439f346_9dff_11eb_84e4_000c299c9be6level0_row1\" class=\"row_heading level0 row1\" >8</th>\n", + " <td id=\"T_d439f346_9dff_11eb_84e4_000c299c9be6row1_col0\" class=\"data row1 col0\" >another_amazing_sub</td>\n", + " <td id=\"T_d439f346_9dff_11eb_84e4_000c299c9be6row1_col1\" class=\"data row1 col1\" >0 days 00:10:00</td>\n", + " <td id=\"T_d439f346_9dff_11eb_84e4_000c299c9be6row1_col2\" class=\"data row1 col2\" >finished</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d439f346_9dff_11eb_84e4_000c299c9be6level0_row2\" class=\"row_heading level0 row2\" >21</th>\n", + " <td id=\"T_d439f346_9dff_11eb_84e4_000c299c9be6row2_col0\" class=\"data row2 col0\" >another_amazing_sub</td>\n", + " <td id=\"T_d439f346_9dff_11eb_84e4_000c299c9be6row2_col1\" class=\"data row2 col1\" >0 days 00:13:20</td>\n", + " <td id=\"T_d439f346_9dff_11eb_84e4_000c299c9be6row2_col2\" class=\"data row2 col2\" >finished</td>\n", + " </tr>\n", + " </tbody></table>" + ], + "text/plain": [ + "<pandas.io.formats.style.Styler at 0x7f1d69888278>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 360x360 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df_subs_finished_table = df_subs_finished.style.format({'duration': to_timedelta}).set_caption(f'Finished SUBs - {project_id}')\n", + "df_subs_finished.plot.bar(title=f'Finished SUBs - {project_id}', color='#60ad5e', figsize=(5,5))\n", + "display(df_subs_finished_table)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "f2256a8e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<style type=\"text/css\" >\n", + "</style><table id=\"T_d458f7be_9dff_11eb_84e4_000c299c9be6\" ><caption>Failed SUBs - high</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >name</th> <th class=\"col_heading level0 col1\" >duration</th> <th class=\"col_heading level0 col2\" >status</th> </tr> <tr> <th class=\"index_name level0\" >id</th> <th class=\"blank\" ></th> <th class=\"blank\" ></th> <th class=\"blank\" ></th> </tr></thead><tbody>\n", + " <tr>\n", + " <th id=\"T_d458f7be_9dff_11eb_84e4_000c299c9be6level0_row0\" class=\"row_heading level0 row0\" >12</th>\n", + " <td id=\"T_d458f7be_9dff_11eb_84e4_000c299c9be6row0_col0\" class=\"data row0 col0\" >horrible_sub</td>\n", + " <td id=\"T_d458f7be_9dff_11eb_84e4_000c299c9be6row0_col1\" class=\"data row0 col1\" >0 days 00:10:00</td>\n", + " <td id=\"T_d458f7be_9dff_11eb_84e4_000c299c9be6row0_col2\" class=\"data row0 col2\" >failed</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d458f7be_9dff_11eb_84e4_000c299c9be6level0_row1\" class=\"row_heading level0 row1\" >36</th>\n", + " <td id=\"T_d458f7be_9dff_11eb_84e4_000c299c9be6row1_col0\" class=\"data row1 col0\" >another_horrible_sub</td>\n", + " <td id=\"T_d458f7be_9dff_11eb_84e4_000c299c9be6row1_col1\" class=\"data row1 col1\" >0 days 00:03:20</td>\n", + " <td id=\"T_d458f7be_9dff_11eb_84e4_000c299c9be6row1_col2\" class=\"data row1 col2\" >failed</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d458f7be_9dff_11eb_84e4_000c299c9be6level0_row2\" class=\"row_heading level0 row2\" >43</th>\n", + " <td id=\"T_d458f7be_9dff_11eb_84e4_000c299c9be6row2_col0\" class=\"data row2 col0\" >yet_another_horrible_sub</td>\n", + " <td id=\"T_d458f7be_9dff_11eb_84e4_000c299c9be6row2_col1\" class=\"data row2 col1\" >0 days 00:05:50</td>\n", + " <td id=\"T_d458f7be_9dff_11eb_84e4_000c299c9be6row2_col2\" class=\"data row2 col2\" >failed</td>\n", + " </tr>\n", + " </tbody></table>" + ], + "text/plain": [ + "<pandas.io.formats.style.Styler at 0x7f1d697fc128>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 360x360 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df_subs_failed_table = df_subs_failed.style.format({'duration': to_timedelta}).set_caption(f'Failed SUBs - {project_id}')\n", + "ax_subs_failed = df_subs_failed.plot.bar(title=f'Failed SUBs - {project_id}', color='#ff5f52', figsize=(5,5))\n", + "display(df_subs_failed_table)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "9cc39543", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<style type=\"text/css\" >\n", + "</style><table id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6\" ><caption>SUBs Summary - high</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >name</th> <th class=\"col_heading level0 col1\" >duration</th> <th class=\"col_heading level0 col2\" >status</th> </tr> <tr> <th class=\"index_name level0\" >id</th> <th class=\"blank\" ></th> <th class=\"blank\" ></th> <th class=\"blank\" ></th> </tr></thead><tbody>\n", + " <tr>\n", + " <th id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6level0_row0\" class=\"row_heading level0 row0\" >3</th>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row0_col0\" class=\"data row0 col0\" >amazing_sub</td>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row0_col1\" class=\"data row0 col1\" >0 days 00:10:00</td>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row0_col2\" class=\"data row0 col2\" >finished</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6level0_row1\" class=\"row_heading level0 row1\" >8</th>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row1_col0\" class=\"data row1 col0\" >another_amazing_sub</td>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row1_col1\" class=\"data row1 col1\" >0 days 00:10:00</td>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row1_col2\" class=\"data row1 col2\" >finished</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6level0_row2\" class=\"row_heading level0 row2\" >12</th>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row2_col0\" class=\"data row2 col0\" >horrible_sub</td>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row2_col1\" class=\"data row2 col1\" >0 days 00:10:00</td>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row2_col2\" class=\"data row2 col2\" >failed</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6level0_row3\" class=\"row_heading level0 row3\" >21</th>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row3_col0\" class=\"data row3 col0\" >another_amazing_sub</td>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row3_col1\" class=\"data row3 col1\" >0 days 00:13:20</td>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row3_col2\" class=\"data row3 col2\" >finished</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6level0_row4\" class=\"row_heading level0 row4\" >36</th>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row4_col0\" class=\"data row4 col0\" >another_horrible_sub</td>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row4_col1\" class=\"data row4 col1\" >0 days 00:03:20</td>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row4_col2\" class=\"data row4 col2\" >failed</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6level0_row5\" class=\"row_heading level0 row5\" >43</th>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row5_col0\" class=\"data row5 col0\" >yet_another_horrible_sub</td>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row5_col1\" class=\"data row5 col1\" >0 days 00:05:50</td>\n", + " <td id=\"T_d46ef3ca_9dff_11eb_84e4_000c299c9be6row5_col2\" class=\"data row5 col2\" >failed</td>\n", + " </tr>\n", + " </tbody></table>" + ], + "text/plain": [ + "<pandas.io.formats.style.Styler at 0x7f1d69808438>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 504x360 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df_subs_table = df_subs.style.format({'duration': to_timedelta}).set_caption(f'SUBs Summary - {project_id}')\n", + "colors = {'finished': '#60ad5e', 'failed': '#ff5f52'}\n", + "ax_subs = df_subs.plot.bar(title=f'SUBs Summary - {project_id}', y='duration', legend=False, figsize=(7,5), color=list(df_subs['status'].map(colors)))\n", + "display(df_subs_table)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "ebb46f8e", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "<style type=\"text/css\" >\n", + "</style><table id=\"T_d48650ba_9dff_11eb_84e4_000c299c9be6\" ><caption>SAPs - high</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >total_exposure</th> </tr> <tr> <th class=\"index_name level0\" >sap_name</th> <th class=\"blank\" ></th> </tr></thead><tbody>\n", + " <tr>\n", + " <th id=\"T_d48650ba_9dff_11eb_84e4_000c299c9be6level0_row0\" class=\"row_heading level0 row0\" >sap_1</th>\n", + " <td id=\"T_d48650ba_9dff_11eb_84e4_000c299c9be6row0_col0\" class=\"data row0 col0\" >0 days 00:05:40</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d48650ba_9dff_11eb_84e4_000c299c9be6level0_row1\" class=\"row_heading level0 row1\" >sap_2</th>\n", + " <td id=\"T_d48650ba_9dff_11eb_84e4_000c299c9be6row1_col0\" class=\"data row1 col0\" >0 days 00:03:15</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d48650ba_9dff_11eb_84e4_000c299c9be6level0_row2\" class=\"row_heading level0 row2\" >sap_3</th>\n", + " <td id=\"T_d48650ba_9dff_11eb_84e4_000c299c9be6row2_col0\" class=\"data row2 col0\" >0 days 00:03:55</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d48650ba_9dff_11eb_84e4_000c299c9be6level0_row3\" class=\"row_heading level0 row3\" >sap_4</th>\n", + " <td id=\"T_d48650ba_9dff_11eb_84e4_000c299c9be6row3_col0\" class=\"data row3 col0\" >0 days 00:05:45</td>\n", + " </tr>\n", + " <tr>\n", + " <th id=\"T_d48650ba_9dff_11eb_84e4_000c299c9be6level0_row4\" class=\"row_heading level0 row4\" >sap_5</th>\n", + " <td id=\"T_d48650ba_9dff_11eb_84e4_000c299c9be6row4_col0\" class=\"data row4 col0\" >0 days 00:02:17</td>\n", + " </tr>\n", + " </tbody></table>" + ], + "text/plain": [ + "<pandas.io.formats.style.Styler at 0x7f1d697fc208>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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5syZwxlnnAH0rvobrM577rmHPfbYg3nz5jF37lwuv/xyAKZPn/6bGi644AIOP/xwAA4//HDe/e5387KXvYyPfOQj3HHHHey777689KUvZffdd+dHP/rRyBssDWHI04ZVtRjYeZDxV69lfgHHjLw0aeI68cQTuemmm1i0aBFf+cpXOPXUU7nhhhu4//77WbBgAXvssQcnnngin/zkJ/na174GwPLly7n00kuZNm0at912G4cccsiw7ul55pln8pznPIdrr72Wxx57jN12243Xvva1fOADH2DPPffkwgsv5IQTTuC0007j2c9+NgCLFy/mqquu4te//jU777wzr3/96/nBD37AokWLnlLneeedxz777MOf//mfs3LlSpYvXz5kTUuXLuXKK69kypQp7L333px66qnMmTOHq6++mqOPPprvfve7QzdxtE/1jqYhThtr/E2IG/NKLbviiis45JBDmDJlCjNnzuRVr3oV1157LZttttlq81asWMF73/teFi1axJQpU7j11luHtf9vf/vbLF68mAsu6P1K5UMPPcRtt93G7NmzOeuss9hxxx1517vexW677fabbfbff3823nhjNt54Y/baay+uueaatda5YMECjjjiCFasWMEBBxzAvHnzhqzpwAMPZMqUKTzyyCNceeWVHHjggb9Z99hjjw3rfUkjYXhJG8jJJ5/MzJkzueGGG3jiiSeYNm3asLarKj7zmc+wzz77PGXdbbfdxvTp0/nZz3622vial6av61L1PfbYg8suu4yvf/3rHH744Xzwgx/k0EMPXW2bNX9Ha5NNNgHgiSeeYPPNN2fRokXDei/SaPHehlIfNt10Ux5++GEAdt99d84//3xWrlzJsmXLuOyyy9h1111XmwO9I6Ytt9ySZzzjGXz+859n5cqVw3qtffbZh1NOOYUVK1YAcOutt/LrX/+ahx56iPe///1cdtllPPDAA785MgP46le/yqOPPsoDDzzA97//fRYsWLDWOu+8805mzpzJO9/5To488kiuv753N7eZM2dyyy238MQTT3DhhRcOWttmm23G7Nmz+fKXvwz0gvaGG25Y/4ZK6+npeeTlufTJZwP3dYsttmC33XZj7ty57Lfffuy4447stNNOJOFv/uZveMELXsAWW2zBlClT2GmnnTj88MM5+uijefOb38w555zDvvvu+5ujl6EceeSR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\n", + "text/plain": [ + "<Figure size 504x360 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "df_saps_table = df_saps.style.format({'total_exposure': to_timedelta}).set_caption(f'SAPs - {project_id}')\n", + "ax_saps = df_saps.plot.bar(title=f'SAPs - {project_id}', color=['#ffd95a'], figsize=(7,5))\n", + "display(df_saps_table)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9d40699f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}