Skip to content

Commit

Permalink
Integrate EIA 861 2023 final release data (#3911)
Browse files Browse the repository at this point in the history
* Extract new archive

* WIP updates to extraction CSVs

* Fix duplicated column name

* Update clean_nerc docstring and add FRCC_NERC to enum

* Prevent silent column drops on write to sqlite, add energy_capacity column

* Update release notes

* Add under_1mw and over_1mw to table

* Update src/pudl/metadata/classes.py

Co-authored-by: Zane Selvans <[email protected]>

* Add -1s to 861 skipfooter map, update validation tests

---------

Co-authored-by: Zane Selvans <[email protected]>
  • Loading branch information
e-belfer and zaneselvans authored Oct 21, 2024
1 parent 7c72782 commit cb8b8c8
Show file tree
Hide file tree
Showing 35 changed files with 882 additions and 705 deletions.
7 changes: 7 additions & 0 deletions docs/release_notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,13 @@ EIA 860
~~~~~~~
* Added EIA 860 final release data from 2023. See :issue:`3684` and PR :pr:`3871`.

EIA 861
~~~~~~~
* Added EIA 861 final release data from 2023. See :issue:`3905` and PR :pr:`3911`. This
includes a new ``energy_capacity_mwh`` field for battery storage in
:ref:`core_eia861__yearly_net_metering_customer_fuel_class` and
:ref:`core_eia861__yearly_non_net_metering_customer_fuel_class`.

EIA 923
~~~~~~~
* Added EIA 923 final release data from 2023 and revised data from 2022. See
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
"""add under 1mw and over 1mw to tech enums
Revision ID: 450d100cd30b
Revises: d52742bec92a
Create Date: 2024-10-17 14:37:06.632766
"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '450d100cd30b'
down_revision = 'd52742bec92a'
branch_labels = None
depends_on = None


def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('core_eia861__yearly_distributed_generation_tech', schema=None) as batch_op:
batch_op.alter_column('tech_class',
existing_type=sa.VARCHAR(length=19),
type_=sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'storage_nonpv', 'all_storage', 'total', 'virtual_pv', 'virtual_pv_under_1mw', 'virtual_pv_over_1mw', 'wind'),
existing_nullable=True)

with op.batch_alter_table('core_eia861__yearly_net_metering_customer_fuel_class', schema=None) as batch_op:
batch_op.alter_column('tech_class',
existing_type=sa.VARCHAR(length=19),
type_=sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'storage_nonpv', 'all_storage', 'total', 'virtual_pv', 'virtual_pv_under_1mw', 'virtual_pv_over_1mw', 'wind'),
existing_nullable=True)

with op.batch_alter_table('core_eia861__yearly_non_net_metering_customer_fuel_class', schema=None) as batch_op:
batch_op.alter_column('tech_class',
existing_type=sa.VARCHAR(length=19),
type_=sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'storage_nonpv', 'all_storage', 'total', 'virtual_pv', 'virtual_pv_under_1mw', 'virtual_pv_over_1mw', 'wind'),
existing_nullable=True)

# ### end Alembic commands ###


def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('core_eia861__yearly_non_net_metering_customer_fuel_class', schema=None) as batch_op:
batch_op.alter_column('tech_class',
existing_type=sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'storage_nonpv', 'all_storage', 'total', 'virtual_pv', 'virtual_pv_under_1mw', 'virtual_pv_over_1mw', 'wind'),
type_=sa.VARCHAR(length=19),
existing_nullable=True)

with op.batch_alter_table('core_eia861__yearly_net_metering_customer_fuel_class', schema=None) as batch_op:
batch_op.alter_column('tech_class',
existing_type=sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'storage_nonpv', 'all_storage', 'total', 'virtual_pv', 'virtual_pv_under_1mw', 'virtual_pv_over_1mw', 'wind'),
type_=sa.VARCHAR(length=19),
existing_nullable=True)

with op.batch_alter_table('core_eia861__yearly_distributed_generation_tech', schema=None) as batch_op:
batch_op.alter_column('tech_class',
existing_type=sa.Enum('backup', 'chp_cogen', 'combustion_turbine', 'fuel_cell', 'hydro', 'internal_combustion', 'other', 'pv', 'steam', 'storage_pv', 'storage_nonpv', 'all_storage', 'total', 'virtual_pv', 'virtual_pv_under_1mw', 'virtual_pv_over_1mw', 'wind'),
type_=sa.VARCHAR(length=19),
existing_nullable=True)

# ### end Alembic commands ###
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
"""Add energy_capacity_mwh to net and non-net generation tables
Revision ID: d52742bec92a
Revises: 1fd5fac43603
Create Date: 2024-10-17 09:48:45.659743
"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = 'd52742bec92a'
down_revision = '1fd5fac43603'
branch_labels = None
depends_on = None


def upgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('core_eia861__yearly_net_metering_customer_fuel_class', schema=None) as batch_op:
batch_op.add_column(sa.Column('energy_capacity_mwh', sa.Float(), nullable=True, comment='The total amount of energy which the system can supply power before recharging is necessary, in megawatt-hours.'))

with op.batch_alter_table('core_eia861__yearly_non_net_metering_customer_fuel_class', schema=None) as batch_op:
batch_op.add_column(sa.Column('energy_capacity_mwh', sa.Float(), nullable=True, comment='The total amount of energy which the system can supply power before recharging is necessary, in megawatt-hours.'))

# ### end Alembic commands ###


def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
with op.batch_alter_table('core_eia861__yearly_non_net_metering_customer_fuel_class', schema=None) as batch_op:
batch_op.drop_column('energy_capacity_mwh')

with op.batch_alter_table('core_eia861__yearly_net_metering_customer_fuel_class', schema=None) as batch_op:
batch_op.drop_column('energy_capacity_mwh')

# ### end Alembic commands ###
10 changes: 10 additions & 0 deletions src/pudl/metadata/classes.py
Original file line number Diff line number Diff line change
Expand Up @@ -1644,6 +1644,16 @@ def enforce_schema(self, df: pd.DataFrame) -> pd.DataFrame:
f"schema: {missing_cols}"
)

# Log warning if columns in dataframe are getting dropped in write
dropped_columns = list(df.columns.difference(expected_cols))
if dropped_columns:
logger.info(
"The following columns are getting dropped when the table is written:"
f"{dropped_columns}. This is often the intended behavior. If you want "
"to keep any of these columns, add them to the metadata.resources "
"fields and update alembic."
)

df = self.format_df(df)
pk = self.schema.primary_key
if pk and not (dupes := df[df.duplicated(subset=pk)]).empty:
Expand Down
4 changes: 4 additions & 0 deletions src/pudl/metadata/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
"SPP_TRE",
"ERCOT_TRE",
"MISO_TRE",
"FRCC_SERC",
"VI", # Virgin Islands
"GU", # Guam
"PR", # Puerto Rico
Expand Down Expand Up @@ -174,9 +175,12 @@
"pv",
"steam",
"storage_pv",
"storage_nonpv",
"all_storage", # need 'all' as prefix so as not to confuse with other storage category
"total",
"virtual_pv",
"virtual_pv_under_1mw", # Broken out in EIA 861 in 2023
"virtual_pv_over_1mw", # Broken out in EIA 861 in 2023
"wind",
]

Expand Down
5 changes: 5 additions & 0 deletions src/pudl/metadata/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -1224,6 +1224,11 @@
"description": "Account balance at end of year.",
"unit": "USD",
},
"energy_capacity_mwh": {
"type": "number",
"description": "The total amount of energy which the system can supply power before recharging is necessary, in megawatt-hours.",
"unit": "MWh",
},
"energy_charges": {
"type": "number",
"description": "Energy charges (USD).",
Expand Down
2 changes: 2 additions & 0 deletions src/pudl/metadata/resources/eia861.py
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,7 @@
"fields": [
"balancing_authority_code_eia",
"capacity_mw",
"energy_capacity_mwh",
"customer_class",
"customers",
"report_date",
Expand Down Expand Up @@ -513,6 +514,7 @@
"fields": [
"balancing_authority_code_eia",
"capacity_mw",
"energy_capacity_mwh",
"customer_class",
"report_date",
"state",
Expand Down
2 changes: 1 addition & 1 deletion src/pudl/metadata/sources.py
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@
),
"field_namespace": "eia",
"working_partitions": {
"years": sorted(set(range(2001, 2023))),
"years": sorted(set(range(2001, 2024))),
},
"contributors": [],
"keywords": sorted(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,49 +1,49 @@
year_index,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022
report_year,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
utility_id_eia,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
utility_name_eia,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
entity_type,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,3,3,3
short_form,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4
state,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5
balancing_authority_code_eia,-1,-1,-1,-1,-1,-1,-1,-1,5,5,5,5,6,6,6,6
residential_automated_meter_reading,5,5,5,5,5,5,5,5,6,6,6,6,7,7,7,7
commercial_automated_meter_reading,6,6,6,6,6,6,6,6,7,7,7,7,8,8,8,8
industrial_automated_meter_reading,7,7,7,7,7,7,7,7,8,8,8,8,9,9,9,9
transportation_automated_meter_reading,8,8,8,8,8,8,8,8,9,9,9,9,10,10,10,10
total_automated_meter_reading,9,9,9,9,9,9,9,9,10,10,10,10,11,11,11,11
residential_advanced_metering_infrastructure,10,10,10,10,10,10,10,10,11,11,11,11,12,12,12,12
commercial_advanced_metering_infrastructure,11,11,11,11,11,11,11,11,12,12,12,12,13,13,13,13
industrial_advanced_metering_infrastructure,12,12,12,12,12,12,12,12,13,13,13,13,14,14,14,14
transportation_advanced_metering_infrastructure,13,13,13,13,13,13,13,13,14,14,14,14,15,15,15,15
total_advanced_metering_infrastructure,14,14,14,14,14,14,14,14,15,15,15,15,16,16,16,16
residential_home_area_network,-1,-1,-1,-1,-1,-1,15,15,16,16,16,16,17,17,17,17
commercial_home_area_network,-1,-1,-1,-1,-1,-1,16,16,17,17,17,17,18,18,18,18
industrial_home_area_network,-1,-1,-1,-1,-1,-1,17,17,18,18,18,18,19,19,19,19
transportation_home_area_network,-1,-1,-1,-1,-1,-1,18,18,19,19,19,19,20,20,20,20
total_home_area_network,-1,-1,-1,-1,-1,-1,19,19,20,20,20,20,21,21,21,21
residential_non_amr_ami,-1,-1,-1,-1,-1,-1,20,20,21,21,21,21,22,22,22,22
commercial_non_amr_ami,-1,-1,-1,-1,-1,-1,21,21,22,22,22,22,23,23,23,23
industrial_non_amr_ami,-1,-1,-1,-1,-1,-1,22,22,23,23,23,23,24,24,24,24
transportation_non_amr_ami,-1,-1,-1,-1,-1,-1,23,23,24,24,24,24,25,25,25,25
total_non_amr_ami,-1,-1,-1,-1,-1,-1,24,24,25,25,25,25,26,26,26,26
residential_total_meters,-1,-1,-1,-1,-1,-1,25,25,26,26,26,26,27,27,27,27
commercial_total_meters,-1,-1,-1,-1,-1,-1,26,26,27,27,27,27,28,28,28,28
industrial_total_meters,-1,-1,-1,-1,-1,-1,27,27,28,28,28,28,29,29,29,29
transportation_total_meters,-1,-1,-1,-1,-1,-1,28,28,29,29,29,29,30,30,30,30
total_total_meters,-1,-1,-1,-1,-1,-1,29,29,30,30,30,30,31,31,31,31
residential_energy_served_ami_mwh,15,15,15,15,15,15,30,30,31,31,31,31,32,32,32,32
commercial_energy_served_ami_mwh,16,16,16,16,16,16,31,31,32,32,32,32,33,33,33,33
industrial_energy_served_ami_mwh,17,17,17,17,17,17,32,32,33,33,33,33,34,34,34,34
transportation_energy_served_ami_mwh,18,18,18,18,18,18,33,33,34,34,34,34,35,35,35,35
total_energy_served_ami_mwh,19,19,19,19,19,19,34,34,35,35,35,35,36,36,36,36
residential_daily_digital_access_customers,-1,-1,-1,-1,-1,-1,35,35,36,36,36,36,37,37,37,37
commercial_daily_digital_access_customers,-1,-1,-1,-1,-1,-1,36,36,37,37,37,37,38,38,38,38
industrial_daily_digital_access_customers,-1,-1,-1,-1,-1,-1,37,37,38,38,38,38,39,39,39,39
transportation_daily_digital_access_customers,-1,-1,-1,-1,-1,-1,38,38,39,39,39,39,40,40,40,40
total_daily_digital_access_customers,-1,-1,-1,-1,-1,-1,39,39,40,40,40,40,41,41,41,41
residential_direct_load_control_customers,-1,-1,-1,-1,-1,-1,40,40,41,41,41,41,42,42,42,42
commercial_direct_load_control_customers,-1,-1,-1,-1,-1,-1,41,41,42,42,42,42,43,43,43,43
industrial_direct_load_control_customers,-1,-1,-1,-1,-1,-1,42,42,43,43,43,43,44,44,44,44
transportation_direct_load_control_customers,-1,-1,-1,-1,-1,-1,43,43,44,44,44,44,45,45,45,45
total_direct_load_control_customers,-1,-1,-1,-1,-1,-1,44,44,45,45,45,45,46,46,46,46
early_release,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0
year_index,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023
report_year,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
utility_id_eia,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
utility_name_eia,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
entity_type,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,3,3,3,3
short_form,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4
state,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5
balancing_authority_code_eia,-1,-1,-1,-1,-1,-1,-1,-1,5,5,5,5,6,6,6,6,6
residential_automated_meter_reading,5,5,5,5,5,5,5,5,6,6,6,6,7,7,7,7,7
commercial_automated_meter_reading,6,6,6,6,6,6,6,6,7,7,7,7,8,8,8,8,8
industrial_automated_meter_reading,7,7,7,7,7,7,7,7,8,8,8,8,9,9,9,9,9
transportation_automated_meter_reading,8,8,8,8,8,8,8,8,9,9,9,9,10,10,10,10,10
total_automated_meter_reading,9,9,9,9,9,9,9,9,10,10,10,10,11,11,11,11,11
residential_advanced_metering_infrastructure,10,10,10,10,10,10,10,10,11,11,11,11,12,12,12,12,12
commercial_advanced_metering_infrastructure,11,11,11,11,11,11,11,11,12,12,12,12,13,13,13,13,13
industrial_advanced_metering_infrastructure,12,12,12,12,12,12,12,12,13,13,13,13,14,14,14,14,14
transportation_advanced_metering_infrastructure,13,13,13,13,13,13,13,13,14,14,14,14,15,15,15,15,15
total_advanced_metering_infrastructure,14,14,14,14,14,14,14,14,15,15,15,15,16,16,16,16,16
residential_home_area_network,-1,-1,-1,-1,-1,-1,15,15,16,16,16,16,17,17,17,17,17
commercial_home_area_network,-1,-1,-1,-1,-1,-1,16,16,17,17,17,17,18,18,18,18,18
industrial_home_area_network,-1,-1,-1,-1,-1,-1,17,17,18,18,18,18,19,19,19,19,19
transportation_home_area_network,-1,-1,-1,-1,-1,-1,18,18,19,19,19,19,20,20,20,20,20
total_home_area_network,-1,-1,-1,-1,-1,-1,19,19,20,20,20,20,21,21,21,21,21
residential_non_amr_ami,-1,-1,-1,-1,-1,-1,20,20,21,21,21,21,22,22,22,22,22
commercial_non_amr_ami,-1,-1,-1,-1,-1,-1,21,21,22,22,22,22,23,23,23,23,23
industrial_non_amr_ami,-1,-1,-1,-1,-1,-1,22,22,23,23,23,23,24,24,24,24,24
transportation_non_amr_ami,-1,-1,-1,-1,-1,-1,23,23,24,24,24,24,25,25,25,25,25
total_non_amr_ami,-1,-1,-1,-1,-1,-1,24,24,25,25,25,25,26,26,26,26,26
residential_total_meters,-1,-1,-1,-1,-1,-1,25,25,26,26,26,26,27,27,27,27,27
commercial_total_meters,-1,-1,-1,-1,-1,-1,26,26,27,27,27,27,28,28,28,28,28
industrial_total_meters,-1,-1,-1,-1,-1,-1,27,27,28,28,28,28,29,29,29,29,29
transportation_total_meters,-1,-1,-1,-1,-1,-1,28,28,29,29,29,29,30,30,30,30,30
total_total_meters,-1,-1,-1,-1,-1,-1,29,29,30,30,30,30,31,31,31,31,31
residential_energy_served_ami_mwh,15,15,15,15,15,15,30,30,31,31,31,31,32,32,32,32,32
commercial_energy_served_ami_mwh,16,16,16,16,16,16,31,31,32,32,32,32,33,33,33,33,33
industrial_energy_served_ami_mwh,17,17,17,17,17,17,32,32,33,33,33,33,34,34,34,34,34
transportation_energy_served_ami_mwh,18,18,18,18,18,18,33,33,34,34,34,34,35,35,35,35,35
total_energy_served_ami_mwh,19,19,19,19,19,19,34,34,35,35,35,35,36,36,36,36,36
residential_daily_digital_access_customers,-1,-1,-1,-1,-1,-1,35,35,36,36,36,36,37,37,37,37,37
commercial_daily_digital_access_customers,-1,-1,-1,-1,-1,-1,36,36,37,37,37,37,38,38,38,38,38
industrial_daily_digital_access_customers,-1,-1,-1,-1,-1,-1,37,37,38,38,38,38,39,39,39,39,39
transportation_daily_digital_access_customers,-1,-1,-1,-1,-1,-1,38,38,39,39,39,39,40,40,40,40,40
total_daily_digital_access_customers,-1,-1,-1,-1,-1,-1,39,39,40,40,40,40,41,41,41,41,41
residential_direct_load_control_customers,-1,-1,-1,-1,-1,-1,40,40,41,41,41,41,42,42,42,42,42
commercial_direct_load_control_customers,-1,-1,-1,-1,-1,-1,41,41,42,42,42,42,43,43,43,43,43
industrial_direct_load_control_customers,-1,-1,-1,-1,-1,-1,42,42,43,43,43,43,44,44,44,44,44
transportation_direct_load_control_customers,-1,-1,-1,-1,-1,-1,43,43,44,44,44,44,45,45,45,45,45
total_direct_load_control_customers,-1,-1,-1,-1,-1,-1,44,44,45,45,45,45,46,46,46,46,46
early_release,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
year_index,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022
report_year,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
utility_id_eia,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
utility_name_eia,-1,2,2,2,2,-1,-1,-1,-1,-1,-1,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
balancing_authority_id_eia,2,3,3,3,3,2,2,2,2,2,2,3,1,1,1,1,1,1,1,1,1,1
balancing_authority_code_eia,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,2,2,2,2,2,2,2,2,2
state,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,3,3,3,3,3,3,3,3,3
balancing_authority_name_eia,3,4,4,4,4,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4
early_release,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
year_index,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023
report_year,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
utility_id_eia,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
utility_name_eia,-1,2,2,2,2,-1,-1,-1,-1,-1,-1,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
balancing_authority_id_eia,2,3,3,3,3,2,2,2,2,2,2,3,1,1,1,1,1,1,1,1,1,1,1
balancing_authority_code_eia,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,2,2,2,2,2,2,2,2,2,2
state,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,3,3,3,3,3,3,3,3,3,3
balancing_authority_name_eia,3,4,4,4,4,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4
early_release,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
year_index,2020,2021,2022
report_year,0,0,0
utility_id_eia,1,1,1
utility_name_eia,2,2,2
business_model,3,3,3
service_type,4,4,4
data_observed,5,5,5
state,6,6,6
entity_type,7,7,7
balancing_authority_code_eia,8,8,8
residential_sales_revenue,9,9,9
residential_sales_mwh,10,10,10
residential_customers,11,11,11
commercial_sales_revenue,12,12,12
commercial_sales_mwh,13,13,13
commercial_customers,14,14,14
industrial_sales_revenue,15,15,15
industrial_sales_mwh,16,16,16
industrial_customers,17,17,17
transportation_sales_revenue,18,18,18
transportation_sales_mwh,19,19,19
transportation_customers,20,20,20
total_sales_revenue,21,21,21
total_sales_mwh,22,22,22
total_customers,23,23,23
early_release,-1,-1,-1
year_index,2020,2021,2022,2023
report_year,0,0,0,0
utility_id_eia,1,1,1,1
utility_name_eia,2,2,2,2
business_model,3,3,3,3
service_type,4,4,4,4
data_observed,5,5,5,5
state,6,6,6,6
entity_type,7,7,7,7
balancing_authority_code_eia,8,8,8,8
residential_sales_revenue,9,9,9,9
residential_sales_mwh,10,10,10,10
residential_customers,11,11,11,11
commercial_sales_revenue,12,12,12,12
commercial_sales_mwh,13,13,13,13
commercial_customers,14,14,14,14
industrial_sales_revenue,15,15,15,15
industrial_sales_mwh,16,16,16,16
industrial_customers,17,17,17,17
transportation_sales_revenue,18,18,18,18
transportation_sales_mwh,19,19,19,19
transportation_customers,20,20,20,20
total_sales_revenue,21,21,21,21
total_sales_mwh,22,22,22,22
total_customers,23,23,23,23
early_release,-1,-1,-1,-1
Loading

0 comments on commit cb8b8c8

Please sign in to comment.