# Timeseries Agg

Date-based; Calculates a rolling aggregate based on a relative datetime window.

Pass in a date column, date\_part and offsets to create look-back or look-forward windows.

Example use case: Aggregate all sales for a product with order dates within 2 months of this current order.

## Parameters

| Name         | Type         | Description                                                                                                                                                                               | Is Optional |
| ------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| aggregations | agg\_dict    | Dictionary of columns and aggregate functions to apply. A column can have a list of multiple aggregates applied. One column will be created for each column:aggregate pair.               |             |
| date         | column       | Column used to calculate the time window for aggregation                                                                                                                                  |             |
| offsets      | int\_list    | List of numeric values to offset the date column Positive values apply a look-back window. Negative values apply a look-forward window. One column will be created for each offset value. |             |
| date\_part   | date\_part   | Valid SQL date part to describe the grain of the date\_offset                                                                                                                             |             |
| group\_by    | column\_list | Column(s) to group by when calculating the agg window                                                                                                                                     | True        |

## Example

```python
internet_sales = rasgo.get.dataset(74)

ds = internet_sales.timeseries_agg(
        aggregations={
          "SALESAMOUNT": ['SUM', 'MIN', 'MAX']
        },
        group_by=['PRODUCTKEY'],
        date='ORDERDATE',
        offsets=[-7, -14, 7, 14],
        date_part='MONTH'
       )

```

## Source Code

{% embed url="<https://github.com/rasgointelligence/RasgoTransforms/blob/main/rasgotransforms/rasgotransforms/transforms/timeseries_agg/snowflake/timeseries_agg.sql>" %}
