Skip to main content

Measurement Data Schema

Instructions

Below are file templates to utilize for your future data upload(s). Your upload must match the template exactly in order to be an acceptable input. Once you upload, your files will be validated to verify whether it meets the accepted template requirements.

Accepted File Types

  • Comma Separated Value files (.csv) with string fields being optionally qualified by Double Quotes (see examples below)
  • Tab Separated Value files (.tsv) with string fields being optionally qualified by Double Quotes (see examples below)

Customer Data File

File requirements

  • Customer Data file names must begin with customer_data_ and end with the appropriate file type suffix (.csv or .tsv)
  • If providing a csv file, if any delimiters are present in any field values, all values must be wrapped in double quotes
  • Files must have a header row that contains all required fields, and a field name for each preferred data column provided
  • The location of each Premise must be included by either providing both latitude and longitude columns or by providing a premise_address field. If both are available, Recurve prefers latitude and longitude. A mix of both types of address requirements across customers is acceptable (ie. It's acceptable to provide address for Customer A, and provide lat/long for Customer B in the same file)
  • "Null" values should only be passed as empty values

Examples of acceptable file names

  • customer_data__20240204.csv
  • customer_data_westernRegion.csv

Examples of unacceptable file names

  • West-region-customer_data_.csv (does not begin with service_point_data)
  • customer_data_Jan2024.txt (does not end in appropriate file type suffix)
Field NameExample Field ValuesAcceptable Data TypeField RequirementsRequired or Preferred?Nullable "Null" values should only be passed as empty valuesDescription
service_point_id"“9471297459” “df-443-jk”"STRINGAn identifier for a particular service point. This identifier should remain unchanged across data uploads.RequiredNoA specific location at a premise where utilities supply service, or where usage occurs. Multiple service_point_ids can belong to a single premise_id. For example, a single premise_id will often have 1 electric and 1 gas service_point_id. Not to be confused with a meter_id. If a physical meter was replaced at a specific location, the service_point_id would remain unchanged, but the meter_id would change.
fuel_type“gas” “electricity”“gas” / “electricity”Must contain one the two allowed values.RequiredNoType of energy load being measured at service point. Should be electric or gas.
premise_id“Efa43-98323” “553423”STRINGThis is a location identifier that can connect all meters at a given location and should remain unchanged across data uploadsRequiredNoUnique identifier for the address/physical location where the utility supplies a service (gas or electric meter). Typically there should only be a single premise_id for a given site, especially for residential services. Multiple service_point_ids can belong to a single premise_id.
premise_address“440 N Barranca Ave #8958, Covina, CA 91723”STRINGStreet address, city, state abbreviation, zipcode, or null if latitude / longitude is provided.RequiredYes (see requirements)The address of the site as street number, street, city, state, zip code. For all address fields, we are seeking site address information as opposed to billing address information.
premise_latitude37.8957507FLOATA valid latitude or null if premise_address is provided.RequiredYes (see requirements)Latitude for the location - can be generated by Recurve from premise_address field if not provided.
premise_longitude-122.552748FLOATA valid longitude or null if premise_address is provided.RequiredYes (see requirements)Longitude for the location - can be generated by Recurve from premise_address field if not provided.
timezone“America/Los_Angeles” “America/Chicago”Valid TZ NameA valid TZ Name per the current version of the tx database. Values can be found here: https://cloud.google.com/looker/docs/reference/param-view-timezone-valuesRequiredNoValid timezone for the customer, based on the tx database
sector“commercial” “residential” "industrial“commercial” / “residential” / "industrial"Must contain one the three allowed values.RequiredNoHigh level sector classification for the customer
naics_code“541690” “812113”Valid NAICS codeA valid NAICS code (not group!) for the premise if sector is ”commercial” or null for residential premises.RequiredYes (see requirements)Any valid NAICS code per https://www.census.gov/naics/
rate_code“RES9434”STRINGRequiredNoCustomer billing rate code. Any rate/tariff supported by the utility in question, for example, https://www.pge.com/tariffs/index.page
is_net_metering“true” “false”“true” / “false”Only applies to electric service points. If uncertain for electric service point, default should be false. If gas service point, should always be false.RequiredNoIndicates presence of any energy generation at the service point.
is_low_income“true” “false”“true” / “false”PreferredYesLow/Medium income status flag
account_id“834712387” “23bed-98ae"STRINGPreferredYesUnique identifier for a customer's account, this account may be linked to numerous premises and meters, especially in the case of commercial customers
service_agreement_id"9876543210"STRINGPreferredYesUnique identifier for a customer at a particular service_point. This allows us to connect a service point to specific customers' demographics and financials, such as NAICS code and rate code.
customer_name"Smith, John" “Recurve Analytics, Inc"STRINGPreferredYesFull name of customer
customer_phone_number“8005551212” “1-800-555-1212”STRINGPreferredYesPhone number for customer
customer_email"john.smith@recurve.com" "recurveanalytics@recurve.com"STRINGPreferredYesEmail address for customer
customer_language_preference“en” “es” “Spanish” “English”STRINGPreferredYesCustomer language preference
climate_zone“Mixed-Dry” “Cold”Valid Climate Zone ValueBuilding America Climate Zones can be found here: https://atlas.eia.gov/datasets/eia::climate-zones-doe-building-america-program/aboutPreferredYesBuilding America Climate Zone
CA_climate_zone“CZ10” “CZ14”Valid California Climate Zone ValueOnly applies to California customers. California Building Climate Zones can be found here: https://gis.data.ca.gov/documents/CAEnergy::building-climate-zones/aboutPreferredYesCalifornia Climate Zone
utility_name"SCE" "PG&E"STRINGRequiredNoName of Utility. If energy_provider_name is populated, should be the long spelled out version of the name of the utility delivering the energy, or the IOU
energy_provider_name"PG&E" "SCE" "MCE"STRINGPreferredYesName of energy provider - can be different from the Utility name in certain cases
service_agreement_open_date2020-08-21 2020-08-25STRINGMust contain a date.RequiredNoDate that the service agreement was opened (applies to the service_agreement_id)
service_agreement_close_date2020-08-21 2020-08-25STRINGMust contain a date, even if the agreement has not yet ended.RequiredNoDate that the service agreement was closed (applies to the service_agreement_id). If the agreement has not yet closed, provide a date far in the future, such as 9099-12-31
service_agreement_status"Open" "Closed"STRINGPreferredYesIs the service agreement open or closed (applies to the service_agreement_id)

Sample Customer Data

service_point_idpremise_idfuel_typepremise_addresspremise_latitudepremise_longitudetimezonesectornaics_coderate_codeis_net_meteringis_low_incomecustomer_namecustomer_phone_numbercustomer_emailcustomer_language_preferenceclimate_zoneca_climate_zoneutility_nameFIELD20
6763121391234Electric100 California Ave, San Francisco, CA, 9411137.817388-122.372144America/Los_Angelescommercial922600B4-100TRUETRUEJohn Smith(800)555-1212customer1@example.comenglishCoolZ03Electrons R' Us
6763121405678Electric101 California Ave, San Francisco, CA, 9411137.817388-122.372144America/Los_Angelescommercial922600B4-100TRUETRUEJohn Smith(800)555-1212customer2@example.comenglishCoolZ03Electrons R' Us
6763121419101Electric102 California Ave, San Francisco, CA, 9411137.817388-122.372144America/Los_Angelescommercial922600B4-100TRUETRUEJohn Smith(800)555-1212customer3@example.comenglishCoolZ03Electrons R' Us
6763121422134Electric103 California Ave, San Francisco, CA, 9411137.817388-122.372144America/Los_Angelescommercial922600B4-100TRUETRUEJohn Smith(800)555-1212customer4@example.comenglishCoolZ03Electrons R' Us

Project Intervention Data File

(File not required if using Project Hub enrollment to collect project data)

File requirements

  • Project Intervention Data Files must start with project_intervention_data_ and end with the appropriate file type suffix (.csv or .tsv)
  • If providing a csv file, if any delimiters are present in any field values, all values must be wrapped in double quotes
  • Files must have a header row that contains all required fields, and a field name for each preferred data column provided
  • "Null" values should only be passed as empty values
  • Should include data at the intervention level, and then the interventions aggregate into projects - there should not be a need for any pre-aggregated project data

Examples of acceptable file names

  • project_data__20240204.csv
  • project_data_june2024.csv

Examples of unacceptable file names

  • West-region-project_data_.csv (does not begin with service_point_data)
  • customer_data_Jan2024.txt (does not end in appropriate file type suffix)
Field NameExample Field ValuesAcceptable Data TypeField RequirementsRequired or Preferred?Nullable "Null" values should only be passed as empty valuesDescription
included_service_point_ids"9471297459, 9471297000” “df-443-jk”STRINGShould include ALL Service Point Identifiers for the intervention. This list of service point IDs must be separated by commas and all wrapped in double quotes.RequiredNoA specific location at a premise where utilities supply service, or where usage occurs. Multiple service_point_ids can belong to a single premise_id. For example, a single premise_id will often have 1 electric and 1 gas service_point_id. Not to be confused with a meter_id. If a physical meter was replaced at a specific location, the service_point_id would remain unchanged, but the meter_id would change.
intervention_start_date2020-08-21 2020-08-25DATERequiredNoDate work began on intervention
intervention_end_date2024-10-1 2024-11-2DATERequiredNoDate work completed on intervention
measure_category"Lighting" "Heat Pump Water Heater"STRINGStandard Measure Categories will be provided by Recurve.PreferredNoRecurve defined measure categories - to be mapped based on the provided measure name.
measure_name"Heat Pump Retrofit" "Heat Pump Water Heater" "Attic Insulation"STRINGRequiredNoClient provided measure name information
contractor"John Doe's Energy Efficiency Co" "Best Lighting Upgrades Inc"STRINGRequiredNoName of contractor or aggregator performing the work of the measure install
effective_useful_life12INTEGERRequiredNoExpected number of years the installed measure will be useful.
predicted_savings_kwh1000.00FLOATRequiredYesPredicted measure savings for use in realization rate (kWh)
predicted_savings_therms30.00FLOATRequiredYesPredicted measure savings for use in realization rate (therms)
program_name"Utility Demand Flexibility Program" "Summer Peak Reduction Program"STRINGRequiredNoName of program to include this work
intervention_id"project_d2_799" "ee_882"STRINGRequiredNoUnique id for the intervention/measure. If intervention id is provided, it will take priority in the user display.
contractor_address“364 Ridgewood Ave, Mill Valley, CA, 94941”PreferredYes
provided_project_id"p_123" "ee_005"STRINGPreferredYesAggregator or other provided project id. This can be repeated across multiple interventions (i.e. multi measure projects)
exante_annual_savings_kwh500.00FLOATPreferredYesDeemed measure gross annual electricity savings (kWh)
exante_annual_savings_therms40.00FLOATPreferredYesDeemed measure gross annual electricity savings (therms)
cost_currency"USD"STRINGPreferredYesThe currency used with the costs provided. For display purposes only.
cost_customer70.00FLOATPreferredYesThe cost that the customer incurred for the intervention.
cost_incentive15.00FLOATPreferredYesThe incentive provided for the intervention.
cost_utility15.00FLOATPreferredYesThe cost that the utility incurred for the intervention, separate from cost paid by customer or incentives.
num_units2INTEGERPreferredYesThe number of units installed with the intervention.
equipment_make"Goodman"STRINGPreferredYesThe make associated with the intervention.
equipment_model"2.5 Ton SEER20"STRINGPreferredYesThe make associated witht the intervention.
measure_details"integrated" "split system"STRINGOptionalYesAn optional field to include any extra details about the measure, such as the configuration information.

Sample Project Intervention Data

included_service_point_idsintervention_start_dateintervention_end_datemeasure_categorycontractoreffective_useful_lifepredicted_savings_kwhpredicted_savings_thermsprogram_nameintervention_idcontractor_addressprovided_project_idexante_annual_savings_kwhexante_annual_savings_thermscost_currencycost_customercost_incentivecost_utilitynum_unitsequipment_makeequipment_model
9972820192, 98243835445/28/206/9/20Heat Pump Water HeaterJohn Doe's Energy Efficiency Co151433.5841.33Electrification Programproject_409734 Main St, Anytown, CA, 90210ee_147759.0622.19USD136.9233.1622.431Goodman2.5 Ton SEER20
9744285192, 99035032217/8/207/20/20HVAC RetrofitBest Lighting Upgrades Inc11837.227.62Summer Peak Reduction Programproject_325806 Main St, Anytown, CA, 90210ee_978927.9739.46USD95.2231.6144.531Trane1.5 Ton SEER21
9348479924, 92681117512/7/202/19/20Heat Pump Water HeaterBest Lighting Upgrades Inc151370.7412.08Electrification Programproject_255552 Main St, Anytown, CA, 90210ee_993914.6737.06USD68.2131.0941.581Carrier2.5 Ton SEER20
9625885908, 980586008812/16/2012/28/20Heat Pump Water HeaterBest Lighting Upgrades Inc151481.6234.69Electrification Programproject_647177 Main St, Anytown, CA, 90210ee_713244.3816.88USD189.9823.0711.351Goodman2.5 Ton SEER20
9017942800, 97913439924/5/204/17/20Heat Pump Water HeaterBest Lighting Upgrades Inc15547.8232.07Electrification Programproject_828815 Main St, Anytown, CA, 90210ee_418526.5714.11USD191.4322.2149.841Carrier1.5 Ton SEER21

Service Point Interval Data File

File requirements

  • Service Point Interval Data file names must begin with service_point_data_ and end with the appropriate file type suffix (.csv or .tsv)
  • If providing a csv file, if any delimiters are present in any field values, all values must be wrapped in double quotes
  • Files must have a header row that contains all required fields
  • Note that at this time, all Interval Data fields are required (none are Preferred)
  • Electric: Must be hourly or 15 minute interval data
  • Gas: Must be daily interval data
  • "Null" values should only be passed as empty values

Examples of acceptable file names

  • service_point_data_20240204.csv
  • service_point_data_westernRegion.csv

Examples of unacceptable file names

  • West-region-service-point-data.csv (does not begin with service_point_data)
  • service_point_data.txt (does not end in appropriate file type suffix)
Field NameExample Field ValuesAcceptable Data TypeField RequirementsRequired or Preferred?Nullable "Null" values should only be passed as empty valuesDescription
service_point_id“9471297459” “df-443-jk”STRINGAn identifier for a particular service point. This identifier should remain unchanged across data uploads.RequiredNoA specific location at a premise where utilities supply service, or where usage occurs. Multiple service_point_ids can belong to a single premise_id. For example, a single premise_id will often have 1 electric and 1 gas service_point_id. Not to be confused with a meter_id. If a physical meter was replaced at a specific location, the service_point_id would remain unchanged, but the meter_id would change.
start“2024-07-23 18:00:00 UTC” “2022-04-09T15:00:00-07:0”TIMESTAMPValid date and time including timezone in ISO 8601 formatRequiredNoTimestamp that indicates the start of the interval read
usage32.44502 0.9754912312FLOATElectric: Must be hourly or 15 min interval data represented by kWh Gas: Must be daily interval data represented by Therms Must be a positive usage value. (If total usage for a given start is negative, it should be sent as a positive value with “received” as the direction value per below).RequiredYesAmount of energy consumed between the starting interval read and the next interval read. Can be null if known to be missing.
direction“received” “delivered”“received” / “delivered”RequiredNoDirection of energy flow to indicate whether the interval read is being received by the Utility from the customer, or delivered from the Utility to the customer.

Sample Interval Data

service_point_idstartusagedirection
6866569232025-04-01 07:00:00 UTC0delivered
6866569242025-04-01 07:00:00 UTC1.25delivered
6866569252025-04-01 07:00:00 UTC2.888delivered
6866569262025-04-01 07:00:00 UTC0.4delivered
6866569272025-04-01 07:00:00 UTC0.8991delivered
6866569282025-04-01 07:00:00 UTC0.4delivered
6866569292025-04-01 07:00:00 UTC1.3757delivered
6866569302025-04-01 07:00:00 UTC0.452delivered
6866569312025-04-01 07:00:00 UTC0.5224delivered
6866569322025-04-01 07:00:00 UTC0.86636delivered
6866569332025-04-01 07:00:00 UTC1.281delivered
6866569342025-04-01 07:00:00 UTC0.122delivered
6866569352025-04-01 07:00:00 UTC1.2878delivered
6866569362025-04-01 07:00:00 UTC0.119delivered
6866569372025-04-01 07:00:00 UTC0.144delivered
6866569382025-04-01 07:00:00 UTC0.191delivered
6866569392025-04-01 07:00:00 UTC0.1936delivered
6866569402025-04-01 07:00:00 UTC0.1654delivered
6866569412025-04-01 07:00:00 UTC0.1488delivered