data_for_fitting.py 961 B

1234567891011121314151617181920212223242526272829303132
  1. def data_for_fitting(*, building_id, date):
  2. """
  3. Retrieves data for fitting from the previous business day
  4. taking into account holidays
  5. """
  6. lease_start = None
  7. while lease_start is None:
  8. # Previous business day according to Pandas (might be a holiday)
  9. previous_bday = pd.to_datetime(date) - BDay(1)
  10. # If a holiday, this will return None
  11. lease_start = (
  12. db()
  13. .execute(
  14. building_daily_stats.select()
  15. .where(building_daily_stats.c.building_id == building_id)
  16. .where(building_daily_stats.c.date == previous_bday)
  17. )
  18. .fetchone()
  19. .lease_obligations_start_at
  20. )
  21. date = previous_bday
  22. # Retrieve 8 hours of data from the lease start
  23. return load_sensor_values(
  24. building_id=building_id,
  25. start_time=lease_start,
  26. end_time=lease_start + timedelta(hours=8),
  27. )