Coverage for jstark / mealkit / average_quantity_per_order.py: 100%
16 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-23 22:34 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-03-23 22:34 +0000
1"""AvgQuantityPerBasket feature"""
3import pyspark.sql.functions as f
4from pyspark.sql import Column
6from jstark.features.feature import DerivedFeature
7from jstark.features.quantity import Quantity
8from .order_count import OrderCount
11class AvgQuantityPerOrder(DerivedFeature):
12 def column_expression(self) -> Column:
13 return f.try_divide(
14 Quantity(
15 self.as_at,
16 self.feature_period,
17 first_day_of_week=self._first_day_of_week,
18 ).column,
19 OrderCount(
20 self.as_at,
21 self.feature_period,
22 first_day_of_week=self._first_day_of_week,
23 ).column,
24 )
26 @property
27 def description_subject(self) -> str:
28 return "Average Quantity per Order"
30 @property
31 def commentary(self) -> str:
32 return (
33 "Total Quantity divided by the number of orders. "
34 + "Very useful to know how large, on average, each order is."
35 )
37 def default_value(self) -> Column:
38 return f.lit(None)