Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Integrate EIA 861 2023 final release data #3911

Merged
merged 13 commits into from
Oct 21, 2024
Merged
7 changes: 7 additions & 0 deletions docs/release_notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,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 @@ -1642,6 +1642,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 @@ -1167,6 +1167,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