Knowledge Base

Stores data collected and predicted by the Analyser. Can be queried by Analyser for retraining or Planner for predictions.

Connection

Build on top of SQLAlchemy to interact with Knowledge Base.

class driftage.db.connection.Connection(db_engine: sqlalchemy.engine.base.Engine, bulk_size: int, bulk_time: Union[int, float], circuit_breaker: aiobreaker.circuitbreaker.CircuitBreaker = <aiobreaker.circuitbreaker.CircuitBreaker object>)

Connects with SQLAlchemy Engine to store and query data for concept drift datection.

Parameters
  • db_engine (Engine) – SQLAlchemy Engine to use as backend

  • bulk_size (int) – Quantity of data that connection will wait to make bulk insert

  • bulk_time (Union[int, float]) – Time in seconds between last insert and now. If bulk_size is not reached in bulk_time interval, then an insert was done

  • circuit_breaker (CircuitBreaker, optional) – Circuit Breaker configuration to connect with Database, defaults to CircuitBreaker()

async get_between(column: sqlalchemy.sql.schema.Column, from_datetime: datetime.datetime, to_datetime: datetime.datetime) → pandas.core.frame.DataFrame

Collects data between dates from database.

Parameters
  • column (Column) – Database column from schema

  • from_datetime (datetime) – Start Datetime to search

  • to_datetime (datetime) – End Datetime to search

Returns

Data got from specified date range

Return type

pd.DataFrame

async lazy_insert(df: pandas.core.frame.DataFrame)

Insert in database if bulk size or bulk time reached.

Parameters

df (pd.DataFrame) – Data to be inserted

Schema

Schema from data stored and predicted.

Definitions from table where predicted drifts are stored:

Table:

driftage_kb or defined by DRIFTAGE_TABLENAME enviroment variable

Columns:
  • driftage_jid: ID from the Analyser that predicted and saved data

  • driftage_datetime_monitored: Datetime of collected data

  • driftage_datetime_analysed: Datetime of analysed data

  • driftage_identifier: Identifier from the Monitor that collected data

  • driftage_data: Json type object from data collected

  • driftage_predicted: True or False depending on if data is drift or not