← Files Power BI DesktopARCHIVED FILE
scripts/support/forecast_primitives.py
1.11 KB · Oct 2, 2026 · 00:32 UTC
import json
import math
MONTH_NAMES = {
1: "Jan", 2: "Feb", 3: "Mar", 4: "Apr", 5: "May", 6: "Jun",
7: "Jul", 8: "Aug", 9: "Sep", 10: "Oct", 11: "Nov", 12: "Dec",
}
def num(value):
if value is None:
return 0.0
try:
if isinstance(value, float) and math.isnan(value):
return 0.0
return float(value)
except (TypeError, ValueError):
return 0.0
def clamp(value, low, high):
return max(low, min(high, value))
def load_rows(input_path):
with open(input_path, "r", encoding="utf-8-sig") as handle:
return json.load(handle).get("rows", [])
def first_value(row, names):
for name in names:
value = row.get(name)
if value not in (None, ""):
return value
return None
def month_label(year, month):
name = MONTH_NAMES.get(month)
return f"{name} {year}" if name else f"{month:02d}/{year}"
def conversion_probability(backlog, realized_sales, fallback):
if backlog <= 0:
return 0.0
observed = realized_sales / backlog
if observed > 0:
return clamp(observed, 0.10, 0.95)
return fallback
SHA-256: 3d11067ae75e8c1b695ed30c2107a2e7db24a1f50438a4fe56d8b9ca4a1997d0