Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions aw_analysis/query2.py
Original file line number Diff line number Diff line change
Expand Up @@ -325,8 +325,8 @@ def _parse_token(string: str, namespace: dict): # TODO: Add return type

def create_namespace() -> dict:
namespace = {
"TRUE": 1,
"FALSE": 0,
"True": True,
"False": False,
}
return namespace

Expand Down
8 changes: 8 additions & 0 deletions aw_analysis/query2_functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
sort_by_timestamp,
sort_by_duration,
sum_durations,
concat,
split_url_events,
simplify_string,
flood
Expand Down Expand Up @@ -215,6 +216,13 @@ def q2_sum_durations(events: list) -> timedelta:
return sum_durations(events)


@q2_function
def q2_concat(events1: list, events2: list) -> List[Event]:
_verify_variable_is_type(events1, list)
_verify_variable_is_type(events2, list)
return concat(events1, events2)


"""
Flood functions
"""
Expand Down
2 changes: 1 addition & 1 deletion aw_transform/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from .heartbeats import heartbeat_merge, heartbeat_reduce
from .merge_events_by_keys import merge_events_by_keys
from .chunk_events_by_key import chunk_events_by_key
from .sort_by import sort_by_timestamp, sort_by_duration, sum_durations
from .sort_by import sort_by_timestamp, sort_by_duration, sum_durations, concat
from .split_url_events import split_url_events
from .simplify import simplify_string
from .flood import flood
9 changes: 8 additions & 1 deletion aw_transform/sort_by.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import logging
from datetime import datetime, timedelta
from typing import List

from aw_core.models import Event

logger = logging.getLogger(__name__)
Expand All @@ -10,11 +9,19 @@
def sort_by_timestamp(events) -> List[Event]:
return sorted(events, key=lambda e: e.timestamp)


def sort_by_duration(events) -> List[Event]:
return sorted(events, key=lambda e: e.duration, reverse=True)


def limit_events(events, count) -> List[Event]:
return events[:count]


def sum_durations(events) -> timedelta:
return timedelta(seconds=(sum(event.duration.total_seconds() for event in events)))


def concat(events1, events2) -> List[Event]:
events = events1 + events2
return events