Source code for rook.dashboard.tables.overview

import pandas as pd
from bokeh.models import ColumnDataSource, DataTable, TableColumn

from ..models import concurrent_requests
from .base import TableView


[docs] class OverviewTable(TableView): def __init__(self, df, df_downloads): super().__init__(df) self.df_downloads = df_downloads
[docs] def data(self): # requests total = self.df.uuid.count() failed = self.df.loc[self.df["status"] == 5].uuid.count() # requests per day counts = self.df.groupby(pd.Grouper(key="time_start", freq="1D")).uuid.count() # duration duration = self.df["time_end"] - self.df["time_start"] duration = duration.dt.seconds duration = duration[lambda x: x > 0] # concurrency cdf = concurrent_requests(self.df) running = cdf.groupby(pd.Grouper(key="time", freq="1D")).running.max() # downloads downloads = self.df_downloads.groupby( pd.Grouper(key="datetime", freq="1D") ).request_type.count() # data transfer tdf = self.df_downloads.groupby(pd.Grouper(key="datetime", freq="1D")).sum() tdf["size"] = tdf["size"].apply(lambda x: x / 1024**3) transfer = tdf["size"] data_ = dict( property=[ "Total Requests", "Failed Requests", "Requests per day (min/max/median)", "Duration (min/max/median)", "Concurrency per day (min/max/median)", "Downloads per day (min/max/median)", "Data transfer per day (min/max/median)", "Total data transfer", "Data transfer per request", ], value=[ total, failed, f"{counts.min()} / {counts.max()} / {counts.median()}", f"{duration.min()} / {duration.max()} / {duration.median()}", f"{running.min()} / {running.max()} / {running.median()}", f"{downloads.min()} / {downloads.max()} / {downloads.median()}", f"{transfer.min():.2f} GB / {transfer.max():.2f} GB / {transfer.median():.2f} GB", f"{transfer.sum():.2f} GB", f"{transfer.sum() / (total - failed):.2f} GB", ], ) return data_
[docs] def table(self): columns = [ TableColumn(field="property", title="Property"), TableColumn(field="value", title="Value"), ] table = DataTable(source=ColumnDataSource(self.data()), columns=columns) return table