Coverage for jstark / grocery / average_gross_spend_per_basket.py: 100%

16 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-03-23 22:34 +0000

1"""AvgGrossSpendPerBasket feature""" 

2 

3import pyspark.sql.functions as f 

4from pyspark.sql import Column 

5 

6from jstark.features.feature import DerivedFeature 

7from jstark.features.gross_spend import GrossSpend 

8from .basket_count import BasketCount 

9 

10 

11class AvgGrossSpendPerBasket(DerivedFeature): 

12 def column_expression(self) -> Column: 

13 return f.try_divide( 

14 GrossSpend( 

15 self.as_at, 

16 self.feature_period, 

17 first_day_of_week=self._first_day_of_week, 

18 ).column, 

19 BasketCount( 

20 self.as_at, 

21 self.feature_period, 

22 first_day_of_week=self._first_day_of_week, 

23 ).column, 

24 ) 

25 

26 @property 

27 def description_subject(self) -> str: 

28 return "Average GrossSpend per Basket" 

29 

30 @property 

31 def commentary(self) -> str: 

32 return "Total GrossSpend divided by the number of baskets" 

33 

34 def default_value(self) -> Column: 

35 return f.lit(None)