from airflow.decorators import dag, task
from airflow.models import Variable
from datetime import datetime
from simulacrum import Simulacrum
@dag(schedule="0 * * * *", start_date=datetime(2024, 1, 1), catchup=False)
def simulacrum_forecasts():
@task
def produce_forecast(segment: str) -> list[float]:
client = Simulacrum(api_key=Variable.get("SIMULACRUM_API_KEY"))
series = load_series(segment) # retrieve from your warehouse
forecast = client.forecast(series=series, horizon=12, model="tempo")
persist_forecast(segment, forecast.tolist()) # write back to storage
return forecast.tolist()
produce_forecast.expand(segment=["enterprise", "smb", "consumer"])
doc = simulacrum_forecasts()