DynamoDB utils
Project description
DynamoDB Package for detech.ai
This is detech.ai's package to access Dynamodb.
Imports
import detech_query_pkg
from detech_query_pkg import dynamodb
from detech_query_pkg.utils import dynamodb_utils
Functions
dynamodb
insert_alert
def insert_alert(alert_id, metric_id, org_id, app_id, team_id, assigned_to, start_time, end_time, alert_description, is_acknowledged, anomalies_dict, related_prev_anomalies, service_graph, significance_score, dynamodb)
#Example
insert_alert(alert_id = "256828", metric_id = 123, org_id = 'org_id', app_id = 'app_id', team_id = 'team_id', assigned_to = 'Jorge', \
start_time = '2020-09-03 12:00:00', end_time = '2020-09-03 12:20:00', alert_description = 'Spike in costs',\
is_acknowledged = 'True', anomalies_dict = {}, related_prev_anomalies = {},
service_graph = {}, significance_score = '34.3')
get_alert_item_by_key
def get_alert_item_by_key(anom_id, dynamodb)
update_alert_with_related_anomalies
def update_alert_with_related_anomalies(alert_id,start_time, corr_anoms_dict, related_prev_anomalies, dynamodb)
terminate_alert
def terminate_alert(alert_id,start_time, end_timestamp, dynamodb)
create_metric
def create_metric(metric_id, date_bucket, anom_alarm_id, metric_name, provider, namespace, agent, org_id, app_id, alignment, groupby, first, last, data_points_list, dynamodb)
#Example
create_metric(
metric_id = 123, date_bucket = "2020-09-10",
anom_alarm_id = "crazy_monkey.juicy_bananas.kiwi_count", metric_name = "error_rate",
provider = "aws", namespace = "dynamodb", agent = "CloudWatch", org_id = "Aptoide",
app_id = "app1", alignment = "DELTA", groupby = "service", first = 1535530412,
last = 1535530432, data_points_list = [
{ 'val': 50, 'time': 1535530412},
{ 'val': 55, 'time' : 1535530415},
{ 'val': 56, 'time': 1535530420},
{ 'val': 55, 'time' : 1535530430},
{ 'val': 56, 'time': 1535530432}
]
)
get_metric_item_by_key
def get_metric_item_by_key(metric_id, curr_date, dynamodb)
scan_metrics_by_encrypted_id
def scan_metrics_by_encrypted_id(anom_alarm_id, dynamodb)
query_alerts_configs_by_key
def query_alerts_configs_by_key(metric_id, dynamodb)
insert_alert_config
def insert_alert_config(metric_id, alert_title, severity, alert_type, alert_direction, description, duration, duration_unit, rule_dict, recipients_list, owner_dict, dynamodb)
#Example
insert_alert_config(
metric_id = "metric1245", alert_title = "Anomaly by Cluster", severity = "critical",
alert_type = "anomaly", alert_direction = "spikes/drops", description = "Relevant to Play Store billing user journey",
duration= 12, duration_unit = "hours", rule_dict = {}, recipients_list = [{
"channel" : "webhook",
"contact" : "j.velez2210@gmail.com"
},{
"channel" : "slack",
"contact" : "j.velez2210@gmail.com"
}
],
owner_dict = {
"user_id" : "user12341",
"user_name" : "João Tótó",
}
)
query_most_recent_metric_fetching_log
def query_most_recent_metric_fetching_log(component_id, dynamodb)
#Fetches the log with the highest timestamp, from all the logs between start & end ts
dynamodb_utils
put_item
def put_item(item_dict, table_name, dynamodb)
#Inserts json item into DynamoDB table
#Example
item_dict = {
"attr" : "value",
"attr2" : "value2"
}
table_name = "alerts"
get_item
def get_item(key_dict, table_name, dynamodb)
#Retrieves item from DynamoDB table
#Example
key_dict = {
"prim_key" = "value",
"sort_key" = "value"
}
update_item
def update_item(key_dict, update_expression, expression_attr_values, table_name, dynamodb)
#Retrieves item from DynamoDB table
#Example
key_dict = {
"prim_key" = "value",
"sort_key" = "value"
}
update_expression = "set service_graph=:i, metric_list=:l, significance_score=:s"
expression_attr_values = {
':i': {'s1':['s2', 's3']},
':l': ['124','123'],
':s': Decimal(35.5)
}
#example to append to list
UpdateExpression="SET some_attr = list_append(if_not_exists(some_attr, :empty_list), :i)",
ExpressionAttributeValues={
':i': [some_value],
"empty_list" : []
}
update_item_conditionally
def update_item_conditionally(key_dict, condition_expression, update_expression, expression_attr_values, table_name, dynamodb)
#Retrieves item from DynamoDB table
#Example
key_dict = {
"prim_key" = "value",
"sort_key" = "value"
}
update_expression = "set service_graph=:i, metric_list=:l, significance_score=:s"
expression_attr_values = {
':i': {'s1':['s2', 's3']},
':l': ['124','123'],
':s': Decimal(35.5)
}
condition_expression = "significance_score <= :val"
delete_item_conditionally
def delete_item_conditionally(key_dict, condition_expression, expression_attr_values, table_name, dynamodb)
#Example
condition_expression = "significance_score <= :val"
expression_attr_values = {
":val": Decimal(50)
}
key_dict = {
'org_id': 'Aptoide',
'start_time': '2020-09-03 12:00:00'
}
'''
query_by_key
def query_by_key(key_condition, table_name, dynamodb)
#Queries from DynamoDB table by key condition
#Example
key_condition = Key('org_id').eq('Aptoide')
query_and_project_by_key_condition
def query_and_project_by_key_condition(projection_expr, expr_attr_names, key_condition, table_name, dynamodb)
#Queries from DynamoDB table by key condition and only returns some attrs
#Example
key_condition = Key('year').eq(year) & Key('title').between(title_range[0], title_range[1])
projection_expr = "#yr, title, info.genres, info.actors[0]"
expr_attr_names = {"#yr": "year"}
scan_table
def scan_table(scan_kwargs, table_name, dynamodb)
#Scans entire table looking for items that match the filter expression
#Example
scan_kwargs = {
'FilterExpression': Key('year').between(*year_range),
'ProjectionExpression': "#yr, title, info.rating",
'ExpressionAttributeNames': {"#yr": "year"}
}
query_by_key_min_max
def query_by_key_min_max(key_condition, table_name, is_min, dynamodb)
#Queries from DynamoDB table by key condition
#Example
key_condition = Key('part_id').eq(partId) & Key('range_key').between(start, end)
#or
key_condition = Key('part_id').eq(partId)
get_all_items_in_table
def get_all_items_in_table(table_name, dynamodb)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for dynamodb_detech_ai-0.0.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c0a3671e2f7196b4ed5e567d8081edb15b64a7bab4853ac131f7acb632d9194 |
|
MD5 | baf53f9903057ed47a10603503eff661 |
|
BLAKE2b-256 | 9e8621363674db2f398508dd14f786ea8b7a78775eca4cb46b4f280db7b07919 |