-
Notifications
You must be signed in to change notification settings - Fork 0
/
user_dollar_spend_aggregates.py
31 lines (30 loc) · 1.14 KB
/
user_dollar_spend_aggregates.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from Fraud.entities import user
from Fraud.data_sources import transactions_batch
from tecton import batch_feature_view, FilteredSource, Aggregation
from datetime import datetime, timedelta
@batch_feature_view(
description='''Standard deviation of a user's transaction amounts
over a series of time windows, updated daily.''',
sources=[FilteredSource(transactions_batch)],
entities=[user],
mode='spark_sql',
online=True,
offline=True,
feature_start_time=datetime(2021,1,1),
aggregation_interval=timedelta(days=1), # This feature will be updated daily
aggregations=[
Aggregation(column='amt', function='stddev_samp', time_window=timedelta(days=10)),
Aggregation(column='amt', function='stddev_samp', time_window=timedelta(days=30)),
Aggregation(column='amt', function='stddev_samp', time_window=timedelta(days=60)),
Aggregation(column='amt', function='mean', time_window=timedelta(days=60))
]
)
def user_dollar_spend(transactions):
return f'''
SELECT
user_id,
amt,
timestamp
FROM
{transactions}
'''