Step 5: Reconcile with the Savings Analysis Response
Compare hourly validation calculations against aggregate Savings Analysis summary, series, and scenario values.
Reconcile hourly validation calculations with the aggregate Savings Analysis response.
Use this step after you retrieve pre-solar and post-solar hourly Account Cost Calculations. Confirm that the granular hourly behavior is consistent with the annual or lifetime values returned by the Savings Analysis.
Reconciliation workflow
- Confirm the Savings Analysis date range and duration.
- Export or sum the hourly pre-solar Account Cost Calculation results for the same period.
- Export or sum the hourly post-solar Account Cost Calculation results for the same period.
- Compare pre-solar totals against the Savings Analysis
beforevalues. - Compare post-solar totals against the Savings Analysis
aftervalues. - Compare the difference between pre-solar and post-solar totals against the savings values.
- Review the
scenarios[],series[], andseriesData[]arrays to confirm the inputs and time periods align.
Review the Savings Analysis response
The Savings Analysis response includes the aggregate results and the inputs used to create each scenario. The response is aggregated to a minimum duration of one year, so compare hourly calculations against the same duration when reconciling totals.
The following response has been shortened to show the top-level summary and first series entries:
{
"status": "success",
"count": 1,
"type": "AccountAnalysis",
"results": [
{
"designId": null,
"dataStatus": 2,
"currency": "USD",
"summary": {
"lifeTimeUtilityAfterCost": 49139.630,
"lifeTimeUtilityAvoidedRate": 0.217,
"lifetimeAvoidedCost": 17882.260,
"lifetimeSolarCost": 28865.310,
"lifetimeWithoutCost": 95887.200,
"netAvoidedCost": 1934.05,
"netAvoidedCostPctOffset": 0.5704,
"netAvoidedKWh": 12369.26,
"netAvoidedKWhPctOffset": 1.2328,
"netAvoidedRate": 0.156359,
"postTotalCost": 1456.630000,
"postTotalKWh": -2336.139644,
"postTotalKWhCost": 1276.261261,
"postTotalKWhRate": 0.156359,
"postTotalMinCost": 0.000000,
"postTotalNonBypassableCost": 0.000000,
"postTotalNonMinCost": 1456.629721,
"postTotalRate": -0.623521,
"preTotalCost": 3390.680000,
"preTotalKWh": 10033.123826,
"preTotalKWhCost": 3210.307763,
"preTotalKWhRate": 0.319971,
"preTotalMinCost": 0.000000,
"preTotalNonBypassableCost": 0.000000,
"preTotalNonMinCost": 3390.676223,
"preTotalRate": 0.337949
},
"series": [
{
"seriesId": 1,
"fromDateTime": "2023-07-01T00:00:00-07:00",
"toDateTime": "2024-07-01T00:00:00-07:00",
"scenario": "before",
"displayLabel": "Before Solar Utility (Mo/Year 1)",
"seriesPeriod": "MONTH",
"seriesDuration": 12,
"rate": 0.33794858,
"qty": 10033.123826,
"cost": 3390.68
},
{
"seriesId": 2,
"fromDateTime": "2023-07-01T00:00:00-07:00",
"toDateTime": "2024-07-01T00:00:00-07:00",
"scenario": "after",
"displayLabel": "After Solar Utility (Mo/Year 1)",
"seriesPeriod": "MONTH",
"seriesDuration": 12,
"rate": -0.62352009,
"qty": -2336.139644000000,
"cost": 1456.63
},
{
"seriesId": 4,
"fromDateTime": "2023-07-01T00:00:00-07:00",
"toDateTime": "2024-07-01T00:00:00-07:00",
"scenario": "savings",
"displayLabel": "Total Savings (Mo/Year 1)",
"seriesPeriod": "MONTH",
"seriesDuration": 12,
"qty": 0,
"cost": 734.1665016624583266853144632300000000
}
]
}
]
}Compare summary values
Start with the summary object. These values are useful for validating whether the aggregate totals are consistent with the hourly calculations.
| Savings Analysis field | Compare against |
|---|---|
preTotalCost | Sum of pre-solar Account Cost Calculation costs for the same period. |
preTotalKWh | Sum of pre-solar consumption quantities for the same period. |
postTotalCost | Sum of post-solar Account Cost Calculation costs for the same period. |
postTotalKWh | Sum of post-solar net kWh for the same period. |
netAvoidedCost | Difference between pre-solar and post-solar costs, adjusted for modeled solar costs where applicable. |
netAvoidedKWh | Difference between pre-solar and post-solar kWh. |
Compare series values
Use the series[] array to confirm that you are comparing the correct scenario and time period.
| Series field | Purpose |
|---|---|
scenario | Identifies whether the series represents before, after, solar, or savings. |
fromDateTime / toDateTime | Defines the period represented by the series. |
seriesPeriod | Identifies the aggregation level, such as MONTH, YEAR, or ALL. |
seriesDuration | Identifies how many periods are included. |
qty | Aggregate quantity for the series. |
cost | Aggregate cost for the series. |
When reconciling hourly calculations, make sure the summed hourly range matches the fromDateTime and toDateTime values in the Savings Analysis series you are comparing.
Check scenario inputs
Review the scenarios[] array in the Savings Analysis response to confirm that the validation calculations used the same inputs.
Check that the response includes the expected values for:
masterTariffId- consumption profile ID
- solar profile ID
operatorrateInflationsolarDegradationterritoryId- any tariff-specific criteria or rate inputs
If an hourly validation calculation does not reconcile, differences in these inputs are the first thing to check.
Troubleshooting mismatches
If your hourly calculations do not reconcile with the Savings Analysis response, check the following:
| Issue | What to check |
|---|---|
| Date range mismatch | Confirm the hourly calculation range matches the Savings Analysis series range. |
| Time zone mismatch | Confirm fromDateTime and toDateTime use the same time zone as the Savings Analysis. |
| Profile mismatch | Confirm the same consumption and solar profiles are used. |
| Missing solar operator | Confirm the solar profile uses operator: "-" in post-solar calculations. |
| Tariff mismatch | Confirm the correct pre-solar and post-solar masterTariffId values are used. |
| Default profile included unexpectedly | Set includeDefaultProfile to false when passing profiles explicitly. |
| Different granularity | Confirm groupBy and detailLevel are appropriate for the comparison. |
Summary
You reconciled the hourly validation calculations against the aggregate Savings Analysis response by comparing matching date ranges, scenarios, profile inputs, tariffs, quantities, and costs.
Updated about 5 hours ago
