From 6cd77121c9804daf2efed4b6ef81ea0abd5a401e Mon Sep 17 00:00:00 2001 From: Austen Sharpe Date: Thu, 12 Oct 2023 10:09:42 -0300 Subject: [PATCH 01/44] First pass of integrating the monthly EIA923 data into the rest of the EIA data. This includes updating the package data to account for the 2023 year and updating the way to assign data maturities to 923 data. This also updates some of the expected row counts for the data. It should still fail on the gen_eia923 table because the row count was going down which doesn't seem right. There are also some failures related to check_date_freq as there are now less than 12 months expected in a given round of updates. Will handle those errors in another commit. --- docs/release_notes.rst | 3 +- src/pudl/extract/excel.py | 14 ++ src/pudl/metadata/sources.py | 2 +- .../eia923/column_maps/boiler_fuel.csv | 138 ++++++------ .../eia923/column_maps/emissions_control.csv | 2 +- .../column_maps/fuel_receipts_costs.csv | 68 +++--- .../eia923/column_maps/generation_fuel.csv | 196 +++++++++--------- .../eia923/column_maps/generator.csv | 62 +++--- .../eia923/column_maps/plant_frame.csv | 24 +-- .../eia923/column_maps/stocks.csv | 78 +++---- src/pudl/package_data/eia923/file_map.csv | 28 +-- src/pudl/package_data/eia923/page_map.csv | 28 +-- src/pudl/package_data/eia923/skipfooter.csv | 28 +-- src/pudl/package_data/eia923/skiprows.csv | 28 +-- test/validate/eia_test.py | 12 +- 15 files changed, 363 insertions(+), 348 deletions(-) diff --git a/docs/release_notes.rst b/docs/release_notes.rst index ae87abcec2..cc44b7d11c 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -70,7 +70,8 @@ Data Coverage ^^^^^^^^^^^^^ * Updated :doc:`data_sources/eia860` to include early release data from 2022. -* Updated :doc:`data_sources/eia923` to include early release data from 2022. +* Updated :doc:`data_sources/eia923` to include early release data from 2022 and + monthly YTD data as of April 2023. * Updated :doc:`data_sources/epacems` to switch from the old FTP server to the new CAMPD API, and to include 2022 data. Due to changes in the ETL, Alaska, Puerto Rico and Hawaii are now included in CEMS processing. See issue :issue:`1264` & PRs diff --git a/src/pudl/extract/excel.py b/src/pudl/extract/excel.py index 2f4a324745..995775540f 100644 --- a/src/pudl/extract/excel.py +++ b/src/pudl/extract/excel.py @@ -4,9 +4,12 @@ import dbfread import pandas as pd +import regex as re import pudl +from dagster._utils.forked_pdb import ForkedPdb + logger = pudl.logging_helpers.get_logger(__name__) @@ -195,6 +198,17 @@ def add_data_maturity(self, df: pd.DataFrame, page, **partition) -> pd.DataFrame maturity = "provisional" elif self._dataset_name == "eia860m": maturity = "monthly_update" + elif self._dataset_name == "eia923": + # this conditional is a hacky way to get around the fact that the formatting + # for the file names didn't always look like "EIA923_Schedules_2_3_4_5_M_" + # But, because we only want YTD data, it's fine to set a year floor. + if partition["year"] > 2022: + release_month = re.search( + r"EIA923_Schedules_2_3_4_5_M_(\d{2})", + self.excel_filename(page, **partition), + ).group(1) + if release_month != "12": + maturity = "incremental_ytd" df = df.assign(data_maturity=maturity) self.cols_added.append("data_maturity") return df diff --git a/src/pudl/metadata/sources.py b/src/pudl/metadata/sources.py index 87f2382510..13c9b04949 100644 --- a/src/pudl/metadata/sources.py +++ b/src/pudl/metadata/sources.py @@ -191,7 +191,7 @@ }, "field_namespace": "eia", "working_partitions": { - "years": sorted(set(range(2001, 2023))), + "years": sorted(set(range(2001, 2024))), }, "contributors": [ CONTRIBUTORS["catalyst-cooperative"], diff --git a/src/pudl/package_data/eia923/column_maps/boiler_fuel.csv b/src/pudl/package_data/eia923/column_maps/boiler_fuel.csv index 49b5b83f2a..a4291398e6 100644 --- a/src/pudl/package_data/eia923/column_maps/boiler_fuel.csv +++ b/src/pudl/package_data/eia923/column_maps/boiler_fuel.csv @@ -1,69 +1,69 @@ -year_index,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022 -plant_id_eia,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id -combined_heat_power,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_and_power_plant,combined_heat_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant -plant_name_eia,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name -operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name -operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id -plant_state,state,state,state,state,plant_state,state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state -census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region -nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region -naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code -sector_id_eia,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,sector_number,eia_sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number -sector_name_eia,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name -boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id -prime_mover_code,prime_mover_type,prime_mover_type,prime_mover_type,prime_mover_type,reported_prime_mover,prime_mover_type,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover -energy_source_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code -reporting_frequency_code,,,,,,,,,,,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency -fuel_unit,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label -fuel_consumed_units_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january -fuel_consumed_units_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february -fuel_consumed_units_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march -fuel_consumed_units_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april -fuel_consumed_units_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may -fuel_consumed_units_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june -fuel_consumed_units_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july -fuel_consumed_units_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august -fuel_consumed_units_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september -fuel_consumed_units_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october -fuel_consumed_units_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november -fuel_consumed_units_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december -fuel_mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january -fuel_mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february -fuel_mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march -fuel_mmbtu_per_unit_april,mmbtu_per_unit_apirl,mmbtu_per_unit_apirl,mmbtu_per_unit_apirl,mmbtu_per_unit_apirl,mmbtu_per_unit_april,mmbtu_per_unit_apirl,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april -fuel_mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may -fuel_mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june -fuel_mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july -fuel_mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august -fuel_mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september -fuel_mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october -fuel_mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november -fuel_mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december -sulfur_content_pct_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january -sulfur_content_pct_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february -sulfur_content_pct_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march -sulfur_content_pct_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april -sulfur_content_pct_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may -sulfur_content_pct_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june -sulfur_content_pct_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july -sulfur_content_pct_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august -sulfur_content_pct_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september -sulfur_content_pct_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october -sulfur_content_pct_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november -sulfur_content_pct_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december -ash_content_pct_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january -ash_content_pct_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february -ash_content_pct_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march -ash_content_pct_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april -ash_content_pct_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may -ash_content_pct_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june -ash_content_pct_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july -ash_content_pct_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august -ash_content_pct_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september -ash_content_pct_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october -ash_content_pct_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november -ash_content_pct_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december -total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity -balancing_authority_code_eia,,,,,,,,,,,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code -report_year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year -early_release,,,,,,,,,,,,,,, +year_index,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023 +plant_id_eia,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id +combined_heat_power,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_and_power_plant,combined_heat_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant +plant_name_eia,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name +operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name +operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id +plant_state,state,state,state,state,plant_state,state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state +census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region +nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region +naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code +sector_id_eia,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,sector_number,eia_sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number +sector_name_eia,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name +boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id,boiler_id +prime_mover_code,prime_mover_type,prime_mover_type,prime_mover_type,prime_mover_type,reported_prime_mover,prime_mover_type,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover +energy_source_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code +reporting_frequency_code,,,,,,,,,,,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency, +fuel_unit,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label +fuel_consumed_units_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january,quantity_of_fuel_consumed_january +fuel_consumed_units_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february,quantity_of_fuel_consumed_february +fuel_consumed_units_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march,quantity_of_fuel_consumed_march +fuel_consumed_units_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april,quantity_of_fuel_consumed_april +fuel_consumed_units_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may,quantity_of_fuel_consumed_may +fuel_consumed_units_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june,quantity_of_fuel_consumed_june +fuel_consumed_units_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july,quantity_of_fuel_consumed_july +fuel_consumed_units_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august,quantity_of_fuel_consumed_august +fuel_consumed_units_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september,quantity_of_fuel_consumed_september +fuel_consumed_units_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october,quantity_of_fuel_consumed_october +fuel_consumed_units_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november,quantity_of_fuel_consumed_november +fuel_consumed_units_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december,quantity_of_fuel_consumed_december +fuel_mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january,mmbtu_per_unit_january +fuel_mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february,mmbtu_per_unit_february +fuel_mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march,mmbtu_per_unit_march +fuel_mmbtu_per_unit_april,mmbtu_per_unit_apirl,mmbtu_per_unit_apirl,mmbtu_per_unit_apirl,mmbtu_per_unit_apirl,mmbtu_per_unit_april,mmbtu_per_unit_apirl,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april,mmbtu_per_unit_april +fuel_mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may +fuel_mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june,mmbtu_per_unit_june +fuel_mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july,mmbtu_per_unit_july +fuel_mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august,mmbtu_per_unit_august +fuel_mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september,mmbtu_per_unit_september +fuel_mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october,mmbtu_per_unit_october +fuel_mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november,mmbtu_per_unit_november +fuel_mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december,mmbtu_per_unit_december +sulfur_content_pct_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january,sulfur_content_january +sulfur_content_pct_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february,sulfur_content_february +sulfur_content_pct_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march,sulfur_content_march +sulfur_content_pct_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april,sulfur_content_april +sulfur_content_pct_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may,sulfur_content_may +sulfur_content_pct_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june,sulfur_content_june +sulfur_content_pct_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july,sulfur_content_july +sulfur_content_pct_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august,sulfur_content_august +sulfur_content_pct_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september,sulfur_content_september +sulfur_content_pct_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october,sulfur_content_october +sulfur_content_pct_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november,sulfur_content_november +sulfur_content_pct_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december,sulfur_content_december +ash_content_pct_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january,ash_content_january +ash_content_pct_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february,ash_content_february +ash_content_pct_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march,ash_content_march +ash_content_pct_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april,ash_content_april +ash_content_pct_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may,ash_content_may +ash_content_pct_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june,ash_content_june +ash_content_pct_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july,ash_content_july +ash_content_pct_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august,ash_content_august +ash_content_pct_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september,ash_content_september +ash_content_pct_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october,ash_content_october +ash_content_pct_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november,ash_content_november +ash_content_pct_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december,ash_content_december +total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity +balancing_authority_code_eia,,,,,,,,,,,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code,ba_code +report_year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year +early_release,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/src/pudl/package_data/eia923/column_maps/emissions_control.csv b/src/pudl/package_data/eia923/column_maps/emissions_control.csv index 0650bba021..ba6e1c3fe4 100644 --- a/src/pudl/package_data/eia923/column_maps/emissions_control.csv +++ b/src/pudl/package_data/eia923/column_maps/emissions_control.csv @@ -21,4 +21,4 @@ fgd_sorbent_consumption_1000_tons,fgd_sorbent_quantity_thousand_tons,fgd_sorbent fgd_electricity_consumption_mwh,fgd_electricity_consumption_megawatthours,fgd_electricity_consumption_megawatthours,fgd_electricity_consumption_megawatthours,fgd_electricity_consumption_megawatthours,fgd_electricity_consumption_megawatthours,fgd_electricity_consumption_megawatthours,fgd_electricity_consumption_megawatthours,fgd_electricity_consumption_megawatthours,fgd_electricity_consumption_megawatthours,fgd_electricity_consumption_megawatthours,fgd_electricity_consumption_megawatthours mercury_removal_efficiency,mercury_removal_efficiency,mercury_removal_efficiency,mercury_removal_efficiency,mercury_removal_efficiency,mercury_removal_efficiency,mercury_removal_efficiency,mercury_removal_efficiency,mercury_removal_efficiency,mercury_removal_efficiency,mercury_removal_efficiency,mercury_removal_efficiency mercury_emission_rate_lb_per_trillion_btu,,,,,mercury_emission_rate,mercury_emission_rate,mercury_emission_rate,mercury_emission_rate,mercury_emission_rate,mercury_emission_rate,mercury_emission_rate -acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency +acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency,acid_gas_removal_efficiency \ No newline at end of file diff --git a/src/pudl/package_data/eia923/column_maps/fuel_receipts_costs.csv b/src/pudl/package_data/eia923/column_maps/fuel_receipts_costs.csv index 782c143ac0..347dea3b38 100644 --- a/src/pudl/package_data/eia923/column_maps/fuel_receipts_costs.csv +++ b/src/pudl/package_data/eia923/column_maps/fuel_receipts_costs.csv @@ -1,34 +1,34 @@ -year_index,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022 -report_year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year -report_month,month,month,month,month,month,month,month,month,month,month,month,month,month,month,month -plant_id_eia,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id -plant_name_eia,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name -plant_state,state,state,state,state,plant_state,state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state -contract_type_code,contract_type,contract_type,contract_type,contract_type,purchase_type,contract_type,purchase_type,purchase_type,purchase_type,purchase_type,purchase_type,purchase_type,purchase_type,purchase_type,purchase_type -contract_expiration_date,contract_exp_date,contract_exp_date,contract_exp_date,contract_exp_date,contract_expiration_date,contract_exp_date,contract_expiration_date,contract_expiration_date,contract_expiration_date,contract_expiration_date,contract_expiration_date,contract_expiration_date,contract_expiration_date,contract_expiration_date,contract_expiration_date -energy_source_code,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source -fuel_group_code,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group -mine_type_code,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type -state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state -county_id_fips,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county -mine_id_msha,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id -mine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name -supplier_name,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier -fuel_received_units,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity -fuel_mmbtu_per_unit,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content -sulfur_content_pct,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content -ash_content_pct,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content -mercury_content_ppm,,,,,average_mercury_content,,average_mercury_content,average_mercury_content,average_mercury_content,average_mercury_content,average_mercury_content,average_mercury_content,average_mercury_content,average_mercury_content,average_mercury_content -fuel_cost_per_mmbtu,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost -regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated -operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name -operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id -reporting_frequency_code,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency,reporting_frequency,respondent_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency -primary_transportation_mode_code,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode -secondary_transportation_mode_code,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode -natural_gas_transport_code,natural_gas_transportation_service,natural_gas_transportation_service,natural_gas_transportation_service,natural_gas_transportation_service,natural_gas_transportation_service,natural_gas_transportation_service,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type -natural_gas_delivery_contract_type_code,,,,,,,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type -moisture_content_pct,,,,,,,moisture_content,moisture_content,moisture_content,moisture_content,moisture_content,moisture_content,moisture_content,moisture_content,moisture_content -chlorine_content_ppm,,,,,,,chlorine_content,chlorine_content,chlorine_content,chlorine_content,chlorine_content,chlorine_content,chlorine_content,chlorine_content,chlorine_content -balancing_authority_code_eia,,,,,,,,,,,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code -early_release,,,,,,,,,,,,,,, +year_index,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023 +report_year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year +report_month,month,month,month,month,month,month,month,month,month,month,month,month,month,month,month,month +plant_id_eia,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id +plant_name_eia,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name +plant_state,state,state,state,state,plant_state,state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state +contract_type_code,contract_type,contract_type,contract_type,contract_type,purchase_type,contract_type,purchase_type,purchase_type,purchase_type,purchase_type,purchase_type,purchase_type,purchase_type,purchase_type,purchase_type,purchase_type +contract_expiration_date,contract_exp_date,contract_exp_date,contract_exp_date,contract_exp_date,contract_expiration_date,contract_exp_date,contract_expiration_date,contract_expiration_date,contract_expiration_date,contract_expiration_date,contract_expiration_date,contract_expiration_date,contract_expiration_date,contract_expiration_date,contract_expiration_date,contract_expiration_date +energy_source_code,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source,energy_source +fuel_group_code,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group,fuel_group +mine_type_code,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type,coalmine_type +state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state,coalmine_state +county_id_fips,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county,coalmine_county +mine_id_msha,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id,coalmine_msha_id +mine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name,coalmine_name +supplier_name,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier,supplier +fuel_received_units,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity,quantity +fuel_mmbtu_per_unit,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content,average_heat_content +sulfur_content_pct,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content,average_sulfur_content +ash_content_pct,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content,average_ash_content +mercury_content_ppm,,,,,average_mercury_content,,average_mercury_content,average_mercury_content,average_mercury_content,average_mercury_content,average_mercury_content,average_mercury_content,average_mercury_content,average_mercury_content,average_mercury_content,average_mercury_content +fuel_cost_per_mmbtu,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost,fuel_cost +regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated,regulated +operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name +operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id +reporting_frequency_code,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency,reporting_frequency,respondent_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency, +primary_transportation_mode_code,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode,primary_transportation_mode +secondary_transportation_mode_code,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode,secondary_transportation_mode +natural_gas_transport_code,natural_gas_transportation_service,natural_gas_transportation_service,natural_gas_transportation_service,natural_gas_transportation_service,natural_gas_transportation_service,natural_gas_transportation_service,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type,natural_gas_supply_contract_type +natural_gas_delivery_contract_type_code,,,,,,,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type,natural_gas_delivery_contract_type +moisture_content_pct,,,,,,,moisture_content,moisture_content,moisture_content,moisture_content,moisture_content,moisture_content,moisture_content,moisture_content,moisture_content,moisture_content +chlorine_content_ppm,,,,,,,chlorine_content,chlorine_content,chlorine_content,chlorine_content,chlorine_content,chlorine_content,chlorine_content,chlorine_content,chlorine_content,chlorine_content +balancing_authority_code_eia,,,,,,,,,,,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code,ba_code +early_release,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/src/pudl/package_data/eia923/column_maps/generation_fuel.csv b/src/pudl/package_data/eia923/column_maps/generation_fuel.csv index 5d982b1212..07d676a327 100644 --- a/src/pudl/package_data/eia923/column_maps/generation_fuel.csv +++ b/src/pudl/package_data/eia923/column_maps/generation_fuel.csv @@ -1,98 +1,98 @@ -year_index,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022 -plant_id_eia,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id -combined_heat_power,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_and_power_plant,combined_heat_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant -nuclear_unit_id,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id -plant_name_eia,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name -operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name -operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id -plant_state,state,state,state,state,state,state,state,state,state,state,state,plant_state,state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state -census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region -nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region -naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code -sector_id_eia,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number -sector_name_eia,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name -prime_mover_code,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover -energy_source_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code -fuel_type_code_aer,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code -balancing_authority_code_eia,,,,,,,,,,,,,,,,,,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code -reporting_frequency_code,,,,,,,,,,,,,,,,,,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency -fuel_unit,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label -fuel_consumed_units_january,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_january,quantity_jan,quantity_january,quantity_january,quantity_january,quantity_january,quantity_january,quantity_january,quantity_january,quantity_january,quantity_january -fuel_consumed_units_february,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_february,quantity_feb,quantity_february,quantity_february,quantity_february,quantity_february,quantity_february,quantity_february,quantity_february,quantity_february,quantity_february -fuel_consumed_units_march,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_march,quantity_mar,quantity_march,quantity_march,quantity_march,quantity_march,quantity_march,quantity_march,quantity_march,quantity_march,quantity_march -fuel_consumed_units_april,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_april,quantity_apr,quantity_april,quantity_april,quantity_april,quantity_april,quantity_april,quantity_april,quantity_april,quantity_april,quantity_april -fuel_consumed_units_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may -fuel_consumed_units_june,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_june,quantity_jun,quantity_june,quantity_june,quantity_june,quantity_june,quantity_june,quantity_june,quantity_june,quantity_june,quantity_june -fuel_consumed_units_july,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_july,quantity_jul,quantity_july,quantity_july,quantity_july,quantity_july,quantity_july,quantity_july,quantity_july,quantity_july,quantity_july -fuel_consumed_units_august,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_august,quantity_aug,quantity_august,quantity_august,quantity_august,quantity_august,quantity_august,quantity_august,quantity_august,quantity_august,quantity_august -fuel_consumed_units_september,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_september,quantity_sep,quantity_september,quantity_september,quantity_september,quantity_september,quantity_september,quantity_september,quantity_september,quantity_september,quantity_september -fuel_consumed_units_october,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_october,quantity_oct,quantity_october,quantity_october,quantity_october,quantity_october,quantity_october,quantity_october,quantity_october,quantity_october,quantity_october -fuel_consumed_units_november,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_november,quantity_nov,quantity_november,quantity_november,quantity_november,quantity_november,quantity_november,quantity_november,quantity_november,quantity_november,quantity_november -fuel_consumed_units_december,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_december,quantity_dec,quantity_december,quantity_december,quantity_december,quantity_december,quantity_december,quantity_december,quantity_december,quantity_december,quantity_december -fuel_consumed_for_electricity_units_january,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_january,elec_quantity_jan,elec_quantity_january,elec_quantity_january,elec_quantity_january,elec_quantity_january,elec_quantity_january,elec_quantity_january,elec_quantity_january,elec_quantity_january,elec_quantity_january -fuel_consumed_for_electricity_units_february,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_february,elec_quantity_feb,elec_quantity_february,elec_quantity_february,elec_quantity_february,elec_quantity_february,elec_quantity_february,elec_quantity_february,elec_quantity_february,elec_quantity_february,elec_quantity_february -fuel_consumed_for_electricity_units_march,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_march,elec_quantity_mar,elec_quantity_march,elec_quantity_march,elec_quantity_march,elec_quantity_march,elec_quantity_march,elec_quantity_march,elec_quantity_march,elec_quantity_march,elec_quantity_march -fuel_consumed_for_electricity_units_april,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_april,elec_quantity_apr,elec_quantity_april,elec_quantity_april,elec_quantity_april,elec_quantity_april,elec_quantity_april,elec_quantity_april,elec_quantity_april,elec_quantity_april,elec_quantity_april -fuel_consumed_for_electricity_units_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may -fuel_consumed_for_electricity_units_june,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_june,elec_quantity_jun,elec_quantity_june,elec_quantity_june,elec_quantity_june,elec_quantity_june,elec_quantity_june,elec_quantity_june,elec_quantity_june,elec_quantity_june,elec_quantity_june -fuel_consumed_for_electricity_units_july,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_july,elec_quantity_jul,elec_quantity_july,elec_quantity_july,elec_quantity_july,elec_quantity_july,elec_quantity_july,elec_quantity_july,elec_quantity_july,elec_quantity_july,elec_quantity_july -fuel_consumed_for_electricity_units_august,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_august,elec_quantity_aug,elec_quantity_august,elec_quantity_august,elec_quantity_august,elec_quantity_august,elec_quantity_august,elec_quantity_august,elec_quantity_august,elec_quantity_august,elec_quantity_august -fuel_consumed_for_electricity_units_september,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_september,elec_quantity_sep,elec_quantity_september,elec_quantity_september,elec_quantity_september,elec_quantity_september,elec_quantity_september,elec_quantity_september,elec_quantity_september,elec_quantity_september,elec_quantity_september -fuel_consumed_for_electricity_units_october,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_october,elec_quantity_oct,elec_quantity_october,elec_quantity_october,elec_quantity_october,elec_quantity_october,elec_quantity_october,elec_quantity_october,elec_quantity_october,elec_quantity_october,elec_quantity_october -fuel_consumed_for_electricity_units_november,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_november,elec_quantity_nov,elec_quantity_november,elec_quantity_november,elec_quantity_november,elec_quantity_november,elec_quantity_november,elec_quantity_november,elec_quantity_november,elec_quantity_november,elec_quantity_november -fuel_consumed_for_electricity_units_december,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_december,elec_quantity_dec,elec_quantity_december,elec_quantity_december,elec_quantity_december,elec_quantity_december,elec_quantity_december,elec_quantity_december,elec_quantity_december,elec_quantity_december,elec_quantity_december -fuel_mmbtu_per_unit_january,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtuper_unit_jan,mmbtuper_unit_january,mmbtuper_unit_jan,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january -fuel_mmbtu_per_unit_february,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtuper_unit_feb,mmbtuper_unit_february,mmbtuper_unit_feb,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february -fuel_mmbtu_per_unit_march,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtuper_unit_mar,mmbtuper_unit_march,mmbtuper_unit_mar,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march -fuel_mmbtu_per_unit_april,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtuper_unit_apr,mmbtuper_unit_april,mmbtuper_unit_apr,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april -fuel_mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may -fuel_mmbtu_per_unit_june,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtuper_unit_jun,mmbtuper_unit_june,mmbtuper_unit_jun,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june -fuel_mmbtu_per_unit_july,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtuper_unit_jul,mmbtuper_unit_july,mmbtuper_unit_jul,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july -fuel_mmbtu_per_unit_august,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtuper_unit_aug,mmbtuper_unit_august,mmbtuper_unit_aug,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august -fuel_mmbtu_per_unit_september,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtuper_unit_sep,mmbtuper_unit_september,mmbtuper_unit_sep,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september -fuel_mmbtu_per_unit_october,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtuper_unit_oct,mmbtuper_unit_october,mmbtuper_unit_oct,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october -fuel_mmbtu_per_unit_november,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtuper_unit_nov,mmbtuper_unit_november,mmbtuper_unit_nov,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november -fuel_mmbtu_per_unit_december,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtuper_unit_dec,mmbtuper_unit_december,mmbtuper_unit_dec,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december -fuel_consumed_mmbtu_january,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtujan,tot_mmbtu_january,tot_mmbtujan,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january -fuel_consumed_mmbtu_february,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtufeb,tot_mmbtu_february,tot_mmbtufeb,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february -fuel_consumed_mmbtu_march,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtumar,tot_mmbtu_march,tot_mmbtumar,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march -fuel_consumed_mmbtu_april,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtuapr,tot_mmbtu_april,tot_mmbtuapr,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april -fuel_consumed_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtumay,tot_mmbtu_may,tot_mmbtumay,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may -fuel_consumed_mmbtu_june,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtujun,tot_mmbtu_june,tot_mmbtujun,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june -fuel_consumed_mmbtu_july,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtujul,tot_mmbtu_july,tot_mmbtujul,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july -fuel_consumed_mmbtu_august,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtuaug,tot_mmbtu_august,tot_mmbtuaug,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august -fuel_consumed_mmbtu_september,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtusep,tot_mmbtu_september,tot_mmbtusep,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september -fuel_consumed_mmbtu_october,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtuoct,tot_mmbtu_october,tot_mmbtuoct,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october -fuel_consumed_mmbtu_november,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtunov,tot_mmbtu_november,tot_mmbtunov,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november -fuel_consumed_mmbtu_december,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtudec,tot_mmbtu_december,tot_mmbtudec,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december -fuel_consumed_for_electricity_mmbtu_january,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtujan,elec_mmbtu_january,elec_mmbtujan,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january -fuel_consumed_for_electricity_mmbtu_february,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtufeb,elec_mmbtu_february,elec_mmbtufeb,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february -fuel_consumed_for_electricity_mmbtu_march,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtumar,elec_mmbtu_march,elec_mmbtumar,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march -fuel_consumed_for_electricity_mmbtu_april,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtuapr,elec_mmbtu_april,elec_mmbtuapr,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april -fuel_consumed_for_electricity_mmbtu_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtumay,elec_mmbtu_may,elec_mmbtumay,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may -fuel_consumed_for_electricity_mmbtu_june,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtujun,elec_mmbtu_june,elec_mmbtujun,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june -fuel_consumed_for_electricity_mmbtu_july,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtujul,elec_mmbtu_july,elec_mmbtujul,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july -fuel_consumed_for_electricity_mmbtu_august,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtuaug,elec_mmbtu_august,elec_mmbtuaug,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august -fuel_consumed_for_electricity_mmbtu_september,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtusep,elec_mmbtu_september,elec_mmbtusep,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september -fuel_consumed_for_electricity_mmbtu_october,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtuoct,elec_mmbtu_october,elec_mmbtuoct,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october -fuel_consumed_for_electricity_mmbtu_november,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtunov,elec_mmbtu_november,elec_mmbtunov,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november -fuel_consumed_for_electricity_mmbtu_december,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtudec,elec_mmbtu_december,elec_mmbtudec,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december -net_generation_mwh_january,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_january,netgen_jan,netgen_january,netgen_january,netgen_january,netgen_january,netgen_january,netgen_january,netgen_january,netgen_january,netgen_january -net_generation_mwh_february,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_february,netgen_feb,netgen_february,netgen_february,netgen_february,netgen_february,netgen_february,netgen_february,netgen_february,netgen_february,netgen_february -net_generation_mwh_march,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_march,netgen_mar,netgen_march,netgen_march,netgen_march,netgen_march,netgen_march,netgen_march,netgen_march,netgen_march,netgen_march -net_generation_mwh_april,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_april,netgen_apr,netgen_april,netgen_april,netgen_april,netgen_april,netgen_april,netgen_april,netgen_april,netgen_april,netgen_april -net_generation_mwh_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may -net_generation_mwh_june,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_june,netgen_jun,netgen_june,netgen_june,netgen_june,netgen_june,netgen_june,netgen_june,netgen_june,netgen_june,netgen_june -net_generation_mwh_july,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_july,netgen_jul,netgen_july,netgen_july,netgen_july,netgen_july,netgen_july,netgen_july,netgen_july,netgen_july,netgen_july -net_generation_mwh_august,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_august,netgen_aug,netgen_august,netgen_august,netgen_august,netgen_august,netgen_august,netgen_august,netgen_august,netgen_august,netgen_august -net_generation_mwh_september,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_september,netgen_sep,netgen_september,netgen_september,netgen_september,netgen_september,netgen_september,netgen_september,netgen_september,netgen_september,netgen_september -net_generation_mwh_october,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_october,netgen_oct,netgen_october,netgen_october,netgen_october,netgen_october,netgen_october,netgen_october,netgen_october,netgen_october,netgen_october -net_generation_mwh_november,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_november,netgen_nov,netgen_november,netgen_november,netgen_november,netgen_november,netgen_november,netgen_november,netgen_november,netgen_november,netgen_november -net_generation_mwh_december,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_december,netgen_dec,netgen_december,netgen_december,netgen_december,netgen_december,netgen_december,netgen_december,netgen_december,netgen_december,netgen_december -total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity -electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity -total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu -elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu -net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours -report_year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year -early_release,,,,,,,,,,,,,,,,,,,,,, +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 +plant_id_eia,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id +combined_heat_power,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_and_power_plant,combined_heat_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant +nuclear_unit_id,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_i_d,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id,nuclear_unit_id +plant_name_eia,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name +operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name +operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id +plant_state,state,state,state,state,state,state,state,state,state,state,state,plant_state,state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state +census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region +nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region +naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code +sector_id_eia,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number +sector_name_eia,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name +prime_mover_code,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover +energy_source_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code,reported_fuel_type_code +fuel_type_code_aer,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code,aer_fuel_type_code +balancing_authority_code_eia,,,,,,,,,,,,,,,,,,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code +reporting_frequency_code,,,,,,,,,,,,,,,,,,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency, +fuel_unit,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label,physical_unit_label +fuel_consumed_units_january,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_jan,quantity_january,quantity_jan,quantity_january,quantity_january,quantity_january,quantity_january,quantity_january,quantity_january,quantity_january,quantity_january,quantity_january,quantity_january +fuel_consumed_units_february,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_feb,quantity_february,quantity_feb,quantity_february,quantity_february,quantity_february,quantity_february,quantity_february,quantity_february,quantity_february,quantity_february,quantity_february,quantity_february +fuel_consumed_units_march,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_mar,quantity_march,quantity_mar,quantity_march,quantity_march,quantity_march,quantity_march,quantity_march,quantity_march,quantity_march,quantity_march,quantity_march,quantity_march +fuel_consumed_units_april,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_apr,quantity_april,quantity_apr,quantity_april,quantity_april,quantity_april,quantity_april,quantity_april,quantity_april,quantity_april,quantity_april,quantity_april,quantity_april +fuel_consumed_units_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may,quantity_may +fuel_consumed_units_june,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_jun,quantity_june,quantity_jun,quantity_june,quantity_june,quantity_june,quantity_june,quantity_june,quantity_june,quantity_june,quantity_june,quantity_june,quantity_june +fuel_consumed_units_july,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_jul,quantity_july,quantity_jul,quantity_july,quantity_july,quantity_july,quantity_july,quantity_july,quantity_july,quantity_july,quantity_july,quantity_july,quantity_july +fuel_consumed_units_august,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_aug,quantity_august,quantity_aug,quantity_august,quantity_august,quantity_august,quantity_august,quantity_august,quantity_august,quantity_august,quantity_august,quantity_august,quantity_august +fuel_consumed_units_september,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_sep,quantity_september,quantity_sep,quantity_september,quantity_september,quantity_september,quantity_september,quantity_september,quantity_september,quantity_september,quantity_september,quantity_september,quantity_september +fuel_consumed_units_october,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_oct,quantity_october,quantity_oct,quantity_october,quantity_october,quantity_october,quantity_october,quantity_october,quantity_october,quantity_october,quantity_october,quantity_october,quantity_october +fuel_consumed_units_november,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_nov,quantity_november,quantity_nov,quantity_november,quantity_november,quantity_november,quantity_november,quantity_november,quantity_november,quantity_november,quantity_november,quantity_november,quantity_november +fuel_consumed_units_december,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_dec,quantity_december,quantity_dec,quantity_december,quantity_december,quantity_december,quantity_december,quantity_december,quantity_december,quantity_december,quantity_december,quantity_december,quantity_december +fuel_consumed_for_electricity_units_january,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_jan,elec_quantity_january,elec_quantity_jan,elec_quantity_january,elec_quantity_january,elec_quantity_january,elec_quantity_january,elec_quantity_january,elec_quantity_january,elec_quantity_january,elec_quantity_january,elec_quantity_january,elec_quantity_january +fuel_consumed_for_electricity_units_february,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_feb,elec_quantity_february,elec_quantity_feb,elec_quantity_february,elec_quantity_february,elec_quantity_february,elec_quantity_february,elec_quantity_february,elec_quantity_february,elec_quantity_february,elec_quantity_february,elec_quantity_february,elec_quantity_february +fuel_consumed_for_electricity_units_march,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_mar,elec_quantity_march,elec_quantity_mar,elec_quantity_march,elec_quantity_march,elec_quantity_march,elec_quantity_march,elec_quantity_march,elec_quantity_march,elec_quantity_march,elec_quantity_march,elec_quantity_march,elec_quantity_march +fuel_consumed_for_electricity_units_april,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_apr,elec_quantity_april,elec_quantity_apr,elec_quantity_april,elec_quantity_april,elec_quantity_april,elec_quantity_april,elec_quantity_april,elec_quantity_april,elec_quantity_april,elec_quantity_april,elec_quantity_april,elec_quantity_april +fuel_consumed_for_electricity_units_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may,elec_quantity_may +fuel_consumed_for_electricity_units_june,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_jun,elec_quantity_june,elec_quantity_jun,elec_quantity_june,elec_quantity_june,elec_quantity_june,elec_quantity_june,elec_quantity_june,elec_quantity_june,elec_quantity_june,elec_quantity_june,elec_quantity_june,elec_quantity_june +fuel_consumed_for_electricity_units_july,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_jul,elec_quantity_july,elec_quantity_jul,elec_quantity_july,elec_quantity_july,elec_quantity_july,elec_quantity_july,elec_quantity_july,elec_quantity_july,elec_quantity_july,elec_quantity_july,elec_quantity_july,elec_quantity_july +fuel_consumed_for_electricity_units_august,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_aug,elec_quantity_august,elec_quantity_aug,elec_quantity_august,elec_quantity_august,elec_quantity_august,elec_quantity_august,elec_quantity_august,elec_quantity_august,elec_quantity_august,elec_quantity_august,elec_quantity_august,elec_quantity_august +fuel_consumed_for_electricity_units_september,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_sep,elec_quantity_september,elec_quantity_sep,elec_quantity_september,elec_quantity_september,elec_quantity_september,elec_quantity_september,elec_quantity_september,elec_quantity_september,elec_quantity_september,elec_quantity_september,elec_quantity_september,elec_quantity_september +fuel_consumed_for_electricity_units_october,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_oct,elec_quantity_october,elec_quantity_oct,elec_quantity_october,elec_quantity_october,elec_quantity_october,elec_quantity_october,elec_quantity_october,elec_quantity_october,elec_quantity_october,elec_quantity_october,elec_quantity_october,elec_quantity_october +fuel_consumed_for_electricity_units_november,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_nov,elec_quantity_november,elec_quantity_nov,elec_quantity_november,elec_quantity_november,elec_quantity_november,elec_quantity_november,elec_quantity_november,elec_quantity_november,elec_quantity_november,elec_quantity_november,elec_quantity_november,elec_quantity_november +fuel_consumed_for_electricity_units_december,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_dec,elec_quantity_december,elec_quantity_dec,elec_quantity_december,elec_quantity_december,elec_quantity_december,elec_quantity_december,elec_quantity_december,elec_quantity_december,elec_quantity_december,elec_quantity_december,elec_quantity_december,elec_quantity_december +fuel_mmbtu_per_unit_january,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtu_per_unit_jan,mmbtuper_unit_jan,mmbtuper_unit_january,mmbtuper_unit_jan,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january,mmbtuper_unit_january +fuel_mmbtu_per_unit_february,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtu_per_unit_feb,mmbtuper_unit_feb,mmbtuper_unit_february,mmbtuper_unit_feb,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february,mmbtuper_unit_february +fuel_mmbtu_per_unit_march,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtu_per_unit_mar,mmbtuper_unit_mar,mmbtuper_unit_march,mmbtuper_unit_mar,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march,mmbtuper_unit_march +fuel_mmbtu_per_unit_april,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtu_per_unit_apr,mmbtuper_unit_apr,mmbtuper_unit_april,mmbtuper_unit_apr,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april,mmbtuper_unit_april +fuel_mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtu_per_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may,mmbtuper_unit_may +fuel_mmbtu_per_unit_june,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtu_per_unit_jun,mmbtuper_unit_jun,mmbtuper_unit_june,mmbtuper_unit_jun,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june,mmbtuper_unit_june +fuel_mmbtu_per_unit_july,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtu_per_unit_jul,mmbtuper_unit_jul,mmbtuper_unit_july,mmbtuper_unit_jul,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july,mmbtuper_unit_july +fuel_mmbtu_per_unit_august,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtu_per_unit_aug,mmbtuper_unit_aug,mmbtuper_unit_august,mmbtuper_unit_aug,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august,mmbtuper_unit_august +fuel_mmbtu_per_unit_september,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtu_per_unit_sep,mmbtuper_unit_sep,mmbtuper_unit_september,mmbtuper_unit_sep,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september,mmbtuper_unit_september +fuel_mmbtu_per_unit_october,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtu_per_unit_oct,mmbtuper_unit_oct,mmbtuper_unit_october,mmbtuper_unit_oct,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october,mmbtuper_unit_october +fuel_mmbtu_per_unit_november,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtu_per_unit_nov,mmbtuper_unit_nov,mmbtuper_unit_november,mmbtuper_unit_nov,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november,mmbtuper_unit_november +fuel_mmbtu_per_unit_december,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtu_per_unit_dec,mmbtuper_unit_dec,mmbtuper_unit_december,mmbtuper_unit_dec,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december,mmbtuper_unit_december +fuel_consumed_mmbtu_january,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtu_jan,tot_mmbtujan,tot_mmbtu_january,tot_mmbtujan,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january,tot_mmbtu_january +fuel_consumed_mmbtu_february,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtu_feb,tot_mmbtufeb,tot_mmbtu_february,tot_mmbtufeb,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february,tot_mmbtu_february +fuel_consumed_mmbtu_march,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtu_mar,tot_mmbtumar,tot_mmbtu_march,tot_mmbtumar,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march,tot_mmbtu_march +fuel_consumed_mmbtu_april,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtu_apr,tot_mmbtuapr,tot_mmbtu_april,tot_mmbtuapr,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april,tot_mmbtu_april +fuel_consumed_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtumay,tot_mmbtu_may,tot_mmbtumay,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may,tot_mmbtu_may +fuel_consumed_mmbtu_june,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtu_jun,tot_mmbtujun,tot_mmbtu_june,tot_mmbtujun,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june,tot_mmbtu_june +fuel_consumed_mmbtu_july,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtu_jul,tot_mmbtujul,tot_mmbtu_july,tot_mmbtujul,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july,tot_mmbtu_july +fuel_consumed_mmbtu_august,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtu_aug,tot_mmbtuaug,tot_mmbtu_august,tot_mmbtuaug,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august,tot_mmbtu_august +fuel_consumed_mmbtu_september,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtu_sep,tot_mmbtusep,tot_mmbtu_september,tot_mmbtusep,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september,tot_mmbtu_september +fuel_consumed_mmbtu_october,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtu_oct,tot_mmbtuoct,tot_mmbtu_october,tot_mmbtuoct,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october,tot_mmbtu_october +fuel_consumed_mmbtu_november,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtu_nov,tot_mmbtunov,tot_mmbtu_november,tot_mmbtunov,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november,tot_mmbtu_november +fuel_consumed_mmbtu_december,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtu_dec,tot_mmbtudec,tot_mmbtu_december,tot_mmbtudec,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december,tot_mmbtu_december +fuel_consumed_for_electricity_mmbtu_january,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtus_jan,elec_mmbtujan,elec_mmbtu_january,elec_mmbtujan,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january,elec_mmbtu_january +fuel_consumed_for_electricity_mmbtu_february,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtus_feb,elec_mmbtufeb,elec_mmbtu_february,elec_mmbtufeb,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february,elec_mmbtu_february +fuel_consumed_for_electricity_mmbtu_march,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtus_mar,elec_mmbtumar,elec_mmbtu_march,elec_mmbtumar,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march,elec_mmbtu_march +fuel_consumed_for_electricity_mmbtu_april,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtus_apr,elec_mmbtuapr,elec_mmbtu_april,elec_mmbtuapr,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april,elec_mmbtu_april +fuel_consumed_for_electricity_mmbtu_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtus_may,elec_mmbtumay,elec_mmbtu_may,elec_mmbtumay,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may,elec_mmbtu_may +fuel_consumed_for_electricity_mmbtu_june,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtus_jun,elec_mmbtujun,elec_mmbtu_june,elec_mmbtujun,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june,elec_mmbtu_june +fuel_consumed_for_electricity_mmbtu_july,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtus_jul,elec_mmbtujul,elec_mmbtu_july,elec_mmbtujul,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july,elec_mmbtu_july +fuel_consumed_for_electricity_mmbtu_august,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtus_aug,elec_mmbtuaug,elec_mmbtu_august,elec_mmbtuaug,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august,elec_mmbtu_august +fuel_consumed_for_electricity_mmbtu_september,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtus_sep,elec_mmbtusep,elec_mmbtu_september,elec_mmbtusep,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september,elec_mmbtu_september +fuel_consumed_for_electricity_mmbtu_october,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtus_oct,elec_mmbtuoct,elec_mmbtu_october,elec_mmbtuoct,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october,elec_mmbtu_october +fuel_consumed_for_electricity_mmbtu_november,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtus_nov,elec_mmbtunov,elec_mmbtu_november,elec_mmbtunov,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november,elec_mmbtu_november +fuel_consumed_for_electricity_mmbtu_december,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtus_dec,elec_mmbtudec,elec_mmbtu_december,elec_mmbtudec,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december,elec_mmbtu_december +net_generation_mwh_january,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_jan,netgen_january,netgen_jan,netgen_january,netgen_january,netgen_january,netgen_january,netgen_january,netgen_january,netgen_january,netgen_january,netgen_january,netgen_january +net_generation_mwh_february,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_feb,netgen_february,netgen_feb,netgen_february,netgen_february,netgen_february,netgen_february,netgen_february,netgen_february,netgen_february,netgen_february,netgen_february,netgen_february +net_generation_mwh_march,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_mar,netgen_march,netgen_mar,netgen_march,netgen_march,netgen_march,netgen_march,netgen_march,netgen_march,netgen_march,netgen_march,netgen_march,netgen_march +net_generation_mwh_april,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_apr,netgen_april,netgen_apr,netgen_april,netgen_april,netgen_april,netgen_april,netgen_april,netgen_april,netgen_april,netgen_april,netgen_april,netgen_april +net_generation_mwh_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may,netgen_may +net_generation_mwh_june,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_jun,netgen_june,netgen_jun,netgen_june,netgen_june,netgen_june,netgen_june,netgen_june,netgen_june,netgen_june,netgen_june,netgen_june,netgen_june +net_generation_mwh_july,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_jul,netgen_july,netgen_jul,netgen_july,netgen_july,netgen_july,netgen_july,netgen_july,netgen_july,netgen_july,netgen_july,netgen_july,netgen_july +net_generation_mwh_august,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_aug,netgen_august,netgen_aug,netgen_august,netgen_august,netgen_august,netgen_august,netgen_august,netgen_august,netgen_august,netgen_august,netgen_august,netgen_august +net_generation_mwh_september,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_sep,netgen_september,netgen_sep,netgen_september,netgen_september,netgen_september,netgen_september,netgen_september,netgen_september,netgen_september,netgen_september,netgen_september,netgen_september +net_generation_mwh_october,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_oct,netgen_october,netgen_oct,netgen_october,netgen_october,netgen_october,netgen_october,netgen_october,netgen_october,netgen_october,netgen_october,netgen_october,netgen_october +net_generation_mwh_november,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_nov,netgen_november,netgen_nov,netgen_november,netgen_november,netgen_november,netgen_november,netgen_november,netgen_november,netgen_november,netgen_november,netgen_november,netgen_november +net_generation_mwh_december,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_dec,netgen_december,netgen_dec,netgen_december,netgen_december,netgen_december,netgen_december,netgen_december,netgen_december,netgen_december,netgen_december,netgen_december,netgen_december +total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity,total_fuel_consumption_quantity +electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity,electric_fuel_consumption_quantity +total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtus,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu,total_fuel_consumption_mmbtu +elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtus,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu,elec_fuel_consumption_mmbtu +net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours,net_generation_megawatthours +report_year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year +early_release,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/src/pudl/package_data/eia923/column_maps/generator.csv b/src/pudl/package_data/eia923/column_maps/generator.csv index 8f13d81e7b..423f7aa4bc 100644 --- a/src/pudl/package_data/eia923/column_maps/generator.csv +++ b/src/pudl/package_data/eia923/column_maps/generator.csv @@ -1,31 +1,31 @@ -year_index,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022 -plant_id_eia,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id -combined_heat_power,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_and_power_plant,combined_heat_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant -plant_name_eia,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name -operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name -operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id -plant_state,state,state,state,state,plant_state,state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state -census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region -nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region -naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code -sector_id_eia,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,sector_number,eia_sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number -sector_name_eia,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name -generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id -prime_mover_code,prime_mover_type,prime_mover_type,prime_mover_type,prime_mover_type,reported_prime_mover,prime_mover_type,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover -reporting_frequency_code,,,,,,,,,,,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency -net_generation_mwh_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january -net_generation_mwh_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february -net_generation_mwh_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march -net_generation_mwh_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april -net_generation_mwh_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may -net_generation_mwh_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june -net_generation_mwh_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july -net_generation_mwh_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august -net_generation_mwh_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september -net_generation_mwh_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october -net_generation_mwh_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november -net_generation_mwh_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december -net_generation_mwh_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date -balancing_authority_code_eia,,,,,,,,,,,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code -report_year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year -early_release,,,,,,,,,,,,,,, +year_index,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023 +plant_id_eia,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id +combined_heat_power,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_power_plant,combined_heat_and_power_plant,combined_heat_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant,combined_heat_and_power_plant +plant_name_eia,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name +operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name,operator_name +operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id,operator_id +plant_state,state,state,state,state,plant_state,state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state +census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region,census_region +nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region,nerc_region +naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code +sector_id_eia,eia_sector_number,eia_sector_number,eia_sector_number,eia_sector_number,sector_number,eia_sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number +sector_name_eia,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name,sector_name +generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id,generator_id +prime_mover_code,prime_mover_type,prime_mover_type,prime_mover_type,prime_mover_type,reported_prime_mover,prime_mover_type,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover,reported_prime_mover +reporting_frequency_code,,,,,,,,,,,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency, +net_generation_mwh_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january,net_generation_january +net_generation_mwh_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february,net_generation_february +net_generation_mwh_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march,net_generation_march +net_generation_mwh_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april,net_generation_april +net_generation_mwh_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may,net_generation_may +net_generation_mwh_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june,net_generation_june +net_generation_mwh_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july,net_generation_july +net_generation_mwh_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august,net_generation_august +net_generation_mwh_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september,net_generation_september +net_generation_mwh_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october,net_generation_october +net_generation_mwh_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november,net_generation_november +net_generation_mwh_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december,net_generation_december +net_generation_mwh_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date,net_generation_year_to_date +balancing_authority_code_eia,,,,,,,,,,,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code,balancing_authority_code,ba_code +report_year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year,year +early_release,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/src/pudl/package_data/eia923/column_maps/plant_frame.csv b/src/pudl/package_data/eia923/column_maps/plant_frame.csv index 436be186bf..f3e723924b 100644 --- a/src/pudl/package_data/eia923/column_maps/plant_frame.csv +++ b/src/pudl/package_data/eia923/column_maps/plant_frame.csv @@ -1,12 +1,12 @@ -year_index,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022 -report_year,year,year,year,year,year,year,year,year,year,year,year,year -report_month,,,,month,month,month,month,month,,,, -plant_id_eia,eia_plant_id,plant_id,eia_plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id -plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state -eia_sector,sector,sector_number,sector,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number -naics_code,north_american_industiral_classification_system_naics_code,naics_code,north_american_industrial_classification_system_naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code -plant_name_eia,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name -combined_heat_power,combined_heat_and_power_status_y_chp_n_non_chp,combined_heat_and_power_status,combined_heat_and_power_status_y_chp_n_non_chp,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status -reporting_frequency_code,reporting_frequency_annual_or_monthly,reporting_frequency,reporting_frequency_annual_or_monthly,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,respondent_frequency,respondent_frequency,respondent_frequency -nameplate_capacity_mw,nameplate_capacity_mw,,,,,,,,,,, -early_release,,,,,,,,,,,, +year_index,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023 +report_year,year,year,year,year,year,year,year,year,year,year,year,year,year +report_month,,,,month,month,month,month,month,,,,,month +plant_id_eia,eia_plant_id,plant_id,eia_plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id,plant_id +plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state,plant_state +eia_sector,sector,sector_number,sector,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number,sector_number +naics_code,north_american_industiral_classification_system_naics_code,naics_code,north_american_industrial_classification_system_naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code,naics_code +plant_name_eia,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name,plant_name +combined_heat_power,combined_heat_and_power_status_y_chp_n_non_chp,combined_heat_and_power_status,combined_heat_and_power_status_y_chp_n_non_chp,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status,combined_heat_and_power_status +reporting_frequency_code,reporting_frequency_annual_or_monthly,reporting_frequency,reporting_frequency_annual_or_monthly,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,reporting_frequency,respondent_frequency,respondent_frequency,respondent_frequency,respondent_frequency +nameplate_capacity_mw,nameplate_capacity_mw,,,,,,,,,,,, +early_release,,,,,,,,,,,,, \ No newline at end of file diff --git a/src/pudl/package_data/eia923/column_maps/stocks.csv b/src/pudl/package_data/eia923/column_maps/stocks.csv index 39d036a5cc..23c8f0020e 100644 --- a/src/pudl/package_data/eia923/column_maps/stocks.csv +++ b/src/pudl/package_data/eia923/column_maps/stocks.csv @@ -1,39 +1,39 @@ -year_index,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022 -census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,region_name,census_division_and_state,region_name,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state -coal_january,coal_jan,coal_jan,coal_jan,coal_jan,coal_jan,coal_jan,coal_jan,coal_jan,coal_jan,coal_jan,coal_jan,coal_january,coal_jan,coal_january,coal_january,coal_january,coal_january,coal_january,coal_january,coal_january,coal_january,coal_january -coal_february,coal_feb,coal_feb,coal_feb,coal_feb,coal_feb,coal_feb,coal_feb,coal_feb,coal_feb,coal_feb,coal_feb,coal_february,coal_feb,coal_february,coal_february,coal_february,coal_february,coal_february,coal_february,coal_february,coal_february,coal_february -coal_march,coal_mar,coal_mar,coal_mar,coal_mar,coal_mar,coal_mar,coal_mar,coal_mar,coal_mar,coal_mar,coal_mar,coal_march,coal_mar,coal_march,coal_march,coal_march,coal_march,coal_march,coal_march,coal_march,coal_march,coal_march -coal_april,coal_apr,coal_apr,coal_apr,coal_apr,coal_apr,coal_apr,coal_apr,coal_apr,coal_apr,coal_apr,coal_apr,coal_april,coal_apr,coal_april,coal_april,coal_april,coal_april,coal_april,coal_april,coal_april,coal_april,coal_april -coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may -coal_june,coal_jun,coal_jun,coal_jun,coal_jun,coal_jun,coal_jun,coal_jun,coal_jun,coal_jun,coal_jun,coal_jun,coal_june,coal_jun,coal_june,coal_june,coal_june,coal_june,coal_june,coal_june,coal_june,coal_june,coal_june -coal_july,coal_jul,coal_jul,coal_jul,coal_jul,coal_jul,coal_jul,coal_jul,coal_jul,coal_jul,coal_jul,coal_jul,coal_july,coal_jul,coal_july,coal_july,coal_july,coal_july,coal_july,coal_july,coal_july,coal_july,coal_july -coal_august,coal_aug,coal_aug,coal_aug,coal_aug,coal_aug,coal_aug,coal_aug,coal_aug,coal_aug,coal_aug,coal_aug,coal_august,coal_aug,coal_august,coal_august,coal_august,coal_august,coal_august,coal_august,coal_august,coal_august,coal_august -coal_september,coal_sep,coal_sep,coal_sep,coal_sep,coal_sep,coal_sep,coal_sep,coal_sep,coal_sep,coal_sep,coal_sep,coal_september,coal_sep,coal_september,coal_september,coal_september,coal_september,coal_september,coal_september,coal_september,coal_september,coal_september -coal_october,coal_oct,coal_oct,coal_oct,coal_oct,coal_oct,coal_oct,coal_oct,coal_oct,coal_oct,coal_oct,coal_oct,coal_october,coal_oct,coal_october,coal_october,coal_october,coal_october,coal_october,coal_october,coal_october,coal_october,coal_october -coal_november,coal_nov,coal_nov,coal_nov,coal_nov,coal_nov,coal_nov,coal_nov,coal_nov,coal_nov,coal_nov,coal_nov,coal_november,coal_nov,coal_november,coal_november,coal_november,coal_november,coal_november,coal_november,coal_november,coal_november,coal_november -coal_december,coal_dec,coal_dec,coal_dec,coal_dec,coal_dec,coal_dec,coal_dec,coal_dec,coal_dec,coal_dec,coal_dec,coal_december,coal_dec,coal_december,coal_december,coal_december,coal_december,coal_december,coal_december,coal_december,coal_december,coal_december -oil_january,oil_jan,oil_jan,oil_jan,oil_jan,oil_jan,oil_jan,oil_jan,oil_jan,oil_jan,oil_jan,oil_jan,oil_january,oil_jan,oil_january,oil_january,oil_january,oil_january,oil_january,oil_january,oil_january,oil_january,oil_january -oil_february,oil_feb,oil_feb,oil_feb,oil_feb,oil_feb,oil_feb,oil_feb,oil_feb,oil_feb,oil_feb,oil_feb,oil_february,oil_feb,oil_february,oil_february,oil_february,oil_february,oil_february,oil_february,oil_february,oil_february,oil_february -oil_march,oil_mar,oil_mar,oil_mar,oil_mar,oil_mar,oil_mar,oil_mar,oil_mar,oil_mar,oil_mar,oil_mar,oil_march,oil_mar,oil_march,oil_march,oil_march,oil_march,oil_march,oil_march,oil_march,oil_march,oil_march -oil_april,oil_apr,oil_apr,oil_apr,oil_apr,oil_apr,oil_apr,oil_apr,oil_apr,oil_apr,oil_apr,oil_apr,oil_april,oil_apr,oil_april,oil_april,oil_april,oil_april,oil_april,oil_april,oil_april,oil_april,oil_april -oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may -oil_june,oil_jun,oil_jun,oil_jun,oil_jun,oil_jun,oil_jun,oil_jun,oil_jun,oil_jun,oil_jun,oil_jun,oil_june,oil_jun,oil_june,oil_june,oil_june,oil_june,oil_june,oil_june,oil_june,oil_june,oil_june -oil_july,oil_jul,oil_jul,oil_jul,oil_jul,oil_jul,oil_jul,oil_jul,oil_jul,oil_jul,oil_jul,oil_jul,oil_july,oil_jul,oil_july,oil_july,oil_july,oil_july,oil_july,oil_july,oil_july,oil_july,oil_july -oil_august,oil_aug,oil_aug,oil_aug,oil_aug,oil_aug,oil_aug,oil_aug,oil_aug,oil_aug,oil_aug,oil_aug,oil_august,oil_aug,oil_august,oil_august,oil_august,oil_august,oil_august,oil_august,oil_august,oil_august,oil_august -oil_september,oil_sep,oil_sep,oil_sep,oil_sep,oil_sep,oil_sep,oil_sep,oil_sep,oil_sep,oil_sep,oil_sep,oil_september,oil_sep,oil_september,oil_september,oil_september,oil_september,oil_september,oil_september,oil_september,oil_september,oil_september -oil_october,oil_oct,oil_oct,oil_oct,oil_oct,oil_oct,oil_oct,oil_oct,oil_oct,oil_oct,oil_oct,oil_oct,oil_october,oil_oct,oil_october,oil_october,oil_october,oil_october,oil_october,oil_october,oil_october,oil_october,oil_october -oil_november,oil_nov,oil_nov,oil_nov,oil_nov,oil_nov,oil_nov,oil_nov,oil_nov,oil_nov,oil_nov,oil_nov,oil_november,oil_nov,oil_november,oil_november,oil_november,oil_november,oil_november,oil_november,oil_november,oil_november,oil_november -oil_december,oil_dec,oil_dec,oil_dec,oil_dec,oil_dec,oil_dec,oil_dec,oil_dec,oil_dec,oil_dec,oil_dec,oil_december,oil_dec,oil_december,oil_december,oil_december,oil_december,oil_december,oil_december,oil_december,oil_december,oil_december -petcoke_january,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_january,petcoke_jan,petcoke_january,petcoke_january,petcoke_january,petcoke_january,petcoke_january,petcoke_january,petcoke_january,petcoke_january,petcoke_january -petcoke_february,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_february,petcoke_feb,petcoke_february,petcoke_february,petcoke_february,petcoke_february,petcoke_february,petcoke_february,petcoke_february,petcoke_february,petcoke_february -petcoke_march,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_march,petcoke_mar,petcoke_march,petcoke_march,petcoke_march,petcoke_march,petcoke_march,petcoke_march,petcoke_march,petcoke_march,petcoke_march -petcoke_april,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_april,petcoke_apr,petcoke_april,petcoke_april,petcoke_april,petcoke_april,petcoke_april,petcoke_april,petcoke_april,petcoke_april,petcoke_april -petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may -petcoke_june,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_june,petcoke_jun,petcoke_june,petcoke_june,petcoke_june,petcoke_june,petcoke_june,petcoke_june,petcoke_june,petcoke_june,petcoke_june -petcoke_july,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_july,petcoke_jul,petcoke_july,petcoke_july,petcoke_july,petcoke_july,petcoke_july,petcoke_july,petcoke_july,petcoke_july,petcoke_july -petcoke_august,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_august,petcoke_aug,petcoke_august,petcoke_august,petcoke_august,petcoke_august,petcoke_august,petcoke_august,petcoke_august,petcoke_august,petcoke_august -petcoke_september,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_september,petcoke_sep,petcoke_september,petcoke_september,petcoke_september,petcoke_september,petcoke_september,petcoke_september,petcoke_september,petcoke_september,petcoke_september -petcoke_october,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_october,petcoke_oct,petcoke_october,petcoke_october,petcoke_october,petcoke_october,petcoke_october,petcoke_october,petcoke_october,petcoke_october,petcoke_october -petcoke_november,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_november,petcoke_nov,petcoke_november,petcoke_november,petcoke_november,petcoke_november,petcoke_november,petcoke_november,petcoke_november,petcoke_november,petcoke_november -petcoke_december,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_december,petcoke_dec,petcoke_december,petcoke_december,petcoke_december,petcoke_december,petcoke_december,petcoke_december,petcoke_december,petcoke_december,petcoke_december -early_release,,,,,,,,,,,,,,,,,,,,,, +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 +census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,region_name,census_division_and_state,region_name,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state,census_division_and_state +coal_january,coal_jan,coal_jan,coal_jan,coal_jan,coal_jan,coal_jan,coal_jan,coal_jan,coal_jan,coal_jan,coal_jan,coal_january,coal_jan,coal_january,coal_january,coal_january,coal_january,coal_january,coal_january,coal_january,coal_january,coal_january,coal_january +coal_february,coal_feb,coal_feb,coal_feb,coal_feb,coal_feb,coal_feb,coal_feb,coal_feb,coal_feb,coal_feb,coal_feb,coal_february,coal_feb,coal_february,coal_february,coal_february,coal_february,coal_february,coal_february,coal_february,coal_february,coal_february,coal_february +coal_march,coal_mar,coal_mar,coal_mar,coal_mar,coal_mar,coal_mar,coal_mar,coal_mar,coal_mar,coal_mar,coal_mar,coal_march,coal_mar,coal_march,coal_march,coal_march,coal_march,coal_march,coal_march,coal_march,coal_march,coal_march,coal_march +coal_april,coal_apr,coal_apr,coal_apr,coal_apr,coal_apr,coal_apr,coal_apr,coal_apr,coal_apr,coal_apr,coal_apr,coal_april,coal_apr,coal_april,coal_april,coal_april,coal_april,coal_april,coal_april,coal_april,coal_april,coal_april,coal_april +coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may,coal_may +coal_june,coal_jun,coal_jun,coal_jun,coal_jun,coal_jun,coal_jun,coal_jun,coal_jun,coal_jun,coal_jun,coal_jun,coal_june,coal_jun,coal_june,coal_june,coal_june,coal_june,coal_june,coal_june,coal_june,coal_june,coal_june,coal_june +coal_july,coal_jul,coal_jul,coal_jul,coal_jul,coal_jul,coal_jul,coal_jul,coal_jul,coal_jul,coal_jul,coal_jul,coal_july,coal_jul,coal_july,coal_july,coal_july,coal_july,coal_july,coal_july,coal_july,coal_july,coal_july,coal_july +coal_august,coal_aug,coal_aug,coal_aug,coal_aug,coal_aug,coal_aug,coal_aug,coal_aug,coal_aug,coal_aug,coal_aug,coal_august,coal_aug,coal_august,coal_august,coal_august,coal_august,coal_august,coal_august,coal_august,coal_august,coal_august,coal_august +coal_september,coal_sep,coal_sep,coal_sep,coal_sep,coal_sep,coal_sep,coal_sep,coal_sep,coal_sep,coal_sep,coal_sep,coal_september,coal_sep,coal_september,coal_september,coal_september,coal_september,coal_september,coal_september,coal_september,coal_september,coal_september,coal_september +coal_october,coal_oct,coal_oct,coal_oct,coal_oct,coal_oct,coal_oct,coal_oct,coal_oct,coal_oct,coal_oct,coal_oct,coal_october,coal_oct,coal_october,coal_october,coal_october,coal_october,coal_october,coal_october,coal_october,coal_october,coal_october,coal_october +coal_november,coal_nov,coal_nov,coal_nov,coal_nov,coal_nov,coal_nov,coal_nov,coal_nov,coal_nov,coal_nov,coal_nov,coal_november,coal_nov,coal_november,coal_november,coal_november,coal_november,coal_november,coal_november,coal_november,coal_november,coal_november,coal_november +coal_december,coal_dec,coal_dec,coal_dec,coal_dec,coal_dec,coal_dec,coal_dec,coal_dec,coal_dec,coal_dec,coal_dec,coal_december,coal_dec,coal_december,coal_december,coal_december,coal_december,coal_december,coal_december,coal_december,coal_december,coal_december,coal_december +oil_january,oil_jan,oil_jan,oil_jan,oil_jan,oil_jan,oil_jan,oil_jan,oil_jan,oil_jan,oil_jan,oil_jan,oil_january,oil_jan,oil_january,oil_january,oil_january,oil_january,oil_january,oil_january,oil_january,oil_january,oil_january,oil_january +oil_february,oil_feb,oil_feb,oil_feb,oil_feb,oil_feb,oil_feb,oil_feb,oil_feb,oil_feb,oil_feb,oil_feb,oil_february,oil_feb,oil_february,oil_february,oil_february,oil_february,oil_february,oil_february,oil_february,oil_february,oil_february,oil_february +oil_march,oil_mar,oil_mar,oil_mar,oil_mar,oil_mar,oil_mar,oil_mar,oil_mar,oil_mar,oil_mar,oil_mar,oil_march,oil_mar,oil_march,oil_march,oil_march,oil_march,oil_march,oil_march,oil_march,oil_march,oil_march,oil_march +oil_april,oil_apr,oil_apr,oil_apr,oil_apr,oil_apr,oil_apr,oil_apr,oil_apr,oil_apr,oil_apr,oil_apr,oil_april,oil_apr,oil_april,oil_april,oil_april,oil_april,oil_april,oil_april,oil_april,oil_april,oil_april,oil_april +oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may,oil_may +oil_june,oil_jun,oil_jun,oil_jun,oil_jun,oil_jun,oil_jun,oil_jun,oil_jun,oil_jun,oil_jun,oil_jun,oil_june,oil_jun,oil_june,oil_june,oil_june,oil_june,oil_june,oil_june,oil_june,oil_june,oil_june,oil_june +oil_july,oil_jul,oil_jul,oil_jul,oil_jul,oil_jul,oil_jul,oil_jul,oil_jul,oil_jul,oil_jul,oil_jul,oil_july,oil_jul,oil_july,oil_july,oil_july,oil_july,oil_july,oil_july,oil_july,oil_july,oil_july,oil_july +oil_august,oil_aug,oil_aug,oil_aug,oil_aug,oil_aug,oil_aug,oil_aug,oil_aug,oil_aug,oil_aug,oil_aug,oil_august,oil_aug,oil_august,oil_august,oil_august,oil_august,oil_august,oil_august,oil_august,oil_august,oil_august,oil_august +oil_september,oil_sep,oil_sep,oil_sep,oil_sep,oil_sep,oil_sep,oil_sep,oil_sep,oil_sep,oil_sep,oil_sep,oil_september,oil_sep,oil_september,oil_september,oil_september,oil_september,oil_september,oil_september,oil_september,oil_september,oil_september,oil_september +oil_october,oil_oct,oil_oct,oil_oct,oil_oct,oil_oct,oil_oct,oil_oct,oil_oct,oil_oct,oil_oct,oil_oct,oil_october,oil_oct,oil_october,oil_october,oil_october,oil_october,oil_october,oil_october,oil_october,oil_october,oil_october,oil_october +oil_november,oil_nov,oil_nov,oil_nov,oil_nov,oil_nov,oil_nov,oil_nov,oil_nov,oil_nov,oil_nov,oil_nov,oil_november,oil_nov,oil_november,oil_november,oil_november,oil_november,oil_november,oil_november,oil_november,oil_november,oil_november,oil_november +oil_december,oil_dec,oil_dec,oil_dec,oil_dec,oil_dec,oil_dec,oil_dec,oil_dec,oil_dec,oil_dec,oil_dec,oil_december,oil_dec,oil_december,oil_december,oil_december,oil_december,oil_december,oil_december,oil_december,oil_december,oil_december,oil_december +petcoke_january,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_jan,petcoke_january,petcoke_jan,petcoke_january,petcoke_january,petcoke_january,petcoke_january,petcoke_january,petcoke_january,petcoke_january,petcoke_january,petcoke_january,petcoke_january +petcoke_february,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_feb,petcoke_february,petcoke_feb,petcoke_february,petcoke_february,petcoke_february,petcoke_february,petcoke_february,petcoke_february,petcoke_february,petcoke_february,petcoke_february,petcoke_february +petcoke_march,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_mar,petcoke_march,petcoke_mar,petcoke_march,petcoke_march,petcoke_march,petcoke_march,petcoke_march,petcoke_march,petcoke_march,petcoke_march,petcoke_march,petcoke_march +petcoke_april,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_apr,petcoke_april,petcoke_apr,petcoke_april,petcoke_april,petcoke_april,petcoke_april,petcoke_april,petcoke_april,petcoke_april,petcoke_april,petcoke_april,petcoke_april +petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may,petcoke_may +petcoke_june,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_jun,petcoke_june,petcoke_jun,petcoke_june,petcoke_june,petcoke_june,petcoke_june,petcoke_june,petcoke_june,petcoke_june,petcoke_june,petcoke_june,petcoke_june +petcoke_july,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_jul,petcoke_july,petcoke_jul,petcoke_july,petcoke_july,petcoke_july,petcoke_july,petcoke_july,petcoke_july,petcoke_july,petcoke_july,petcoke_july,petcoke_july +petcoke_august,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_aug,petcoke_august,petcoke_aug,petcoke_august,petcoke_august,petcoke_august,petcoke_august,petcoke_august,petcoke_august,petcoke_august,petcoke_august,petcoke_august,petcoke_august +petcoke_september,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_sep,petcoke_september,petcoke_sep,petcoke_september,petcoke_september,petcoke_september,petcoke_september,petcoke_september,petcoke_september,petcoke_september,petcoke_september,petcoke_september,petcoke_september +petcoke_october,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_oct,petcoke_october,petcoke_oct,petcoke_october,petcoke_october,petcoke_october,petcoke_october,petcoke_october,petcoke_october,petcoke_october,petcoke_october,petcoke_october,petcoke_october +petcoke_november,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_nov,petcoke_november,petcoke_nov,petcoke_november,petcoke_november,petcoke_november,petcoke_november,petcoke_november,petcoke_november,petcoke_november,petcoke_november,petcoke_november,petcoke_november +petcoke_december,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_dec,petcoke_december,petcoke_dec,petcoke_december,petcoke_december,petcoke_december,petcoke_december,petcoke_december,petcoke_december,petcoke_december,petcoke_december,petcoke_december,petcoke_december +early_release,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/src/pudl/package_data/eia923/file_map.csv b/src/pudl/package_data/eia923/file_map.csv index 6ad002e621..73dc128416 100644 --- a/src/pudl/package_data/eia923/file_map.csv +++ b/src/pudl/package_data/eia923/file_map.csv @@ -1,14 +1,14 @@ -page,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022 -boiler_fuel,-1,-1,-1,-1,-1,-1,-1,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx -coal_stocks,-1,f906920y2002.xls,f906920_2003.xls,f906920_2004.xls,f906920_2005.xls,f906920_2006.xls,f906920_2007.xls,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,-1,-1 -energy_storage,-1,-1,-1,-1,-1,-1,-1,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx -fuel_receipts_costs,-1,-1,-1,-1,-1,-1,-1,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx -generation_fuel,f906920y2001.xls,f906920y2002.xls,f906920_2003.xls,f906920_2004.xls,f906920_2005.xls,f906920_2006.xls,f906920_2007.xls,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx -generator,-1,-1,-1,-1,-1,-1,-1,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx -oil_stocks,-1,f906920y2002.xls,f906920_2003.xls,f906920_2004.xls,f906920_2005.xls,f906920_2006.xls,f906920_2007.xls,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx -petcoke_stocks,-1,f906920y2002.xls,f906920_2003.xls,f906920_2004.xls,f906920_2005.xls,f906920_2006.xls,f906920_2007.xls,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,-1,-1 -plant_frame,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx -puerto_rico,-1,-1,-1,-1,-1,-1,-1,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx -stocks,f906920y2001.xls,f906920y2002.xls,f906920_2003.xls,f906920_2004.xls,f906920_2005.xls,f906920_2006.xls,f906920_2007.xls,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx -plant_frame_puerto_rico,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx -emissions_control,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,EIA923_Schedule_8_Annual_Environmental_Information_2012_Final_Revision.xlsx,EIA923_Schedule_8_PartsA-D_EnvData_2013_Final_Revision.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2014_Final_Revision.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2015_Final_Revision.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2016_Final_Revision.xlsx,EIA923_Schedule_8_Annual_Envir_Infor_2017_Final.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2018_Final.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2019_Final_Revision.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2020_Final_Revision.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2021_Final_Revision.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2022_Early_Release.xlsx +page,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023 +boiler_fuel,-1,-1,-1,-1,-1,-1,-1,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx,EIA923_Schedules_2_3_4_5_M_04_2023_21JUN2023.xlsx +coal_stocks,-1,f906920y2002.xls,f906920_2003.xls,f906920_2004.xls,f906920_2005.xls,f906920_2006.xls,f906920_2007.xls,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,-1,-1,-1 +energy_storage,-1,-1,-1,-1,-1,-1,-1,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx,EIA923_Schedules_2_3_4_5_M_04_2023_21JUN2023.xlsx +fuel_receipts_costs,-1,-1,-1,-1,-1,-1,-1,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx,EIA923_Schedules_2_3_4_5_M_04_2023_21JUN2023.xlsx +generation_fuel,f906920y2001.xls,f906920y2002.xls,f906920_2003.xls,f906920_2004.xls,f906920_2005.xls,f906920_2006.xls,f906920_2007.xls,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx,EIA923_Schedules_2_3_4_5_M_04_2023_21JUN2023.xlsx +generator,-1,-1,-1,-1,-1,-1,-1,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx,EIA923_Schedules_2_3_4_5_M_04_2023_21JUN2023.xlsx +oil_stocks,-1,f906920y2002.xls,f906920_2003.xls,f906920_2004.xls,f906920_2005.xls,f906920_2006.xls,f906920_2007.xls,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx,EIA923_Schedules_2_3_4_5_M_04_2023_21JUN2023.xlsx +petcoke_stocks,-1,f906920y2002.xls,f906920_2003.xls,f906920_2004.xls,f906920_2005.xls,f906920_2006.xls,f906920_2007.xls,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,-1,-1,-1 +plant_frame,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx,EIA923_Schedules_2_3_4_5_M_04_2023_21JUN2023.xlsx +puerto_rico,-1,-1,-1,-1,-1,-1,-1,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx,EIA923_Schedules_2_3_4_5_M_04_2023_21JUN2023.xlsx +stocks,f906920y2001.xls,f906920y2002.xls,f906920_2003.xls,f906920_2004.xls,f906920_2005.xls,f906920_2006.xls,f906920_2007.xls,eia923December2008.xls,EIA923 SCHEDULES 2_3_4_5 M Final 2009 REVISED 05252011.XLS,EIA923 SCHEDULES 2_3_4_5 Final 2010.xls,EIA923_Schedules_2_3_4_5_2011_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2012_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_2013_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2014_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2015_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2016_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2017_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2018_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx,EIA923_Schedules_2_3_4_5_M_04_2023_21JUN2023.xlsx +plant_frame_puerto_rico,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,EIA923_Schedules_2_3_4_5_M_12_2019_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2020_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2021_Final_Revision.xlsx,EIA923_Schedules_2_3_4_5_M_12_2022_Early_Release.xlsx,EIA923_Schedules_2_3_4_5_M_04_2023_21JUN2023.xlsx +emissions_control,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,EIA923_Schedule_8_Annual_Environmental_Information_2012_Final_Revision.xlsx,EIA923_Schedule_8_PartsA-D_EnvData_2013_Final_Revision.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2014_Final_Revision.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2015_Final_Revision.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2016_Final_Revision.xlsx,EIA923_Schedule_8_Annual_Envir_Infor_2017_Final.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2018_Final.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2019_Final_Revision.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2020_Final_Revision.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2021_Final_Revision.xlsx,EIA923_Schedule_8_Annual_Environmental_Information_2022_Early_Release.xlsx,-1 \ No newline at end of file diff --git a/src/pudl/package_data/eia923/page_map.csv b/src/pudl/package_data/eia923/page_map.csv index 76a60d1707..f66e5296eb 100644 --- a/src/pudl/package_data/eia923/page_map.csv +++ b/src/pudl/package_data/eia923/page_map.csv @@ -1,14 +1,14 @@ -year_index,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022 -generation_fuel,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -puerto_rico,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1 -energy_storage,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,2,2,2,2,2,2 -stocks,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,3,3,3,3,3,3 -oil_stocks,-1,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,4,4,4,4,4,4 -coal_stocks,-1,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,-1 -petcoke_stocks,-1,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,6,6,6,6,6,-1 -boiler_fuel,-1,-1,-1,-1,-1,-1,-1,5,5,5,5,5,5,6,6,6,7,7,7,7,7,5 -generator,-1,-1,-1,-1,-1,-1,-1,6,6,6,6,6,6,7,7,7,8,8,8,8,8,6 -fuel_receipts_costs,-1,-1,-1,-1,-1,-1,-1,7,7,7,7,7,7,8,8,8,9,9,9,9,9,7 -plant_frame,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,8,8,9,9,9,10,10,10,10,10,8 -plant_frame_puerto_rico,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,-1,11,11,11,9 -emissions_control,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,2,2,2,2,2,2,2,2,2,2 +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 +generation_fuel,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +puerto_rico,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1 +energy_storage,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,2,2,2,2,2,2,2 +stocks,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,3,3,3,3,3,3,3 +oil_stocks,-1,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,4,4,4,4,4,4,4 +coal_stocks,-1,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,-1,-1 +petcoke_stocks,-1,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,6,6,6,6,6,-1,-1 +boiler_fuel,-1,-1,-1,-1,-1,-1,-1,5,5,5,5,5,5,6,6,6,7,7,7,7,7,5,5 +generator,-1,-1,-1,-1,-1,-1,-1,6,6,6,6,6,6,7,7,7,8,8,8,8,8,6,6 +fuel_receipts_costs,-1,-1,-1,-1,-1,-1,-1,7,7,7,7,7,7,8,8,8,9,9,9,9,9,7,7 +plant_frame,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,8,8,9,9,9,10,10,10,10,10,8,8 +plant_frame_puerto_rico,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,11,-1,11,11,11,9,9 +emissions_control,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2,2,2,2,2,2,2,2,2,2,2,-1 \ No newline at end of file diff --git a/src/pudl/package_data/eia923/skipfooter.csv b/src/pudl/package_data/eia923/skipfooter.csv index 9ecf2bcce7..ccaa9d6405 100644 --- a/src/pudl/package_data/eia923/skipfooter.csv +++ b/src/pudl/package_data/eia923/skipfooter.csv @@ -1,14 +1,14 @@ -year_index,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022 -generation_fuel,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -puerto_rico,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -stocks,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -oil_stocks,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -coal_stocks,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -petcoke_stocks,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -energy_storage,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -boiler_fuel,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -generator,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -fuel_receipts_costs,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -plant_frame,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -plant_frame_puerto_rico,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -emissions_control,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +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 +generation_fuel,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +puerto_rico,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +stocks,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +oil_stocks,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +coal_stocks,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +petcoke_stocks,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +energy_storage,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +boiler_fuel,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +generator,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +fuel_receipts_costs,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +plant_frame,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +plant_frame_puerto_rico,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +emissions_control,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 \ No newline at end of file diff --git a/src/pudl/package_data/eia923/skiprows.csv b/src/pudl/package_data/eia923/skiprows.csv index 3c0e3d32e8..758744ab14 100644 --- a/src/pudl/package_data/eia923/skiprows.csv +++ b/src/pudl/package_data/eia923/skiprows.csv @@ -1,14 +1,14 @@ -year_index,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022 -generation_fuel,7,7,7,7,7,7,7,7,7,7,5,5,5,5,5,5,5,5,5,5,5,6 -puerto_rico,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,5,6,6,6,7 -stocks,7,7,7,7,7,7,7,7,7,7,5,5,5,5,5,5,5,5,5,5,5,6 -oil_stocks,-1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6 -coal_stocks,-1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-1,-1 -petcoke_stocks,-1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-1,-1 -energy_storage,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,5,5,5,6 -boiler_fuel,-1,-1,-1,-1,-1,-1,-1,7,7,7,5,5,5,5,5,5,5,5,5,5,5,6 -generator,-1,-1,-1,-1,-1,-1,-1,7,7,7,5,5,5,5,5,5,5,5,5,5,5,6 -fuel_receipts_costs,-1,-1,-1,-1,-1,-1,-1,7,6,7,4,4,4,4,4,4,4,4,4,4,4,5 -plant_frame,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,4,4,4,4,4,4,4,4,4,4,5 -plant_frame_puerto_rico,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,4,4,5 -emissions_control,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,4,4,4,4,4,4,4,4,4,5 +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 +generation_fuel,7,7,7,7,7,7,7,7,7,7,5,5,5,5,5,5,5,5,5,5,5,6,5 +puerto_rico,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,5,6,6,6,7,5 +stocks,7,7,7,7,7,7,7,7,7,7,5,5,5,5,5,5,5,5,5,5,5,6,4 +oil_stocks,-1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,4 +coal_stocks,-1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-1,-1,-1 +petcoke_stocks,-1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-1,-1,-1 +energy_storage,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5,5,5,5,6,4 +boiler_fuel,-1,-1,-1,-1,-1,-1,-1,7,7,7,5,5,5,5,5,5,5,5,5,5,5,6,4 +generator,-1,-1,-1,-1,-1,-1,-1,7,7,7,5,5,5,5,5,5,5,5,5,5,5,6,4 +fuel_receipts_costs,-1,-1,-1,-1,-1,-1,-1,7,6,7,4,4,4,4,4,4,4,4,4,4,4,5,3 +plant_frame,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,4,4,4,4,4,4,4,4,4,4,5,3 +plant_frame_puerto_rico,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,4,4,5,3 +emissions_control,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4,4,4,4,4,4,4,4,4,4,5,-1 \ No newline at end of file diff --git a/test/validate/eia_test.py b/test/validate/eia_test.py index 71e32b8751..aaa281d560 100644 --- a/test/validate/eia_test.py +++ b/test/validate/eia_test.py @@ -45,15 +45,15 @@ def test_no_null_cols_eia(pudl_out_eia, live_dbs, cols, df_name): @pytest.mark.parametrize( "df_name,raw_rows,monthly_rows,annual_rows", [ - ("bf_eia923", 1_521_304, 1_521_304, 127_412), + ("bf_eia923", 1_559_257, 1_559_257, 133_754), ("bga_eia860", 141_638, 141_638, 141_638), - ("boil_eia860", 80_059, 80_059, 80_059), - ("frc_eia923", 631_975, 258_115, 25_370), + ("boil_eia860", 83_354, 83_354, 83_354), + ("frc_eia923", 639_647, 261_583, 26_345), ("gen_eia923", None, 5_178_892, 433_286), - ("gens_eia860", 556_578, 556_578, 556_578), - ("gf_eia923", 2_859_269, 2_859_269, 244_796), + ("gens_eia860", 556_586, 556_586, 556_586), + ("gf_eia923", 2_879_896, 2_879_896, 250_018), ("own_eia860", 89_687, 89_687, 89_687), - ("plants_eia860", 200_177, 200_177, 200_177), + ("plants_eia860", 200_210, 200_210, 200_210), ("pu_eia860", 199_332, 199_332, 199_332), ("utils_eia860", 139_715, 139_715, 139_715), ("emissions_control_equipment_eia860", 56_612, 56_612, 56_612), From 681b72dc3fa2fcc4826a727cef18e3b951443232 Mon Sep 17 00:00:00 2001 From: Austen Sharpe Date: Thu, 12 Oct 2023 10:11:06 -0300 Subject: [PATCH 02/44] remove breakpoint --- src/pudl/extract/excel.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/pudl/extract/excel.py b/src/pudl/extract/excel.py index 995775540f..0d64d39723 100644 --- a/src/pudl/extract/excel.py +++ b/src/pudl/extract/excel.py @@ -8,8 +8,6 @@ import pudl -from dagster._utils.forked_pdb import ForkedPdb - logger = pudl.logging_helpers.get_logger(__name__) From 2bff97df1a2c7e6d204a16f7fd05ed67d7b04c41 Mon Sep 17 00:00:00 2001 From: Austen Sharpe Date: Thu, 12 Oct 2023 14:29:20 -0300 Subject: [PATCH 03/44] Add function to drop ytd records for annual tables --- src/pudl/output/eia923.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/pudl/output/eia923.py b/src/pudl/output/eia923.py index 55721bffa1..dd4e97ad22 100644 --- a/src/pudl/output/eia923.py +++ b/src/pudl/output/eia923.py @@ -126,6 +126,30 @@ def _fill_fuel_costs_by_state( return out_df +def drop_ytd_for_annual_tables(df: pd.DataFrame, freq: str) -> pd.DataFrame: + """Drop records in annual tables where data_maturity is incremental_ytd. + + This avoids accidental aggregation errors due to sub-annually reported data. + + Args: + df: A pd.DataFrame that contains a data_maturity column and for + which you want to drop values where data_maturity = incremental_ytd. + freq: either MS or AS to indicate the level of aggretation for a specific table. + + Returns: + pd.DataFrame: The same input pd.DataFrames but without any rows where + data_maturity = incremental_ytd. + """ + if freq == "AS": + logger.info( + "Removing rows where data_maturity is incremental_ytd to avoid " + "aggregation errors." + ) + return df.loc[df["data_maturity"] != "incremental_ytd"] + else: + return df + + ##################################################################################### # Simple Denormalized Assets ##################################################################################### @@ -339,6 +363,7 @@ def generation_agg_eia923( denorm_generation_eia923.set_index( pd.DatetimeIndex(denorm_generation_eia923.report_date) ) + .pipe(drop_ytd_for_annual_tables, freq) .groupby( by=["plant_id_eia", "generator_id", pd.Grouper(freq=freq)], observed=True, @@ -367,6 +392,7 @@ def generation_fuel_combined_agg_eia923( denorm_generation_fuel_combined_eia923.set_index( pd.DatetimeIndex(denorm_generation_fuel_combined_eia923.report_date) ) + .pipe(drop_ytd_for_annual_tables, freq) .groupby( by=[ "plant_id_eia", @@ -439,6 +465,7 @@ def boiler_fuel_agg_eia923( total_ash_content=lambda x: x.fuel_consumed_units * x.ash_content_pct, ) .set_index(pd.DatetimeIndex(denorm_boiler_fuel_eia923.report_date)) + .pipe(drop_ytd_for_annual_tables, freq) .groupby( by=[ "plant_id_eia", @@ -501,6 +528,7 @@ def fuel_receipts_costs_agg_eia923( total_chlorine_content=lambda x: x.chlorine_content_ppm * x.fuel_received_units, ) + .pipe(drop_ytd_for_annual_tables, freq) .groupby( by=["plant_id_eia", "fuel_type_code_pudl", pd.Grouper(freq=freq)], observed=True, From 796b5da8a7408cb4863293adda4acea83f96bcfc Mon Sep 17 00:00:00 2001 From: Austen Sharpe Date: Thu, 12 Oct 2023 14:39:15 -0300 Subject: [PATCH 04/44] Adjust monthly row expectations for gf and frc tables after dropping ytd values for annual tables --- test/validate/eia_test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/validate/eia_test.py b/test/validate/eia_test.py index aaa281d560..0729f40f40 100644 --- a/test/validate/eia_test.py +++ b/test/validate/eia_test.py @@ -48,10 +48,10 @@ def test_no_null_cols_eia(pudl_out_eia, live_dbs, cols, df_name): ("bf_eia923", 1_559_257, 1_559_257, 133_754), ("bga_eia860", 141_638, 141_638, 141_638), ("boil_eia860", 83_354, 83_354, 83_354), - ("frc_eia923", 639_647, 261_583, 26_345), + ("frc_eia923", 639_647, 261_583, 25_370), ("gen_eia923", None, 5_178_892, 433_286), ("gens_eia860", 556_586, 556_586, 556_586), - ("gf_eia923", 2_879_896, 2_879_896, 250_018), + ("gf_eia923", 2_879_896, 2_879_896, 244_796), ("own_eia860", 89_687, 89_687, 89_687), ("plants_eia860", 200_210, 200_210, 200_210), ("pu_eia860", 199_332, 199_332, 199_332), From 77e052ea6223aebcd75eb4f9ecba62b4404c6b45 Mon Sep 17 00:00:00 2001 From: Austen Sharpe Date: Mon, 16 Oct 2023 16:11:31 -0300 Subject: [PATCH 05/44] Tweak the way we add data maturity to the eia923 monthly files and remove double returns from the drop_ytd_for_annual_tables function --- src/pudl/extract/excel.py | 22 ++++++++++------------ src/pudl/output/eia923.py | 5 ++--- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/pudl/extract/excel.py b/src/pudl/extract/excel.py index 0d64d39723..519448cd64 100644 --- a/src/pudl/extract/excel.py +++ b/src/pudl/extract/excel.py @@ -192,21 +192,19 @@ def add_data_maturity(self, df: pd.DataFrame, page, **partition) -> pd.DataFrame ``self.cols_added``. """ maturity = "final" - if "early_release" in self.excel_filename(page, **partition).lower(): + file_name = self.excel_filename(page, **partition) + eia923_ytd_file_name_start = "EIA923_Schedules_2_3_4_5_M_" + if "early_release" in file_name.lower(): maturity = "provisional" elif self._dataset_name == "eia860m": maturity = "monthly_update" - elif self._dataset_name == "eia923": - # this conditional is a hacky way to get around the fact that the formatting - # for the file names didn't always look like "EIA923_Schedules_2_3_4_5_M_" - # But, because we only want YTD data, it's fine to set a year floor. - if partition["year"] > 2022: - release_month = re.search( - r"EIA923_Schedules_2_3_4_5_M_(\d{2})", - self.excel_filename(page, **partition), - ).group(1) - if release_month != "12": - maturity = "incremental_ytd" + elif eia923_ytd_file_name_start in file_name: + release_month = re.search( + r"eia923_ytd_file_name_start(\d{2})", + file_name, + ).group(1) + if release_month != "12": + maturity = "incremental_ytd" df = df.assign(data_maturity=maturity) self.cols_added.append("data_maturity") return df diff --git a/src/pudl/output/eia923.py b/src/pudl/output/eia923.py index dd4e97ad22..befdc30869 100644 --- a/src/pudl/output/eia923.py +++ b/src/pudl/output/eia923.py @@ -145,9 +145,8 @@ def drop_ytd_for_annual_tables(df: pd.DataFrame, freq: str) -> pd.DataFrame: "Removing rows where data_maturity is incremental_ytd to avoid " "aggregation errors." ) - return df.loc[df["data_maturity"] != "incremental_ytd"] - else: - return df + df = df.loc[df["data_maturity"] != "incremental_ytd"].copy() + return df ##################################################################################### From b50ea1d8b8fd5b15e888b8fdb0fea7047cb9e7fa Mon Sep 17 00:00:00 2001 From: Austen Sharpe Date: Wed, 25 Oct 2023 15:07:55 -0300 Subject: [PATCH 06/44] Litle updates: - Add a note about how the plants are getting dropped in the gen_eia923 output table and link to the issue. - Update the way we tell whether an EIA923 filing is monthly or annual based on feedback in the PR --- src/pudl/analysis/allocate_gen_fuel.py | 3 ++- src/pudl/extract/excel.py | 5 ++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pudl/analysis/allocate_gen_fuel.py b/src/pudl/analysis/allocate_gen_fuel.py index 116aec0611..8742ee8987 100644 --- a/src/pudl/analysis/allocate_gen_fuel.py +++ b/src/pudl/analysis/allocate_gen_fuel.py @@ -360,7 +360,8 @@ def allocate_gen_fuel_by_generator_energy_source( # Add any startup energy source codes to the list of energy source codes gens_at_freq = adjust_msw_energy_source_codes(gens_at_freq, gf, bf) gens_at_freq = add_missing_energy_source_codes_to_gens(gens_at_freq, gf, bf) - # do the association! + # do the association! --> this step is where a small no. of plants are dropped for + # an unknown reason. Investigate in issue #2978. gen_assoc = associate_generator_tables( gens=gens_at_freq, gf=gf, gen=gen, bf=bf, bga=bga ) diff --git a/src/pudl/extract/excel.py b/src/pudl/extract/excel.py index 9f4db15a88..7843798d69 100644 --- a/src/pudl/extract/excel.py +++ b/src/pudl/extract/excel.py @@ -202,14 +202,13 @@ def add_data_maturity(self, df: pd.DataFrame, page, **partition) -> pd.DataFrame """ maturity = "final" file_name = self.excel_filename(page, **partition) - eia923_ytd_file_name_start = "EIA923_Schedules_2_3_4_5_M_" if "early_release" in file_name.lower(): maturity = "provisional" elif self._dataset_name == "eia860m": maturity = "monthly_update" - elif eia923_ytd_file_name_start in file_name: + elif "EIA923_Schedules_2_3_4_5_M_" in file_name: release_month = re.search( - r"eia923_ytd_file_name_start(\d{2})", + r"EIA923_Schedules_2_3_4_5_M_(\d{2})", file_name, ).group(1) if release_month != "12": From 572147c737a0ebb6c4cdc3b86ccbe5626109af78 Mon Sep 17 00:00:00 2001 From: Austen Sharpe Date: Wed, 25 Oct 2023 15:09:54 -0300 Subject: [PATCH 07/44] For now, comment out the checks that make sure we have the same years of EIA923 and EIA860 data. This is causing issues for the monthly EIA923 data that gets integrated ahead of any available 860 data. This might cause issues elsewhere which is why I haven't committed to fully deleting it yet. --- test/unit/settings_test.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/test/unit/settings_test.py b/test/unit/settings_test.py index 9d4eacba6c..8eb3c093e2 100644 --- a/test/unit/settings_test.py +++ b/test/unit/settings_test.py @@ -10,7 +10,6 @@ from pudl.settings import ( DatasetsSettings, Eia860Settings, - Eia923Settings, EiaSettings, EpaCemsSettings, Ferc1DbfToSqliteSettings, @@ -133,21 +132,21 @@ def test_860m(self): class TestEiaSettings: """Test pydantic model that validates EIA datasets.""" - def test_eia923_dependency(self): - """Test 860 is added if 923 is specified and 860 is not.""" - eia923_settings = Eia923Settings() - settings = EiaSettings(eia923=eia923_settings) - data_source = DataSource.from_id("eia860") + # def test_eia923_dependency(self): + # """Test 860 is added if 923 is specified and 860 is not.""" + # eia923_settings = Eia923Settings() + # settings = EiaSettings(eia923=eia923_settings) + # data_source = DataSource.from_id("eia860") - assert settings.eia860 + # assert settings.eia860 - assert settings.eia860.years == data_source.working_partitions["years"] + # assert settings.eia860.years == data_source.working_partitions["years"] - def test_eia860_dependency(self): - """Test 923 tables are added to eia860 if 923 is not specified.""" - eia860_settings = Eia860Settings() - settings = EiaSettings(eia860=eia860_settings) - assert settings.eia923.years == eia860_settings.years + # def test_eia860_dependency(self): + # """Test 923 tables are added to eia860 if 923 is not specified.""" + # eia860_settings = Eia860Settings() + # settings = EiaSettings(eia860=eia860_settings) + # assert settings.eia923.years == eia860_settings.years class TestDatasetsSettings: From aa42b2889b763080084fa5c62553670b9ef832d9 Mon Sep 17 00:00:00 2001 From: Austen Sharpe Date: Wed, 25 Oct 2023 16:12:34 -0300 Subject: [PATCH 08/44] Update min max rows --- test/validate/eia_test.py | 4 ++-- test/validate/mcoe_test.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/validate/eia_test.py b/test/validate/eia_test.py index 0729f40f40..467bb5b37c 100644 --- a/test/validate/eia_test.py +++ b/test/validate/eia_test.py @@ -45,11 +45,11 @@ def test_no_null_cols_eia(pudl_out_eia, live_dbs, cols, df_name): @pytest.mark.parametrize( "df_name,raw_rows,monthly_rows,annual_rows", [ - ("bf_eia923", 1_559_257, 1_559_257, 133_754), + ("bf_eia923", 1_559_257, 1_559_257, 127_412), ("bga_eia860", 141_638, 141_638, 141_638), ("boil_eia860", 83_354, 83_354, 83_354), ("frc_eia923", 639_647, 261_583, 25_370), - ("gen_eia923", None, 5_178_892, 433_286), + ("gen_eia923", None, 5_178_828, 433_286), ("gens_eia860", 556_586, 556_586, 556_586), ("gf_eia923", 2_879_896, 2_879_896, 244_796), ("own_eia860", 89_687, 89_687, 89_687), diff --git a/test/validate/mcoe_test.py b/test/validate/mcoe_test.py index 0e4d69e079..949b4914ea 100644 --- a/test/validate/mcoe_test.py +++ b/test/validate/mcoe_test.py @@ -109,8 +109,8 @@ def test_no_null_rows_mcoe(pudl_out_mcoe, live_dbs, df_name, thresh): ("hr_by_unit", 387_694, 32_416), ("hr_by_gen", 599_496, 50_070), ("fuel_cost", 599_496, 50_070), - ("capacity_factor", 5_178_892, 433_286), - ("mcoe", 5_179_300, 433_320), + ("capacity_factor", 5_178_892, 433_277), + ("mcoe", 5_179_300, 433_311), ], ) def test_minmax_rows_mcoe(pudl_out_mcoe, live_dbs, monthly_rows, annual_rows, df_name): From a588420e5fd4929e8b8de8d297b5ded8e2880465 Mon Sep 17 00:00:00 2001 From: Austen Sharpe Date: Wed, 25 Oct 2023 16:15:12 -0300 Subject: [PATCH 09/44] Add data_maturity field to harvested EIA tables so that we can drop ytd records from annual EIA tables --- src/pudl/extract/eia923.py | 4 ++++ src/pudl/metadata/resources/eia.py | 1 + src/pudl/metadata/resources/eia860.py | 1 - src/pudl/metadata/resources/eia923.py | 10 ++++++++++ src/pudl/output/eia.py | 9 ++++++--- src/pudl/output/eia923.py | 17 +++++++++++------ src/pudl/transform/eia.py | 1 - src/pudl/transform/eia923.py | 2 +- 8 files changed, 33 insertions(+), 12 deletions(-) diff --git a/src/pudl/extract/eia923.py b/src/pudl/extract/eia923.py index 680be141de..87a6c9413f 100644 --- a/src/pudl/extract/eia923.py +++ b/src/pudl/extract/eia923.py @@ -49,6 +49,10 @@ def process_raw(self, df, page, **partition): if col in df.columns: df = remove_leading_zeros_from_numeric_strings(df=df, col_name=col) df = self.add_data_maturity(df, page, **partition) + # Fill in blank reporting_frequency_code for monthly data + df.loc[ + df["data_maturity"] == "incremental_ytd", "reporting_frequency_code" + ] = "M" # the 2021 early release data had some ding dang "."'s and nulls in the year column if "report_year" in df.columns: mask = (df.report_year == ".") | df.report_year.isnull() diff --git a/src/pudl/metadata/resources/eia.py b/src/pudl/metadata/resources/eia.py index bded00c9e1..db59550bcb 100644 --- a/src/pudl/metadata/resources/eia.py +++ b/src/pudl/metadata/resources/eia.py @@ -788,6 +788,7 @@ "utility_id_eia", "utility_name_eia", "utility_id_pudl", + "data_maturity", ], "primary_key": ["report_date", "plant_id_eia", "utility_id_eia"], }, diff --git a/src/pudl/metadata/resources/eia860.py b/src/pudl/metadata/resources/eia860.py index 22ec9424c6..0fe7770a4e 100644 --- a/src/pudl/metadata/resources/eia860.py +++ b/src/pudl/metadata/resources/eia860.py @@ -134,7 +134,6 @@ "boiler_generator_assn_type_code", "steam_plant_type_code", "bga_source", - "data_maturity", ], "primary_key": ["plant_id_eia", "report_date", "generator_id", "boiler_id"], }, diff --git a/src/pudl/metadata/resources/eia923.py b/src/pudl/metadata/resources/eia923.py index 8e7c5b1219..b83ba367e4 100644 --- a/src/pudl/metadata/resources/eia923.py +++ b/src/pudl/metadata/resources/eia923.py @@ -122,6 +122,7 @@ "fuel_mmbtu_per_unit", "sulfur_content_pct", "ash_content_pct", + "data_maturity", # No data_maturity field # see: https://github.com/catalyst-cooperative/pudl/issues/1847 ], @@ -158,6 +159,7 @@ "fuel_consumed_mmbtu", "sulfur_content_pct", "ash_content_pct", + "data_maturity", # No data_maturity field # see: https://github.com/catalyst-cooperative/pudl/issues/1847 ], @@ -194,6 +196,7 @@ "fuel_consumed_mmbtu", "sulfur_content_pct", "ash_content_pct", + "data_maturity" # No data_maturity field # see: https://github.com/catalyst-cooperative/pudl/issues/1847 ], @@ -230,6 +233,7 @@ "fuel_consumed_mmbtu", "sulfur_content_pct", "ash_content_pct", + "data_maturity", # No data_maturity field # see: https://github.com/catalyst-cooperative/pudl/issues/1847 ], @@ -382,6 +386,7 @@ "mercury_content_ppm", "moisture_content_pct", "chlorine_content_ppm", + "data_maturity", ], }, "field_namespace": "eia", @@ -412,6 +417,7 @@ "mercury_content_ppm", "moisture_content_pct", "chlorine_content_ppm", + "data_maturity", ], }, "field_namespace": "eia", @@ -470,6 +476,7 @@ "generator_id", "unit_id_pudl", "net_generation_mwh", + "data_maturity", ], "primary_key": ["plant_id_eia", "generator_id", "report_date"], }, @@ -491,6 +498,7 @@ "generator_id", "unit_id_pudl", "net_generation_mwh", + "data_maturity", ], "primary_key": ["plant_id_eia", "generator_id", "report_date"], }, @@ -581,6 +589,7 @@ "fuel_consumed_mmbtu", "fuel_consumed_for_electricity_mmbtu", "net_generation_mwh", + "data_maturity", ], "primary_key": [ "plant_id_eia", @@ -613,6 +622,7 @@ "fuel_consumed_mmbtu", "fuel_consumed_for_electricity_mmbtu", "net_generation_mwh", + "data_maturity", ], "primary_key": [ "plant_id_eia", diff --git a/src/pudl/output/eia.py b/src/pudl/output/eia.py index 2641dca3c9..8c8f9d9396 100644 --- a/src/pudl/output/eia.py +++ b/src/pudl/output/eia.py @@ -137,7 +137,7 @@ def denorm_generators_eia( # Bring in some generic plant & utility information: pu_eia = denorm_plants_utilities_eia.drop( - ["plant_name_eia", "utility_id_eia"], axis="columns" + ["plant_name_eia", "utility_id_eia", "data_maturity"], axis="columns" ) out_df = pd.merge(out_df, pu_eia, on=["report_date", "plant_id_eia"], how="left") @@ -242,7 +242,9 @@ def denorm_boilers_eia( # Bring in some generic plant & utility information: out_df = pd.merge( out_df, - denorm_plants_utilities_eia.drop(["plant_name_eia"], axis="columns"), + denorm_plants_utilities_eia.drop( + ["plant_name_eia", "data_maturity"], axis="columns" + ), on=["report_date", "plant_id_eia"], how="left", ) @@ -324,7 +326,7 @@ def denorm_plants_utilities_eia( # to avoid duplicate columns on the merge... out_df = pd.merge( plants_eia, - denorm_utilities_eia, + denorm_utilities_eia.drop(columns=["data_maturity"]), how="left", on=["report_date", "utility_id_eia"], ) @@ -339,6 +341,7 @@ def denorm_plants_utilities_eia( "utility_id_eia", "utility_name_eia", "utility_id_pudl", + "data_maturity", ], ].dropna(subset=["report_date", "plant_id_eia", "utility_id_eia"]) return out_df diff --git a/src/pudl/output/eia923.py b/src/pudl/output/eia923.py index befdc30869..93b357af55 100644 --- a/src/pudl/output/eia923.py +++ b/src/pudl/output/eia923.py @@ -10,7 +10,6 @@ logger = pudl.logging_helpers.get_logger(__name__) - FIRST_COLS = [ "report_date", "plant_id_eia", @@ -19,6 +18,7 @@ "utility_id_eia", "utility_id_pudl", "utility_name_eia", + "data_maturity", ] @@ -161,7 +161,7 @@ def denorm_generation_eia923( """Denormalize the :ref:`generation_eia923` table.""" return denorm_by_gen( generation_eia923, - pu=denorm_plants_utilities_eia, + pu=denorm_plants_utilities_eia.drop(columns=["data_maturity"]), bga=boiler_generator_assn_eia860, ) @@ -235,7 +235,9 @@ def denorm_generation_fuel_combined_eia923( .sort_values(primary_key) .reset_index(drop=True) ) - return denorm_by_plant(gf, pu=denorm_plants_utilities_eia) + return denorm_by_plant( + gf, pu=denorm_plants_utilities_eia.drop(columns=["data_maturity"]) + ) @asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python") @@ -253,11 +255,12 @@ def denorm_boiler_fuel_eia923( boiler_fuel_eia923["fuel_consumed_units"] * boiler_fuel_eia923["fuel_mmbtu_per_unit"] ) - return denorm_by_boil( + dd = denorm_by_boil( boiler_fuel_eia923, - pu=denorm_plants_utilities_eia, + pu=denorm_plants_utilities_eia.drop(columns=["data_maturity"]), bga=boiler_generator_assn_eia860, ) + return dd @asset( @@ -333,7 +336,9 @@ def denorm_fuel_receipts_costs_eia923( frc_df["fuel_consumed_mmbtu"] * frc_df["fuel_cost_per_mmbtu"] ) - return denorm_by_plant(frc_df, pu=denorm_plants_utilities_eia) + return denorm_by_plant( + frc_df, pu=denorm_plants_utilities_eia.drop(columns=["data_maturity"]) + ) ##################################################################################### diff --git a/src/pudl/transform/eia.py b/src/pudl/transform/eia.py index c2ee33a516..80ab4660a4 100644 --- a/src/pudl/transform/eia.py +++ b/src/pudl/transform/eia.py @@ -799,7 +799,6 @@ def boiler_generator_assn_eia860(context, **clean_dfs) -> pd.DataFrame: # noqa: "steam_plant_type_code", "net_generation_mwh", "missing_from_923", - "data_maturity", ] ] diff --git a/src/pudl/transform/eia923.py b/src/pudl/transform/eia923.py index b8803d37fe..5a4672a39d 100644 --- a/src/pudl/transform/eia923.py +++ b/src/pudl/transform/eia923.py @@ -852,7 +852,7 @@ def _core_eia923__boiler_fuel(raw_eia923__boiler_fuel: pd.DataFrame) -> pd.DataF "balancing_authority_code_eia", "early_release", "reporting_frequency_code", - "data_maturity", + # "data_maturity", ] bf_df = bf_df.drop(cols_to_drop, axis=1) From 1d267ab6dcfcdd95269c1e233aafc9128184d3e0 Mon Sep 17 00:00:00 2001 From: Austen Sharpe Date: Fri, 27 Oct 2023 20:46:00 -0300 Subject: [PATCH 10/44] Address PR comments: - Restructure the way that the data_maturity field is dropped from certain tables when merging multiple tables together that each have that field. Previously it was ad-hoc, now it just gets dropped in the denorm_by_plant function. - This also entails changing how the data_maturity field gets passed through to the agg tables: adds the data_maturity field to the agg function, selecting the 'first' instance of the data_maturity per agg because the fields are aggregated by date which is how data_maturity is determined. The annual aggregations drop the ytd rows before the aggregation happens so taking the first data_maturity value per year works in this case. - Remove some comment fields - Add new migration --- ...d34_add_data_maturity_to_eia923m_tables.py | 113 ++++++++++++++++++ src/pudl/metadata/resources/eia860.py | 1 + src/pudl/metadata/resources/eia923.py | 10 +- src/pudl/output/eia923.py | 21 ++-- src/pudl/transform/eia.py | 1 + 5 files changed, 125 insertions(+), 21 deletions(-) create mode 100644 migrations/versions/1ceb9897fd34_add_data_maturity_to_eia923m_tables.py diff --git a/migrations/versions/1ceb9897fd34_add_data_maturity_to_eia923m_tables.py b/migrations/versions/1ceb9897fd34_add_data_maturity_to_eia923m_tables.py new file mode 100644 index 0000000000..ec582b8c97 --- /dev/null +++ b/migrations/versions/1ceb9897fd34_add_data_maturity_to_eia923m_tables.py @@ -0,0 +1,113 @@ +"""add data_maturity to eia923m tables + +Revision ID: 1ceb9897fd34 +Revises: f11241c9292d +Create Date: 2023-10-26 16:30:33.771381 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = '1ceb9897fd34' +down_revision = 'f11241c9292d' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('boiler_fuel_eia923', schema=None) as batch_op: + batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.')) + batch_op.create_foreign_key(batch_op.f('fk_boiler_fuel_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code']) + + with op.batch_alter_table('denorm_boiler_fuel_eia923', schema=None) as batch_op: + batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.')) + batch_op.create_foreign_key(batch_op.f('fk_denorm_boiler_fuel_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code']) + + with op.batch_alter_table('denorm_boiler_fuel_monthly_eia923', schema=None) as batch_op: + batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.')) + batch_op.create_foreign_key(batch_op.f('fk_denorm_boiler_fuel_monthly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code']) + + with op.batch_alter_table('denorm_boiler_fuel_yearly_eia923', schema=None) as batch_op: + batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.')) + batch_op.create_foreign_key(batch_op.f('fk_denorm_boiler_fuel_yearly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code']) + + with op.batch_alter_table('denorm_fuel_receipts_costs_monthly_eia923', schema=None) as batch_op: + batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.')) + batch_op.create_foreign_key(batch_op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code']) + + with op.batch_alter_table('denorm_fuel_receipts_costs_yearly_eia923', schema=None) as batch_op: + batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.')) + batch_op.create_foreign_key(batch_op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code']) + + with op.batch_alter_table('denorm_generation_fuel_combined_monthly_eia923', schema=None) as batch_op: + batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.')) + batch_op.create_foreign_key(batch_op.f('fk_denorm_generation_fuel_combined_monthly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code']) + + with op.batch_alter_table('denorm_generation_fuel_combined_yearly_eia923', schema=None) as batch_op: + batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.')) + batch_op.create_foreign_key(batch_op.f('fk_denorm_generation_fuel_combined_yearly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code']) + + with op.batch_alter_table('denorm_generation_monthly_eia923', schema=None) as batch_op: + batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.')) + batch_op.create_foreign_key(batch_op.f('fk_denorm_generation_monthly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code']) + + with op.batch_alter_table('denorm_generation_yearly_eia923', schema=None) as batch_op: + batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.')) + batch_op.create_foreign_key(batch_op.f('fk_denorm_generation_yearly_eia923_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code']) + + with op.batch_alter_table('denorm_plants_utilities_eia', schema=None) as batch_op: + batch_op.add_column(sa.Column('data_maturity', sa.Text(), nullable=True, comment='Level of maturity of the data record. Some data sources report less-than-final data. PUDL sometimes includes this data, but use at your own risk.')) + batch_op.create_foreign_key(batch_op.f('fk_denorm_plants_utilities_eia_data_maturity_data_maturities'), 'data_maturities', ['data_maturity'], ['code']) + + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('denorm_plants_utilities_eia', schema=None) as batch_op: + batch_op.drop_constraint(batch_op.f('fk_denorm_plants_utilities_eia_data_maturity_data_maturities'), type_='foreignkey') + batch_op.drop_column('data_maturity') + + with op.batch_alter_table('denorm_generation_yearly_eia923', schema=None) as batch_op: + batch_op.drop_constraint(batch_op.f('fk_denorm_generation_yearly_eia923_data_maturity_data_maturities'), type_='foreignkey') + batch_op.drop_column('data_maturity') + + with op.batch_alter_table('denorm_generation_monthly_eia923', schema=None) as batch_op: + batch_op.drop_constraint(batch_op.f('fk_denorm_generation_monthly_eia923_data_maturity_data_maturities'), type_='foreignkey') + batch_op.drop_column('data_maturity') + + with op.batch_alter_table('denorm_generation_fuel_combined_yearly_eia923', schema=None) as batch_op: + batch_op.drop_constraint(batch_op.f('fk_denorm_generation_fuel_combined_yearly_eia923_data_maturity_data_maturities'), type_='foreignkey') + batch_op.drop_column('data_maturity') + + with op.batch_alter_table('denorm_generation_fuel_combined_monthly_eia923', schema=None) as batch_op: + batch_op.drop_constraint(batch_op.f('fk_denorm_generation_fuel_combined_monthly_eia923_data_maturity_data_maturities'), type_='foreignkey') + batch_op.drop_column('data_maturity') + + with op.batch_alter_table('denorm_fuel_receipts_costs_yearly_eia923', schema=None) as batch_op: + batch_op.drop_constraint(batch_op.f('fk_denorm_fuel_receipts_costs_yearly_eia923_data_maturity_data_maturities'), type_='foreignkey') + batch_op.drop_column('data_maturity') + + with op.batch_alter_table('denorm_fuel_receipts_costs_monthly_eia923', schema=None) as batch_op: + batch_op.drop_constraint(batch_op.f('fk_denorm_fuel_receipts_costs_monthly_eia923_data_maturity_data_maturities'), type_='foreignkey') + batch_op.drop_column('data_maturity') + + with op.batch_alter_table('denorm_boiler_fuel_yearly_eia923', schema=None) as batch_op: + batch_op.drop_constraint(batch_op.f('fk_denorm_boiler_fuel_yearly_eia923_data_maturity_data_maturities'), type_='foreignkey') + batch_op.drop_column('data_maturity') + + with op.batch_alter_table('denorm_boiler_fuel_monthly_eia923', schema=None) as batch_op: + batch_op.drop_constraint(batch_op.f('fk_denorm_boiler_fuel_monthly_eia923_data_maturity_data_maturities'), type_='foreignkey') + batch_op.drop_column('data_maturity') + + with op.batch_alter_table('denorm_boiler_fuel_eia923', schema=None) as batch_op: + batch_op.drop_constraint(batch_op.f('fk_denorm_boiler_fuel_eia923_data_maturity_data_maturities'), type_='foreignkey') + batch_op.drop_column('data_maturity') + + with op.batch_alter_table('boiler_fuel_eia923', schema=None) as batch_op: + batch_op.drop_constraint(batch_op.f('fk_boiler_fuel_eia923_data_maturity_data_maturities'), type_='foreignkey') + batch_op.drop_column('data_maturity') + + # ### end Alembic commands ### diff --git a/src/pudl/metadata/resources/eia860.py b/src/pudl/metadata/resources/eia860.py index 0fe7770a4e..22ec9424c6 100644 --- a/src/pudl/metadata/resources/eia860.py +++ b/src/pudl/metadata/resources/eia860.py @@ -134,6 +134,7 @@ "boiler_generator_assn_type_code", "steam_plant_type_code", "bga_source", + "data_maturity", ], "primary_key": ["plant_id_eia", "report_date", "generator_id", "boiler_id"], }, diff --git a/src/pudl/metadata/resources/eia923.py b/src/pudl/metadata/resources/eia923.py index b83ba367e4..f79bd60360 100644 --- a/src/pudl/metadata/resources/eia923.py +++ b/src/pudl/metadata/resources/eia923.py @@ -123,8 +123,6 @@ "sulfur_content_pct", "ash_content_pct", "data_maturity", - # No data_maturity field - # see: https://github.com/catalyst-cooperative/pudl/issues/1847 ], "primary_key": [ "plant_id_eia", @@ -160,8 +158,6 @@ "sulfur_content_pct", "ash_content_pct", "data_maturity", - # No data_maturity field - # see: https://github.com/catalyst-cooperative/pudl/issues/1847 ], "primary_key": [ "plant_id_eia", @@ -196,9 +192,7 @@ "fuel_consumed_mmbtu", "sulfur_content_pct", "ash_content_pct", - "data_maturity" - # No data_maturity field - # see: https://github.com/catalyst-cooperative/pudl/issues/1847 + "data_maturity", ], "primary_key": [ "plant_id_eia", @@ -234,8 +228,6 @@ "sulfur_content_pct", "ash_content_pct", "data_maturity", - # No data_maturity field - # see: https://github.com/catalyst-cooperative/pudl/issues/1847 ], "primary_key": [ "plant_id_eia", diff --git a/src/pudl/output/eia923.py b/src/pudl/output/eia923.py index 93b357af55..2903c3100c 100644 --- a/src/pudl/output/eia923.py +++ b/src/pudl/output/eia923.py @@ -18,7 +18,6 @@ "utility_id_eia", "utility_id_pudl", "utility_name_eia", - "data_maturity", ] @@ -34,7 +33,7 @@ def denorm_by_plant( df = ( pudl.helpers.date_merge( left=df, - right=pu, + right=pu.drop(columns=["data_maturity"]), on=["plant_id_eia"], date_on=["year"], how="left", @@ -161,7 +160,7 @@ def denorm_generation_eia923( """Denormalize the :ref:`generation_eia923` table.""" return denorm_by_gen( generation_eia923, - pu=denorm_plants_utilities_eia.drop(columns=["data_maturity"]), + pu=denorm_plants_utilities_eia, bga=boiler_generator_assn_eia860, ) @@ -235,9 +234,7 @@ def denorm_generation_fuel_combined_eia923( .sort_values(primary_key) .reset_index(drop=True) ) - return denorm_by_plant( - gf, pu=denorm_plants_utilities_eia.drop(columns=["data_maturity"]) - ) + return denorm_by_plant(gf, pu=denorm_plants_utilities_eia) @asset(io_manager_key="pudl_sqlite_io_manager", compute_kind="Python") @@ -257,7 +254,7 @@ def denorm_boiler_fuel_eia923( ) dd = denorm_by_boil( boiler_fuel_eia923, - pu=denorm_plants_utilities_eia.drop(columns=["data_maturity"]), + pu=denorm_plants_utilities_eia, bga=boiler_generator_assn_eia860, ) return dd @@ -335,10 +332,7 @@ def denorm_fuel_receipts_costs_eia923( frc_df["total_fuel_cost"] = ( frc_df["fuel_consumed_mmbtu"] * frc_df["fuel_cost_per_mmbtu"] ) - - return denorm_by_plant( - frc_df, pu=denorm_plants_utilities_eia.drop(columns=["data_maturity"]) - ) + return denorm_by_plant(frc_df, pu=denorm_plants_utilities_eia) ##################################################################################### @@ -372,7 +366,7 @@ def generation_agg_eia923( by=["plant_id_eia", "generator_id", pd.Grouper(freq=freq)], observed=True, ) - .agg({"net_generation_mwh": pudl.helpers.sum_na}) + .agg({"net_generation_mwh": pudl.helpers.sum_na, "data_maturity": "first"}) .reset_index() .pipe( denorm_by_gen, @@ -415,6 +409,7 @@ def generation_fuel_combined_agg_eia923( "fuel_consumed_mmbtu": pudl.helpers.sum_na, "fuel_consumed_for_electricity_mmbtu": pudl.helpers.sum_na, "net_generation_mwh": pudl.helpers.sum_na, + "data_maturity": "first", } ) ).reset_index() @@ -489,6 +484,7 @@ def boiler_fuel_agg_eia923( "fuel_consumed_units": pudl.helpers.sum_na, "total_sulfur_content": pudl.helpers.sum_na, "total_ash_content": pudl.helpers.sum_na, + "data_maturity": "first", } ) .assign( @@ -549,6 +545,7 @@ def fuel_receipts_costs_agg_eia923( "total_chlorine_content": pudl.helpers.sum_na, "fuel_cost_from_eiaapi": "any", "state": "first", + "data_maturity": "first", } ) .assign( diff --git a/src/pudl/transform/eia.py b/src/pudl/transform/eia.py index 80ab4660a4..c2ee33a516 100644 --- a/src/pudl/transform/eia.py +++ b/src/pudl/transform/eia.py @@ -799,6 +799,7 @@ def boiler_generator_assn_eia860(context, **clean_dfs) -> pd.DataFrame: # noqa: "steam_plant_type_code", "net_generation_mwh", "missing_from_923", + "data_maturity", ] ] From b3c11c28dbbe6a09e79df5b8253f2558795589e7 Mon Sep 17 00:00:00 2001 From: Austen Sharpe Date: Mon, 30 Oct 2023 14:41:20 -0300 Subject: [PATCH 11/44] Fix release note trailing whitespace error --- docs/release_notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 2828186262..d9cc622e1e 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -71,7 +71,7 @@ Data Coverage ^^^^^^^^^^^^^ * Updated :doc:`data_sources/eia860` to include early release data from 2022. -* Updated :doc:`data_sources/eia923` to include early release data from 2022 and +* Updated :doc:`data_sources/eia923` to include early release data from 2022 and monthly YTD data as of April 2023. * Updated :doc:`data_sources/epacems` to switch from the old FTP server to the new CAMPD API, and to include 2022 data. Due to changes in the ETL, Alaska, Puerto Rico From 3b35892e0ebe9c96a6b1018c0761c9a343712f2a Mon Sep 17 00:00:00 2001 From: Austen Sharpe Date: Mon, 30 Oct 2023 14:58:00 -0300 Subject: [PATCH 12/44] Update test_eia923_dependency function to make sure some 860 and 923 years overlap but don't need to be the same --- test/unit/settings_test.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/test/unit/settings_test.py b/test/unit/settings_test.py index 8eb3c093e2..9b219e04a7 100644 --- a/test/unit/settings_test.py +++ b/test/unit/settings_test.py @@ -132,21 +132,18 @@ def test_860m(self): class TestEiaSettings: """Test pydantic model that validates EIA datasets.""" - # def test_eia923_dependency(self): - # """Test 860 is added if 923 is specified and 860 is not.""" - # eia923_settings = Eia923Settings() - # settings = EiaSettings(eia923=eia923_settings) - # data_source = DataSource.from_id("eia860") - - # assert settings.eia860 - - # assert settings.eia860.years == data_source.working_partitions["years"] - - # def test_eia860_dependency(self): - # """Test 923 tables are added to eia860 if 923 is not specified.""" - # eia860_settings = Eia860Settings() - # settings = EiaSettings(eia860=eia860_settings) - # assert settings.eia923.years == eia860_settings.years + def test_eia923_dependency(self): + """Test that there is some overlap between EIA860 and EIA923 data.""" + settings = EiaSettings() + data_source = DataSource.from_id("eia860") + assert settings.eia860 + # assign both EIA form years + eia860_years = settings.eia860.years + eia923_years_partition = data_source.working_partitions["years"] + eia923_years_settings = settings.eia923.years + # assert that there is some overlap between EIA years + assert not set(eia860_years).isdisjoint(eia923_years_partition) + assert not set(eia860_years).isdisjoint(eia923_years_settings) class TestDatasetsSettings: From 47304b388930b864397b4d67f6fdef4824db0624 Mon Sep 17 00:00:00 2001 From: Dazhong Xia Date: Tue, 31 Oct 2023 11:21:10 -0400 Subject: [PATCH 13/44] Only generate alphanumeric entity IDs in test - non-printable characters seem to break groupby. (#2993) --- test/unit/io_managers_test.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/test/unit/io_managers_test.py b/test/unit/io_managers_test.py index 29003400e5..a4ba43efc2 100644 --- a/test/unit/io_managers_test.py +++ b/test/unit/io_managers_test.py @@ -353,7 +353,9 @@ def test_ferc_xbrl_sqlite_io_manager_dedupes(mocker, tmp_path): example_schema = pandera.DataFrameSchema( { - "entity_id": pandera.Column(str, nullable=False), + "entity_id": pandera.Column( + str, pandera.Check.str_matches(r"[0-9a-zA-Z]+"), nullable=False + ), "date": pandera.Column("datetime64[ns]", nullable=False), "utility_type": pandera.Column( str, @@ -368,7 +370,6 @@ def test_ferc_xbrl_sqlite_io_manager_dedupes(mocker, tmp_path): ) -@pytest.mark.xfail @hypothesis.given(example_schema.strategy(size=3)) def test_filter_for_freshest_data(df): # XBRL context is the identifying metadata for reported values @@ -382,7 +383,7 @@ def test_filter_for_freshest_data(df): # every post-deduplication row exists in the original rows assert (deduped.merge(df, how="left", indicator=True)._merge != "left_only").all() - # for every [entity_id, utility_type, date] - th"true"e is only one row + # for every [entity_id, utility_type, date] - there is only one row assert (~deduped.duplicated(subset=xbrl_context_cols)).all() # for every *context* in the input there is a corresponding row in the output original_contexts = df.groupby(xbrl_context_cols, as_index=False).last() @@ -393,7 +394,9 @@ def test_filter_for_freshest_data(df): suffixes=["_in", "_out"], indicator=True, ).set_index(xbrl_context_cols) - hypothesis.note(f"Found these contexts in input data:\n{original_contexts}") + hypothesis.note( + f"Found these contexts ({xbrl_context_cols}) in input data:\n{original_contexts[xbrl_context_cols]}" + ) hypothesis.note(f"The freshest data:\n{deduped}") hypothesis.note(f"Paired by context:\n{paired_by_context}") assert (paired_by_context._merge == "both").all() From dfea5efa8e0ebdad6201ce0528436dee796b4d14 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Tue, 31 Oct 2023 14:28:49 -0800 Subject: [PATCH 14/44] Set up Cloud SQL postgres database for dagster storage --- .github/workflows/build-deploy-pudl.yml | 5 +++++ docker/Dockerfile | 3 +++ docker/dagster.yaml | 12 ++++++++++++ pyproject.toml | 1 + 4 files changed, 21 insertions(+) create mode 100644 docker/dagster.yaml diff --git a/.github/workflows/build-deploy-pudl.yml b/.github/workflows/build-deploy-pudl.yml index 6bdf750377..6ee5eef20d 100644 --- a/.github/workflows/build-deploy-pudl.yml +++ b/.github/workflows/build-deploy-pudl.yml @@ -110,6 +110,11 @@ jobs: --container-env AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }} \ --container-env AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }} \ --container-env AWS_DEFAULT_REGION=${{ secrets.AWS_DEFAULT_REGION }} \ + --container-env DAGSTER_PG_USERNAME="postgres" \ + --container-env DAGSTER_PG_PASSWORD=${{ secrets.DAGSTER_PG_PASSWORD }} \ + --container-env DAGSTER_PG_HOST="104.154.182.24" \ + --container-env DAGSTER_PG_DB="dagster-storage" \ + --container-env PUDL_SETTINGS_YML=/home/catalyst/src/pudl/package_data/settings/etl_fast.yml \ # Start the VM - name: Start the deploy-pudl-vm diff --git a/docker/Dockerfile b/docker/Dockerfile index 39ac1c5818..5fe7bd4739 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -34,6 +34,9 @@ ENV PUDL_INPUT=${CONTAINER_PUDL_WORKSPACE}/data ENV PUDL_OUTPUT=${CONTAINER_PUDL_WORKSPACE}/output ENV DAGSTER_HOME=${CONTAINER_PUDL_WORKSPACE}/dagster_home +# Copy dagster configuration file +COPY docker/dagster.yaml ${DAGSTER_HOME}/dagster.yaml + # Create data input/output directories RUN mkdir -p ${PUDL_INPUT} ${PUDL_OUTPUT} ${DAGSTER_HOME} diff --git a/docker/dagster.yaml b/docker/dagster.yaml new file mode 100644 index 0000000000..f9031e6945 --- /dev/null +++ b/docker/dagster.yaml @@ -0,0 +1,12 @@ +storage: + postgres: + postgres_db: + username: + env: DAGSTER_PG_USERNAME + password: + env: DAGSTER_PG_PASSWORD + hostname: + env: DAGSTER_PG_HOST + db_name: + env: DAGSTER_PG_DB + port: 5432 diff --git a/pyproject.toml b/pyproject.toml index feabc5f463..0e07b01133 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,6 +21,7 @@ dependencies = [ "coloredlogs>=14.0,<15.1", # Dagster requires 14.0 "dagster-webserver>=1.4,<1.6", "dagster>=1.4,<1.6", + "dagster-postgres>=0.21.5,<0.21.6", "dask>=2022.5,<2023.10.2", "datapackage>=1.11,<1.16", # Transition datastore to use frictionless. "email-validator>=1.0.3", # pydantic[email] From 05901ab6a823b4ebf9fe572f352d87973867b83d Mon Sep 17 00:00:00 2001 From: bendnorman Date: Tue, 31 Oct 2023 14:38:26 -0800 Subject: [PATCH 15/44] Copy dagster.yaml after DAGSTER_HOME is created --- docker/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 5fe7bd4739..324bf79061 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -34,12 +34,12 @@ ENV PUDL_INPUT=${CONTAINER_PUDL_WORKSPACE}/data ENV PUDL_OUTPUT=${CONTAINER_PUDL_WORKSPACE}/output ENV DAGSTER_HOME=${CONTAINER_PUDL_WORKSPACE}/dagster_home -# Copy dagster configuration file -COPY docker/dagster.yaml ${DAGSTER_HOME}/dagster.yaml - # Create data input/output directories RUN mkdir -p ${PUDL_INPUT} ${PUDL_OUTPUT} ${DAGSTER_HOME} +# Copy dagster configuration file +COPY docker/dagster.yaml ${DAGSTER_HOME}/dagster.yaml + # Create a conda environment based on the specification in the repo COPY test/test-environment.yml test/test-environment.yml RUN mamba create --copy --prefix ${CONDA_PREFIX} --yes python=${PYTHON_VERSION} && \ From 02c52f6a087a57efb96505fa5e5d11b7594d062e Mon Sep 17 00:00:00 2001 From: bendnorman Date: Tue, 31 Oct 2023 15:45:30 -0800 Subject: [PATCH 16/44] Add proper quoting rules to DAGSTER_PG_PASSWORD secret --- .github/workflows/build-deploy-pudl.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-deploy-pudl.yml b/.github/workflows/build-deploy-pudl.yml index 6ee5eef20d..692ea77b52 100644 --- a/.github/workflows/build-deploy-pudl.yml +++ b/.github/workflows/build-deploy-pudl.yml @@ -85,6 +85,8 @@ jobs: # Deploy PUDL image to GCE - name: Deploy + env: + DAGSTER_PG_PASSWORD: ${{ secrets.DAGSTER_PG_PASSWORD }} run: |- gcloud compute instances add-metadata "$GCE_INSTANCE" \ --zone "$GCE_INSTANCE_ZONE" \ @@ -111,10 +113,10 @@ jobs: --container-env AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }} \ --container-env AWS_DEFAULT_REGION=${{ secrets.AWS_DEFAULT_REGION }} \ --container-env DAGSTER_PG_USERNAME="postgres" \ - --container-env DAGSTER_PG_PASSWORD=${{ secrets.DAGSTER_PG_PASSWORD }} \ + --container-env DAGSTER_PG_PASSWORD="$DAGSTER_PG_PASSWORD" \ --container-env DAGSTER_PG_HOST="104.154.182.24" \ --container-env DAGSTER_PG_DB="dagster-storage" \ - --container-env PUDL_SETTINGS_YML=/home/catalyst/src/pudl/package_data/settings/etl_fast.yml \ + --container-env PUDL_SETTINGS_YML="/home/catalyst/src/pudl/package_data/settings/etl_fast.yml" \ # Start the VM - name: Start the deploy-pudl-vm From dcfb8de3598c7f08eda774a5dc6585218166256a Mon Sep 17 00:00:00 2001 From: bendnorman Date: Tue, 31 Oct 2023 16:49:34 -0800 Subject: [PATCH 17/44] Use max cpus for nightly builds and spin dagster-storage SQL instance up and down --- docker/gcp_pudl_etl.sh | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docker/gcp_pudl_etl.sh b/docker/gcp_pudl_etl.sh index 2829576c9e..a96f91e98a 100644 --- a/docker/gcp_pudl_etl.sh +++ b/docker/gcp_pudl_etl.sh @@ -4,6 +4,12 @@ set -x +function setup_dagster_storage() { + # Start dagster-storage Cloud SQL instance + gcloud sql instances patch dagster-storage --activation-policy=ALWAYS + # create database +} + function send_slack_msg() { curl -X POST -H "Content-type: application/json" -H "Authorization: Bearer ${SLACK_TOKEN}" https://slack.com/api/chat.postMessage --data "{\"channel\": \"C03FHB9N0PQ\", \"text\": \"$1\"}" } @@ -21,6 +27,7 @@ function authenticate_gcp() { function run_pudl_etl() { send_slack_msg ":large_yellow_circle: Deployment started for $ACTION_SHA-$GITHUB_REF :floppy_disk:" authenticate_gcp \ + && setup_dagster_storage \ && alembic upgrade head \ && pudl_setup \ && ferc_to_sqlite \ @@ -30,7 +37,6 @@ function run_pudl_etl() { $PUDL_SETTINGS_YML \ && pudl_etl \ --loglevel DEBUG \ - --max-concurrent 6 \ --gcs-cache-path gs://internal-zenodo-cache.catalyst.coop \ $PUDL_SETTINGS_YML \ && pytest \ @@ -45,6 +51,10 @@ function shutdown_vm() { upload_file_to_slack $LOGFILE "pudl_etl logs for $ACTION_SHA-$GITHUB_REF:" + # Delete dagster-storage database + # Start dagster-storage Cloud SQL instance + gcloud sql instances patch dagster-storage --activation-policy=NEVER + echo "Shutting down VM." # # Shut down the vm instance when the etl is done. ACCESS_TOKEN=`curl \ From ad8442da35ec48939a0c2006081c64b7a5a0f53c Mon Sep 17 00:00:00 2001 From: bendnorman Date: Tue, 31 Oct 2023 17:14:55 -0800 Subject: [PATCH 18/44] Create and delete Cloud SQL db during nightly builds --- docker/gcp_pudl_etl.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docker/gcp_pudl_etl.sh b/docker/gcp_pudl_etl.sh index a96f91e98a..2bfb02c2aa 100644 --- a/docker/gcp_pudl_etl.sh +++ b/docker/gcp_pudl_etl.sh @@ -7,7 +7,8 @@ set -x function setup_dagster_storage() { # Start dagster-storage Cloud SQL instance gcloud sql instances patch dagster-storage --activation-policy=ALWAYS - # create database + # Create database + gcloud sql databases create dagster-storage --instance=dagster-storage } function send_slack_msg() { @@ -52,6 +53,7 @@ function shutdown_vm() { upload_file_to_slack $LOGFILE "pudl_etl logs for $ACTION_SHA-$GITHUB_REF:" # Delete dagster-storage database + gcloud sql databases delete dagster-storage --instance=dagster-storage # Start dagster-storage Cloud SQL instance gcloud sql instances patch dagster-storage --activation-policy=NEVER From ab9425a332060d67972c3fe649e15fabf5f1ae2a Mon Sep 17 00:00:00 2001 From: bendnorman Date: Tue, 31 Oct 2023 17:44:54 -0800 Subject: [PATCH 19/44] Set PUDL_SETTINGS_YML to etl_full.yml and add git sha to Cloud SQL database name --- .github/workflows/build-deploy-pudl.yml | 2 +- docker/gcp_pudl_etl.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-deploy-pudl.yml b/.github/workflows/build-deploy-pudl.yml index 692ea77b52..141dc76681 100644 --- a/.github/workflows/build-deploy-pudl.yml +++ b/.github/workflows/build-deploy-pudl.yml @@ -116,7 +116,7 @@ jobs: --container-env DAGSTER_PG_PASSWORD="$DAGSTER_PG_PASSWORD" \ --container-env DAGSTER_PG_HOST="104.154.182.24" \ --container-env DAGSTER_PG_DB="dagster-storage" \ - --container-env PUDL_SETTINGS_YML="/home/catalyst/src/pudl/package_data/settings/etl_fast.yml" \ + --container-env PUDL_SETTINGS_YML="/home/catalyst/src/pudl/package_data/settings/etl_full.yml" \ # Start the VM - name: Start the deploy-pudl-vm diff --git a/docker/gcp_pudl_etl.sh b/docker/gcp_pudl_etl.sh index 2bfb02c2aa..71f0db1bd0 100644 --- a/docker/gcp_pudl_etl.sh +++ b/docker/gcp_pudl_etl.sh @@ -8,7 +8,7 @@ function setup_dagster_storage() { # Start dagster-storage Cloud SQL instance gcloud sql instances patch dagster-storage --activation-policy=ALWAYS # Create database - gcloud sql databases create dagster-storage --instance=dagster-storage + gcloud sql databases create "dagster-storage-$ACTION_SHA-$GITHUB_REF" --instance=dagster-storage } function send_slack_msg() { @@ -53,7 +53,7 @@ function shutdown_vm() { upload_file_to_slack $LOGFILE "pudl_etl logs for $ACTION_SHA-$GITHUB_REF:" # Delete dagster-storage database - gcloud sql databases delete dagster-storage --instance=dagster-storage + gcloud sql databases delete "dagster-storage-$ACTION_SHA-$GITHUB_REF" --instance=dagster-storage # Start dagster-storage Cloud SQL instance gcloud sql instances patch dagster-storage --activation-policy=NEVER From 6592fad7a99ca9b42437632fee8139d01ab9bd03 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Tue, 31 Oct 2023 18:13:09 -0800 Subject: [PATCH 20/44] Add short github ref to database name --- docker/gcp_pudl_etl.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docker/gcp_pudl_etl.sh b/docker/gcp_pudl_etl.sh index 71f0db1bd0..722b245766 100644 --- a/docker/gcp_pudl_etl.sh +++ b/docker/gcp_pudl_etl.sh @@ -8,7 +8,7 @@ function setup_dagster_storage() { # Start dagster-storage Cloud SQL instance gcloud sql instances patch dagster-storage --activation-policy=ALWAYS # Create database - gcloud sql databases create "dagster-storage-$ACTION_SHA-$GITHUB_REF" --instance=dagster-storage + gcloud sql databases create "dagster-storage-$SHORT_GITHUB_REF" --instance=dagster-storage } function send_slack_msg() { @@ -53,7 +53,7 @@ function shutdown_vm() { upload_file_to_slack $LOGFILE "pudl_etl logs for $ACTION_SHA-$GITHUB_REF:" # Delete dagster-storage database - gcloud sql databases delete "dagster-storage-$ACTION_SHA-$GITHUB_REF" --instance=dagster-storage + gcloud sql databases delete "dagster-storage-$SHORT_GITHUB_REF" --instance=dagster-storage # Start dagster-storage Cloud SQL instance gcloud sql instances patch dagster-storage --activation-policy=NEVER @@ -94,6 +94,8 @@ function notify_slack() { send_slack_msg "$message" } +SHORT_GITHUB_REF=$(git rev-parse --short $GITHUB_REF) + # # Run ETL. Copy outputs to GCS and shutdown VM if ETL succeeds or fails # 2>&1 redirects stderr to stdout. run_pudl_etl 2>&1 | tee $LOGFILE From 2f853158e618533fcd634ea12d25c67aa1efb762 Mon Sep 17 00:00:00 2001 From: bendnorman Date: Tue, 31 Oct 2023 18:54:15 -0800 Subject: [PATCH 21/44] Update DAGSTER_PG_DB with short git sha --- docker/gcp_pudl_etl.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docker/gcp_pudl_etl.sh b/docker/gcp_pudl_etl.sh index 722b245766..411c8b888c 100644 --- a/docker/gcp_pudl_etl.sh +++ b/docker/gcp_pudl_etl.sh @@ -5,10 +5,13 @@ set -x function setup_dagster_storage() { + SHORT_GITHUB_REF=$(git rev-parse --short $GITHUB_REF) + export DAGSTER_PG_DB="dagster-storage-$SHORT_GITHUB_REF" + # Start dagster-storage Cloud SQL instance gcloud sql instances patch dagster-storage --activation-policy=ALWAYS # Create database - gcloud sql databases create "dagster-storage-$SHORT_GITHUB_REF" --instance=dagster-storage + gcloud sql databases create $DAGSTER_PG_DB --instance=dagster-storage } function send_slack_msg() { @@ -53,7 +56,7 @@ function shutdown_vm() { upload_file_to_slack $LOGFILE "pudl_etl logs for $ACTION_SHA-$GITHUB_REF:" # Delete dagster-storage database - gcloud sql databases delete "dagster-storage-$SHORT_GITHUB_REF" --instance=dagster-storage + gcloud sql databases delete $DAGSTER_PG_DB --instance=dagster-storage # Start dagster-storage Cloud SQL instance gcloud sql instances patch dagster-storage --activation-policy=NEVER @@ -94,8 +97,6 @@ function notify_slack() { send_slack_msg "$message" } -SHORT_GITHUB_REF=$(git rev-parse --short $GITHUB_REF) - # # Run ETL. Copy outputs to GCS and shutdown VM if ETL succeeds or fails # 2>&1 redirects stderr to stdout. run_pudl_etl 2>&1 | tee $LOGFILE From 8c606574beda2a44158ee31e85754a15ada126b6 Mon Sep 17 00:00:00 2001 From: Zane Selvans Date: Wed, 1 Nov 2023 09:12:22 -0600 Subject: [PATCH 22/44] Update date range for nightly build links to include 2022 --- docs/data_access.rst | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/data_access.rst b/docs/data_access.rst index 0e97334a2f..ab79f0ab51 100644 --- a/docs/data_access.rst +++ b/docs/data_access.rst @@ -83,42 +83,42 @@ AWS CLI, or programmatically via the S3 API. They can also be downloaded directl HTTPS using the following links: * `PUDL SQLite DB `__ -* `EPA CEMS Hourly Emissions Parquet (1995-2021) `__ +* `EPA CEMS Hourly Emissions Parquet (1995-2022) `__ * `Census DP1 SQLite DB (2010) `__ * Raw FERC Form 1: * `FERC-1 SQLite derived from DBF (1994-2020) `__ - * `FERC-1 SQLite derived from XBRL (2021) `__ + * `FERC-1 SQLite derived from XBRL (2021-2022) `__ * `FERC-1 Datapackage (JSON) describing SQLite derived from XBRL `__ - * `FERC-1 XBRL Taxonomy Metadata as JSON (2021) `__ + * `FERC-1 XBRL Taxonomy Metadata as JSON (2021-2022) `__ * Raw FERC Form 2: * `FERC-2 SQLite derived from DBF (1996-2020) `__ - * `FERC-2 SQLite derived from XBRL (2021) `__ + * `FERC-2 SQLite derived from XBRL (2021-2022) `__ * `FERC-2 Datapackage (JSON) describing SQLite derived from XBRL `__ - * `FERC-2 XBRL Taxonomy Metadata as JSON (2021) `__ + * `FERC-2 XBRL Taxonomy Metadata as JSON (2021-2022) `__ * Raw FERC Form 6: * `FERC-6 SQLite derived from DBF (2000-2020) `__ - * `FERC-6 SQLite derived from XBRL (2021) `__ + * `FERC-6 SQLite derived from XBRL (2021-2022) `__ * `FERC-6 Datapackage (JSON) describing SQLite derived from XBRL `__ - * `FERC-6 XBRL Taxonomy Metadata as JSON (2021) `__ + * `FERC-6 XBRL Taxonomy Metadata as JSON (2021-2022) `__ * Raw FERC Form 60: * `FERC-60 SQLite derived from DBF (2006-2020) `__ - * `FERC-60 SQLite derived from XBRL (2021) `__ + * `FERC-60 SQLite derived from XBRL (2021-2022) `__ * `FERC-60 Datapackage (JSON) describing SQLite derived from XBRL `__ * `FERC-60 XBRL Taxonomy Metadata as JSON (2021) `__ * Raw FERC Form 714: - * `FERC-714 SQLite derived from XBRL (2021) `__ + * `FERC-714 SQLite derived from XBRL (2021-2022) `__ * `FERC-714 Datapackage (JSON) describing SQLite derived from XBRL `__ - * `FERC-714 XBRL Taxonomy Metadata as JSON (2021) `__ + * `FERC-714 XBRL Taxonomy Metadata as JSON (2021-2022) `__ .. _access-zenodo: From 24f6b8d55004f317ff4c1a21714b9459c18a9bf5 Mon Sep 17 00:00:00 2001 From: Austen Sharpe Date: Wed, 1 Nov 2023 12:22:58 -0300 Subject: [PATCH 23/44] Update 923 settings files to accomodate 2023 data and update settings tests so that they aren't dependent on having the same years of EIA923 and EIA860 data --- src/pudl/package_data/settings/etl_fast.yml | 2 +- src/pudl/package_data/settings/etl_full.yml | 1 + src/pudl/settings.py | 5 ++++- test/unit/settings_test.py | 18 +++++++++++++++++- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/pudl/package_data/settings/etl_fast.yml b/src/pudl/package_data/settings/etl_fast.yml index 6a9f1d7a92..59b1cb928a 100644 --- a/src/pudl/package_data/settings/etl_fast.yml +++ b/src/pudl/package_data/settings/etl_fast.yml @@ -39,7 +39,7 @@ datasets: years: [2019, 2020] eia: eia923: - years: [2020, 2022] + years: [2020, 2023] eia860: years: [2020, 2022] eia860m: true diff --git a/src/pudl/package_data/settings/etl_full.yml b/src/pudl/package_data/settings/etl_full.yml index 070fecdbfb..8e4e7a1630 100644 --- a/src/pudl/package_data/settings/etl_full.yml +++ b/src/pudl/package_data/settings/etl_full.yml @@ -211,6 +211,7 @@ datasets: 2020, 2021, 2022, + 2023, ] eia860: years: diff --git a/src/pudl/settings.py b/src/pudl/settings.py index e196db5fff..d432acd330 100644 --- a/src/pudl/settings.py +++ b/src/pudl/settings.py @@ -288,7 +288,10 @@ def check_eia_dependencies(cls, values): # noqa: N805 values["eia923"] = Eia923Settings(years=eia860.years) if eia923 and not eia860: - values["eia860"] = Eia860Settings(years=eia923.years) + available_years = Eia860Settings() + values["eia860"] = Eia860Settings( + years=[year for year in eia923.years if year in available_years] + ) return values diff --git a/test/unit/settings_test.py b/test/unit/settings_test.py index 9b219e04a7..3a966ea93e 100644 --- a/test/unit/settings_test.py +++ b/test/unit/settings_test.py @@ -10,6 +10,7 @@ from pudl.settings import ( DatasetsSettings, Eia860Settings, + Eia923Settings, EiaSettings, EpaCemsSettings, Ferc1DbfToSqliteSettings, @@ -134,7 +135,8 @@ class TestEiaSettings: def test_eia923_dependency(self): """Test that there is some overlap between EIA860 and EIA923 data.""" - settings = EiaSettings() + eia923_settings = Eia923Settings() + settings = EiaSettings(eia923=eia923_settings) data_source = DataSource.from_id("eia860") assert settings.eia860 # assign both EIA form years @@ -145,6 +147,20 @@ def test_eia923_dependency(self): assert not set(eia860_years).isdisjoint(eia923_years_partition) assert not set(eia860_years).isdisjoint(eia923_years_settings) + def test_eia860_dependency(self): + """Test that there is some overlap between EIA860 and EIA923 data.""" + eia860_settings = Eia860Settings() + settings = EiaSettings(eia860=eia860_settings) + data_source = DataSource.from_id("eia923") + assert settings.eia923 + # assign both EIA form years + eia923_years = settings.eia923.years + eia860_years_partition = data_source.working_partitions["years"] + eia860_years_settings = settings.eia860.years + # assert that there is some overlap between EIA years + assert not set(eia923_years).isdisjoint(eia860_years_partition) + assert not set(eia923_years).isdisjoint(eia860_years_settings) + class TestDatasetsSettings: """Test pydantic model that validates all datasets.""" From 45f2d02a2eb8754be173b9db2369e35adec54b3b Mon Sep 17 00:00:00 2001 From: Jan Rous Date: Wed, 1 Nov 2023 10:52:42 -0600 Subject: [PATCH 24/44] Fix calculating the report_date in demand_hourly_pa_ferc714 --- src/pudl/transform/ferc714.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/pudl/transform/ferc714.py b/src/pudl/transform/ferc714.py index 189091ab39..ad07d40e56 100644 --- a/src/pudl/transform/ferc714.py +++ b/src/pudl/transform/ferc714.py @@ -505,9 +505,7 @@ def demand_hourly_pa_ferc714( df.loc[mask, "demand_mwh"] *= -1 # Convert report_date to first day of year - df["report_date"] = pd.Series( - df.loc[:, "report_date"].to_numpy().astype("datetime64[Y]") - ) + df["report_date"] = df.report_date.dt.to_period("Y").dt.to_timestamp() # Format result columns = [ From bf77d1aafb8f50bc9ae43dd3420062fa8500404b Mon Sep 17 00:00:00 2001 From: Zane Selvans Date: Wed, 1 Nov 2023 11:45:27 -0600 Subject: [PATCH 25/44] Require non-null report_date in FERC 714 hourly demand table. --- src/pudl/metadata/fields.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pudl/metadata/fields.py b/src/pudl/metadata/fields.py index 6f7c8f047d..0800a077fb 100644 --- a/src/pudl/metadata/fields.py +++ b/src/pudl/metadata/fields.py @@ -3005,7 +3005,12 @@ "Pacific/Honolulu", ] } - } + }, + "report_date": { + "constraints": { + "required": True, + } + }, }, } From b376141c4c1aeacb0ad3194c8b42cb5fadec2a97 Mon Sep 17 00:00:00 2001 From: Austen Sharpe Date: Wed, 1 Nov 2023 15:55:17 -0300 Subject: [PATCH 26/44] Update date validation function to only look at instances where data_maturity is not ytd_incremental --- src/pudl/validate.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pudl/validate.py b/src/pudl/validate.py index 7e3d7f79d8..816212c8fa 100644 --- a/src/pudl/validate.py +++ b/src/pudl/validate.py @@ -75,6 +75,10 @@ def check_date_freq(df1: pd.DataFrame, df2: pd.DataFrame, mult: int) -> None: if ("report_date" not in df1.columns) or ("report_date" not in df2.columns): raise ValueError("Missing report_date column in one or both input DataFrames") + # Remove ytd values that mess up ratio assumptions + if "data_maturity" in df2: + df2 = df2[df2["data_maturity"] != "incremental_ytd"].copy() + idx1 = pd.DatetimeIndex(df1.report_date.unique()) idx2 = pd.DatetimeIndex(df2.report_date.unique()) From 5b335003406fb03d24b2672acc5c0c8bece16c5a Mon Sep 17 00:00:00 2001 From: bendnorman Date: Wed, 1 Nov 2023 15:56:00 -0800 Subject: [PATCH 27/44] Remove Cloud SQL lifecycle management from gcp_pudl_etl.sh script --- docker/gcp_pudl_etl.sh | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/docker/gcp_pudl_etl.sh b/docker/gcp_pudl_etl.sh index 411c8b888c..ba6d1e0f89 100644 --- a/docker/gcp_pudl_etl.sh +++ b/docker/gcp_pudl_etl.sh @@ -4,16 +4,6 @@ set -x -function setup_dagster_storage() { - SHORT_GITHUB_REF=$(git rev-parse --short $GITHUB_REF) - export DAGSTER_PG_DB="dagster-storage-$SHORT_GITHUB_REF" - - # Start dagster-storage Cloud SQL instance - gcloud sql instances patch dagster-storage --activation-policy=ALWAYS - # Create database - gcloud sql databases create $DAGSTER_PG_DB --instance=dagster-storage -} - function send_slack_msg() { curl -X POST -H "Content-type: application/json" -H "Authorization: Bearer ${SLACK_TOKEN}" https://slack.com/api/chat.postMessage --data "{\"channel\": \"C03FHB9N0PQ\", \"text\": \"$1\"}" } @@ -31,7 +21,6 @@ function authenticate_gcp() { function run_pudl_etl() { send_slack_msg ":large_yellow_circle: Deployment started for $ACTION_SHA-$GITHUB_REF :floppy_disk:" authenticate_gcp \ - && setup_dagster_storage \ && alembic upgrade head \ && pudl_setup \ && ferc_to_sqlite \ @@ -55,11 +44,6 @@ function shutdown_vm() { upload_file_to_slack $LOGFILE "pudl_etl logs for $ACTION_SHA-$GITHUB_REF:" - # Delete dagster-storage database - gcloud sql databases delete $DAGSTER_PG_DB --instance=dagster-storage - # Start dagster-storage Cloud SQL instance - gcloud sql instances patch dagster-storage --activation-policy=NEVER - echo "Shutting down VM." # # Shut down the vm instance when the etl is done. ACCESS_TOKEN=`curl \ From 633b63da0e9e0e2eb0752e639ffbab13de38bc3a Mon Sep 17 00:00:00 2001 From: thinky Date: Thu, 2 Nov 2023 10:32:57 -0400 Subject: [PATCH 28/44] Update data contributors, add zenodo role and doi field, update US copyright link --- src/pudl/metadata/classes.py | 28 ++++++++++++++++++++++++++-- src/pudl/metadata/constants.py | 16 +++++++++++++++- src/pudl/metadata/sources.py | 22 +--------------------- 3 files changed, 42 insertions(+), 24 deletions(-) diff --git a/src/pudl/metadata/classes.py b/src/pudl/metadata/classes.py index dabd00fa14..ec7227f67e 100644 --- a/src/pudl/metadata/classes.py +++ b/src/pudl/metadata/classes.py @@ -229,6 +229,9 @@ def __repr_args__(self) -> list[tuple[str, Any]]: HttpUrl = pydantic.AnyHttpUrl """Http(s) URL.""" +Doi = pydantic.constr(min_length=1, strict=True, regex=r"10\.5281/zenodo\.\d{6,8}") +"""DOIs from Zenodo archives.""" + class BaseType: """Base class for custom pydantic types.""" @@ -869,6 +872,27 @@ class Contributor(Base): role: Literal[ "author", "contributor", "maintainer", "publisher", "wrangler" ] = "contributor" + zenodo_role: Literal[ + "contact person", + "data collector", + "data curator", + "data manager", + "distributor", + "editor", + "hosting institution", + "other", + "producer", + "project leader", + "project member", + "registration agency", + "registration authority", + "related person", + "researcher", + "rights holder", + "sponsor", + "supervisor", + "work package leader", + ] = "project member" organization: String = None orcid: String = None @@ -911,10 +935,10 @@ class DataSource(Base): field_namespace: String = None keywords: list[str] = [] path: HttpUrl = None - contributors: list[Contributor] = [] # Or should this be compiled from Resources? + contributors: list[Contributor] = [] license_raw: License license_pudl: License - # concept_doi: Doi = None # Need to define a Doi type? + concept_doi: Doi = None working_partitions: dict[SnakeCase, Any] = {} source_file_dict: dict[SnakeCase, Any] = {} # agency: Agency # needs to be defined diff --git a/src/pudl/metadata/constants.py b/src/pudl/metadata/constants.py index a7906dc7ec..ac281883c5 100644 --- a/src/pudl/metadata/constants.py +++ b/src/pudl/metadata/constants.py @@ -62,7 +62,7 @@ "us-govt": { "name": "other-pd", "title": "U.S. Government Works", - "path": "https://www.usa.gov/government-works", + "path": "http://www.usa.gov/publicdomain/label/1.0/", }, } """License attributes.""" @@ -83,6 +83,7 @@ "email": "pudl@catalyst.coop", "path": "https://catalyst.coop", "role": "publisher", + "zenodo_role": "distributor", "organization": "Catalyst Cooperative", }, "zane-selvans": { @@ -90,6 +91,7 @@ "email": "zane.selvans@catalyst.coop", "path": "https://amateurearthling.org", "role": "wrangler", + "zenodo_role": "project member", "organization": "Catalyst Cooperative", "orcid": "0000-0002-9961-7208", }, @@ -97,6 +99,7 @@ "title": "Christina Gosnell", "email": "christina.gosnell@catalyst.coop", "role": "contributor", + "zenodo_role": "project member", "organization": "Catalyst Cooperative", "orcid": "0009-0004-2979-6142", }, @@ -104,12 +107,14 @@ "title": "Steven Winter", "email": "steven.winter@catalyst.coop", "role": "contributor", + "zenodo_role": "project member", "organization": "Catalyst Cooperative", }, "alana-wilson": { "title": "Alana Wilson", "email": "alana.wilson@catalyst.coop", "role": "contributor", + "zenodo_role": "project member", "organization": "Catalyst Cooperative", }, "karl-dunkle-werner": { @@ -117,6 +122,7 @@ "email": "karldw@berkeley.edu", "path": "https://karldw.org", "role": "contributor", + "zenodo_role": "project member", "organization": "UC Berkeley", "orcid": "0000-0003-0523-7309", }, @@ -124,6 +130,7 @@ "title": "Greg Schivley", "path": "https://gschivley.github.io", "role": "contributor", + "zenodo_role": "project member", "organization": "Carbon Impact Consulting", "orcid": "0000-0002-8947-694X", }, @@ -131,30 +138,35 @@ "title": "Austen Sharpe", "email": "austen.sharpe@catalyst.coop", "role": "contributor", + "zenodo_role": "project member", "organization": "Catalyst Cooperative", }, "katherine-lamb": { "title": "Katherine Lamb", "email": "katherine.lamb@catalyst.coop", "role": "contributor", + "zenodo_role": "project member", "organization": "Catalyst Cooperative", }, "bennett-norman": { "title": "Bennett Norman", "email": "bennett.norman@catalyst.coop", "role": "contributor", + "zenodo_role": "project member", "organization": "Catalyst Cooperative", }, "trenton-bush": { "title": "Trenton Bush", "email": "trenton.bush@catalyst.coop", "role": "contributor", + "zenodo_role": "project member", "organization": "Catalyst Cooperative", }, "ethan-welty": { "title": "Ethan Welty", "email": "ethan.welty@gmail.com", "role": "contributor", + "zenodo_role": "project member", "organization": "Catalyst Cooperative", "orcid": "0000-0001-8046-2210", }, @@ -162,12 +174,14 @@ "title": "Dazhong Xia", "email": "dazhong.xia@catalyst.coop", "role": "contributor", + "zenodo_role": "project member", "organization": "Catalyst Cooperative", }, "ella-belfer": { "title": "Ella Belfer", "email": "ella.belfer@catalyst.coop", "role": "contributor", + "zenodo_role": "project member", "organization": "Catalyst Cooperative", "orcid": "0000-0001-9784-8531", }, diff --git a/src/pudl/metadata/sources.py b/src/pudl/metadata/sources.py index 303999da31..f941b6a6e6 100644 --- a/src/pudl/metadata/sources.py +++ b/src/pudl/metadata/sources.py @@ -20,6 +20,7 @@ ), "license_raw": LICENSES["us-govt"], "license_pudl": LICENSES["cc-by-4.0"], + "contributors": [CONTRIBUTORS["catalyst-cooperative"]], }, "eia176": { "title": "EIA Form 176 -- Annual Report of Natural and Supplemental Gas Supply and Disposition", @@ -75,10 +76,6 @@ "field_namespace": "eia", "contributors": [ CONTRIBUTORS["catalyst-cooperative"], - CONTRIBUTORS["zane-selvans"], - CONTRIBUTORS["christina-gosnell"], - CONTRIBUTORS["steven-winter"], - CONTRIBUTORS["alana-wilson"], ], "working_partitions": { "years": sorted(set(range(2001, 2023))), @@ -195,10 +192,6 @@ }, "contributors": [ CONTRIBUTORS["catalyst-cooperative"], - CONTRIBUTORS["zane-selvans"], - CONTRIBUTORS["christina-gosnell"], - CONTRIBUTORS["steven-winter"], - CONTRIBUTORS["katherine-lamb"], ], "keywords": sorted( set( @@ -240,8 +233,6 @@ "working_partitions": {}, "contributors": [ CONTRIBUTORS["catalyst-cooperative"], - CONTRIBUTORS["zane-selvans"], - CONTRIBUTORS["trenton-bush"], ], "keywords": sorted( set( @@ -286,8 +277,6 @@ }, "contributors": [ CONTRIBUTORS["catalyst-cooperative"], - CONTRIBUTORS["karl-dunkle-werner"], - CONTRIBUTORS["zane-selvans"], ], "keywords": sorted( set( @@ -325,7 +314,6 @@ "working_partitions": {}, "contributors": [ CONTRIBUTORS["catalyst-cooperative"], - CONTRIBUTORS["austen-sharpe"], ], "keywords": sorted( set( @@ -369,11 +357,6 @@ }, "contributors": [ CONTRIBUTORS["catalyst-cooperative"], - CONTRIBUTORS["zane-selvans"], - CONTRIBUTORS["christina-gosnell"], - CONTRIBUTORS["steven-winter"], - CONTRIBUTORS["alana-wilson"], - CONTRIBUTORS["austen-sharpe"], ], "keywords": sorted( set( @@ -580,9 +563,6 @@ ), "contributors": [ CONTRIBUTORS["catalyst-cooperative"], - CONTRIBUTORS["zane-selvans"], - CONTRIBUTORS["christina-gosnell"], - CONTRIBUTORS["steven-winter"], ], "field_namespace": "pudl", "keywords": ["us", "electricity", "open data", "open source"], From 4b028d2e3fceaf5e3964581db00f209171251279 Mon Sep 17 00:00:00 2001 From: thinky Date: Thu, 2 Nov 2023 12:44:42 -0400 Subject: [PATCH 29/44] Update to ZenodoDoi class, update to https --- src/pudl/metadata/classes.py | 6 ++---- src/pudl/metadata/constants.py | 2 +- src/pudl/workspace/datastore.py | 4 +++- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pudl/metadata/classes.py b/src/pudl/metadata/classes.py index ec7227f67e..156aef69f6 100644 --- a/src/pudl/metadata/classes.py +++ b/src/pudl/metadata/classes.py @@ -42,7 +42,7 @@ ) from pudl.metadata.resources import FOREIGN_KEYS, RESOURCE_METADATA, eia861 from pudl.metadata.sources import SOURCES -from pudl.workspace.datastore import Datastore +from pudl.workspace.datastore import Datastore, ZenodoDoi from pudl.workspace.setup import PudlPaths logger = pudl.logging_helpers.get_logger(__name__) @@ -228,8 +228,6 @@ def __repr_args__(self) -> list[tuple[str, Any]]: HttpUrl = pydantic.AnyHttpUrl """Http(s) URL.""" - -Doi = pydantic.constr(min_length=1, strict=True, regex=r"10\.5281/zenodo\.\d{6,8}") """DOIs from Zenodo archives.""" @@ -938,7 +936,7 @@ class DataSource(Base): contributors: list[Contributor] = [] license_raw: License license_pudl: License - concept_doi: Doi = None + concept_doi: ZenodoDoi = None working_partitions: dict[SnakeCase, Any] = {} source_file_dict: dict[SnakeCase, Any] = {} # agency: Agency # needs to be defined diff --git a/src/pudl/metadata/constants.py b/src/pudl/metadata/constants.py index ac281883c5..95bffa6b56 100644 --- a/src/pudl/metadata/constants.py +++ b/src/pudl/metadata/constants.py @@ -62,7 +62,7 @@ "us-govt": { "name": "other-pd", "title": "U.S. Government Works", - "path": "http://www.usa.gov/publicdomain/label/1.0/", + "path": "https://www.usa.gov/publicdomain/label/1.0/", }, } """License attributes.""" diff --git a/src/pudl/workspace/datastore.py b/src/pudl/workspace/datastore.py index e49087ac6e..94fdfa5ade 100644 --- a/src/pudl/workspace/datastore.py +++ b/src/pudl/workspace/datastore.py @@ -27,7 +27,9 @@ logger = pudl.logging_helpers.get_logger(__name__) PUDL_YML = Path.home() / ".pudl.yml" -ZenodoDoi = constr(regex=r"(10\.5072|10\.5281)/zenodo.([\d]+)") +ZenodoDoi = constr( + strict=True, min_length=16, regex=r"(10\.5072|10\.5281)/zenodo.([\d]+)" +) class ChecksumMismatchError(ValueError): From 6e6bf5e9ec4c5c5ea4ac5f1a0feeeb9e59253046 Mon Sep 17 00:00:00 2001 From: thinky Date: Thu, 2 Nov 2023 15:02:22 -0400 Subject: [PATCH 30/44] Remove leftover string --- src/pudl/metadata/classes.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pudl/metadata/classes.py b/src/pudl/metadata/classes.py index 156aef69f6..49b97cfb8f 100644 --- a/src/pudl/metadata/classes.py +++ b/src/pudl/metadata/classes.py @@ -228,7 +228,6 @@ def __repr_args__(self) -> list[tuple[str, Any]]: HttpUrl = pydantic.AnyHttpUrl """Http(s) URL.""" -"""DOIs from Zenodo archives.""" class BaseType: From c11b1a436e793fe1e169f626a90a3896d671f908 Mon Sep 17 00:00:00 2001 From: Dazhong Xia Date: Thu, 2 Nov 2023 15:16:38 -0400 Subject: [PATCH 31/44] Switch regex strategy to sampling strategy to improve performance (#2998) * Switch regex strategy to sampling strategy to improve performance * Increase deadline --- test/unit/io_managers_test.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/unit/io_managers_test.py b/test/unit/io_managers_test.py index a4ba43efc2..89d8a80988 100644 --- a/test/unit/io_managers_test.py +++ b/test/unit/io_managers_test.py @@ -354,7 +354,7 @@ def test_ferc_xbrl_sqlite_io_manager_dedupes(mocker, tmp_path): example_schema = pandera.DataFrameSchema( { "entity_id": pandera.Column( - str, pandera.Check.str_matches(r"[0-9a-zA-Z]+"), nullable=False + str, pandera.Check.isin("C0123456789"), nullable=False ), "date": pandera.Column("datetime64[ns]", nullable=False), "utility_type": pandera.Column( @@ -365,11 +365,12 @@ def test_ferc_xbrl_sqlite_io_manager_dedupes(mocker, tmp_path): "publication_time": pandera.Column("datetime64[ns]", nullable=False), "int_factoid": pandera.Column(int), "float_factoid": pandera.Column(float), - "str_factoid": pandera.Column("str"), + "str_factoid": pandera.Column(str), } ) +@hypothesis.settings(print_blob=True, deadline=400) @hypothesis.given(example_schema.strategy(size=3)) def test_filter_for_freshest_data(df): # XBRL context is the identifying metadata for reported values From a79edeba21eebce43a5d7f5a37210922fc32f71a Mon Sep 17 00:00:00 2001 From: Jan Rous Date: Thu, 2 Nov 2023 15:50:54 -0600 Subject: [PATCH 32/44] add alembic schema changes for the recent constraint. --- ...e_demand_hourly_pa_ferc714_report_date_.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 migrations/versions/3313ca078f4e_demand_hourly_pa_ferc714_report_date_.py diff --git a/migrations/versions/3313ca078f4e_demand_hourly_pa_ferc714_report_date_.py b/migrations/versions/3313ca078f4e_demand_hourly_pa_ferc714_report_date_.py new file mode 100644 index 0000000000..61acfd18cf --- /dev/null +++ b/migrations/versions/3313ca078f4e_demand_hourly_pa_ferc714_report_date_.py @@ -0,0 +1,35 @@ +"""demand_hourly_pa_ferc714.report_date can't be null + +Revision ID: 3313ca078f4e +Revises: 1ceb9897fd34 +Create Date: 2023-11-02 15:48:50.477585 + +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = '3313ca078f4e' +down_revision = '1ceb9897fd34' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('demand_hourly_pa_ferc714', schema=None) as batch_op: + batch_op.alter_column('report_date', + existing_type=sa.DATE(), + nullable=False) + + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('demand_hourly_pa_ferc714', schema=None) as batch_op: + batch_op.alter_column('report_date', + existing_type=sa.DATE(), + nullable=True) + + # ### end Alembic commands ### From ef2033964d56f9ca71cd66c9e7f1ad1b65d0b714 Mon Sep 17 00:00:00 2001 From: Christina Gosnell Date: Fri, 3 Nov 2023 14:24:02 -0400 Subject: [PATCH 33/44] only fix a reporting_frequency_code when the column exists --- src/pudl/extract/eia923.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/pudl/extract/eia923.py b/src/pudl/extract/eia923.py index 87a6c9413f..a55b7cceea 100644 --- a/src/pudl/extract/eia923.py +++ b/src/pudl/extract/eia923.py @@ -50,9 +50,10 @@ def process_raw(self, df, page, **partition): df = remove_leading_zeros_from_numeric_strings(df=df, col_name=col) df = self.add_data_maturity(df, page, **partition) # Fill in blank reporting_frequency_code for monthly data - df.loc[ - df["data_maturity"] == "incremental_ytd", "reporting_frequency_code" - ] = "M" + if "reporting_frequency_code" in df.columns: + df.loc[ + df["data_maturity"] == "incremental_ytd", "reporting_frequency_code" + ] = "M" # the 2021 early release data had some ding dang "."'s and nulls in the year column if "report_year" in df.columns: mask = (df.report_year == ".") | df.report_year.isnull() From 2848e01654ee1921ebdcc1c62dceb9d6afd27ecd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Nov 2023 07:28:06 +0000 Subject: [PATCH 34/44] Update responses requirement from <0.24,>=0.14 to >=0.14,<0.25 Updates the requirements on [responses](https://github.com/getsentry/responses) to permit the latest version. - [Release notes](https://github.com/getsentry/responses/releases) - [Changelog](https://github.com/getsentry/responses/blob/master/CHANGES) - [Commits](https://github.com/getsentry/responses/compare/0.14.0...0.24.0) --- updated-dependencies: - dependency-name: responses dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0e07b01133..17df93f8b5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -150,7 +150,7 @@ test = [ "pytest-cov>=4,<4.2", "pytest-mock>=3,<3.13", "pytest>=7,<7.5", - "responses>=0.14,<0.24", + "responses>=0.14,<0.25", "ruff>=0.1,<0.2", "tox>=4,<4.12", ] From 51ed7e59d70bb2ab988e8ac94a05972b64985442 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Nov 2023 07:28:40 +0000 Subject: [PATCH 35/44] Update pyarrow requirement from <14,>=13 to >=13,<15 Updates the requirements on [pyarrow](https://github.com/apache/arrow) to permit the latest version. - [Commits](https://github.com/apache/arrow/compare/go/v13.0.0...go/v14.0.0) --- updated-dependencies: - dependency-name: pyarrow dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0e07b01133..66d24d0d21 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,7 @@ dependencies = [ "openpyxl>=3.0.10", # pandas[excel] "pandas[parquet,excel,fss,gcp,compression]>=2,<2.2", "pandera>=0.17,<1.0", - "pyarrow>=13,<14", # pandas[parquet] + "pyarrow>=13,<15", # pandas[parquet] "pydantic>=1.7,<2", "python-dotenv>=1,<1.1", "pyxlsb>=1.0.9", # pandas[excel] From c2e78891a8d14cbf388eb4cdd9a89cd053845e0d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Nov 2023 07:29:13 +0000 Subject: [PATCH 36/44] Update dagster-postgres requirement Updates the requirements on [dagster-postgres](https://github.com/dagster-io/dagster) to permit the latest version. - [Release notes](https://github.com/dagster-io/dagster/releases) - [Changelog](https://github.com/dagster-io/dagster/blob/master/CHANGES.md) - [Commits](https://github.com/dagster-io/dagster/commits) --- updated-dependencies: - dependency-name: dagster-postgres dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0e07b01133..d8000b8ef2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,7 +21,7 @@ dependencies = [ "coloredlogs>=14.0,<15.1", # Dagster requires 14.0 "dagster-webserver>=1.4,<1.6", "dagster>=1.4,<1.6", - "dagster-postgres>=0.21.5,<0.21.6", + "dagster-postgres>=0.21.5,<0.21.7", "dask>=2022.5,<2023.10.2", "datapackage>=1.11,<1.16", # Transition datastore to use frictionless. "email-validator>=1.0.3", # pydantic[email] From aea60b9190f227b9c98f2407dc1fe4591e314ac5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 6 Nov 2023 19:37:30 +0000 Subject: [PATCH 37/44] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.1.3 → v0.1.4](https://github.com/astral-sh/ruff-pre-commit/compare/v0.1.3...v0.1.4) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 42eeff716b..7eb86ac54d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -26,7 +26,7 @@ repos: # Formatters: hooks that re-write Python & documentation files #################################################################################### - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.1.3 + rev: v0.1.4 hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] From acbf7889bd16046ebc7131065a5ccc7abb4301a7 Mon Sep 17 00:00:00 2001 From: Christina Gosnell Date: Mon, 6 Nov 2023 16:43:34 -0500 Subject: [PATCH 38/44] update tox and eia923 rows --- test/validate/mcoe_test.py | 4 ++-- tox.ini | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/validate/mcoe_test.py b/test/validate/mcoe_test.py index 949b4914ea..1d3ea05d3c 100644 --- a/test/validate/mcoe_test.py +++ b/test/validate/mcoe_test.py @@ -109,8 +109,8 @@ def test_no_null_rows_mcoe(pudl_out_mcoe, live_dbs, df_name, thresh): ("hr_by_unit", 387_694, 32_416), ("hr_by_gen", 599_496, 50_070), ("fuel_cost", 599_496, 50_070), - ("capacity_factor", 5_178_892, 433_277), - ("mcoe", 5_179_300, 433_311), + ("capacity_factor", 5_178_828, 433_286), + ("mcoe", 5_179_236, 433_320), ], ) def test_minmax_rows_mcoe(pudl_out_mcoe, live_dbs, monthly_rows, annual_rows, df_name): diff --git a/tox.ini b/tox.ini index b547c307af..280fab1ddc 100644 --- a/tox.ini +++ b/tox.ini @@ -191,8 +191,8 @@ commands = {[testenv:unit]commands} {[testenv:integration]commands} bash -c 'rm -f tox-nuke.log' - bash -c 'coverage run --append src/pudl/convert/ferc_to_sqlite.py --logfile tox-nuke.log --clobber src/pudl/package_data/settings/etl_full.yml' - bash -c 'coverage run --append src/pudl/cli/etl.py --logfile tox-nuke.log --clobber src/pudl/package_data/settings/etl_full.yml' + bash -c 'coverage run --append src/pudl/ferc_to_sqlite/cli.py --logfile tox-nuke.log --clobber src/pudl/package_data/settings/etl_full.yml' + bash -c 'coverage run --append src/pudl/cli/etl.py --logfile tox-nuke.log src/pudl/package_data/settings/etl_full.yml' pytest {tty:--color=yes} --live-dbs {posargs} {[testenv]covargs} \ --etl-settings src/pudl/package_data/settings/etl_full.yml \ test/integration From e4c1c46ddf471356b07a0128018c366656a182d7 Mon Sep 17 00:00:00 2001 From: Christina Gosnell Date: Tue, 7 Nov 2023 12:48:55 -0500 Subject: [PATCH 39/44] update excepted rows for no-fips id-ed respondents but keep annualized demand --- src/pudl/output/ferc714.py | 16 +++++++++------- test/validate/service_territory_test.py | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/pudl/output/ferc714.py b/src/pudl/output/ferc714.py index 8049536b46..7d027f413a 100644 --- a/src/pudl/output/ferc714.py +++ b/src/pudl/output/ferc714.py @@ -652,18 +652,20 @@ def summarized_demand_ferc714( demand_hourly_pa_ferc714.loc[ :, ["report_date", "respondent_id_ferc714", "demand_mwh"] ], + on=["report_date", "respondent_id_ferc714"], how="left", ) - .groupby(["report_date", "respondent_id_ferc714"]) - .agg({"demand_mwh": sum}) + .groupby(["report_date", "respondent_id_ferc714"], as_index=False)[ + ["demand_mwh"] + ] + .sum(min_count=1) .rename(columns={"demand_mwh": "demand_annual_mwh"}) - .reset_index() .merge( georeferenced_counties_ferc714.groupby( - ["report_date", "respondent_id_ferc714"] - ) - .agg({"population": sum, "area_km2": sum}) - .reset_index() + ["report_date", "respondent_id_ferc714"], as_index=False + )[["population", "area_km2"]].sum(min_count=1), + on=["report_date", "respondent_id_ferc714"], + how="left", ) .assign( population_density_km2=lambda x: x.population / x.area_km2, diff --git a/test/validate/service_territory_test.py b/test/validate/service_territory_test.py index 4dbee9a988..78aa9022cd 100644 --- a/test/validate/service_territory_test.py +++ b/test/validate/service_territory_test.py @@ -13,7 +13,7 @@ "df_name,expected_rows", [ ("summarized_demand_ferc714", 3_195), - ("fipsified_respondents_ferc714", 135_627), + ("fipsified_respondents_ferc714", 135_537), ("compiled_geometry_balancing_authority_eia861", 112_507), ("compiled_geometry_utility_eia861", 247_705), ], From 1e2857fdcc99e31467bb06558010266d59696357 Mon Sep 17 00:00:00 2001 From: Christina Gosnell Date: Tue, 7 Nov 2023 13:30:05 -0500 Subject: [PATCH 40/44] add report year validation test --- test/validate/service_territory_test.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/test/validate/service_territory_test.py b/test/validate/service_territory_test.py index 78aa9022cd..550aeb44bd 100644 --- a/test/validate/service_territory_test.py +++ b/test/validate/service_territory_test.py @@ -46,3 +46,22 @@ def test_minmax_rows( pv.check_max_rows, expected_rows=expected_rows, margin=0.0, df_name=df_name ) ) + + +def test_report_year_discrepency_in_demand_hourly_pa_ferc714(pudl_out_orig): + """Test if the vast majority of the years in the two date columns line up.""" + demand_hourly_pa_ferc714 = pudl_out_orig.demand_hourly_pa_ferc714() + mismatched_report_years = demand_hourly_pa_ferc714[ + ( + demand_hourly_pa_ferc714.utc_datetime.dt.year + != demand_hourly_pa_ferc714.report_date.dt.year + ) + ] + if ( + off_ratio := len(mismatched_report_years) / len(demand_hourly_pa_ferc714) + ) > 0.001: + raise AssertionError( + f"Found more ({off_ratio:.2%}) than expected (>.1%) FERC714 records" + " where the report year from the utc_datetime differs from the " + "report_date column." + ) From f25e921aa88b1ba6b1bb4e4764f0e65bf3494491 Mon Sep 17 00:00:00 2001 From: Christina Gosnell Date: Tue, 7 Nov 2023 14:32:49 -0500 Subject: [PATCH 41/44] add minmax rows into validation test for chonky table --- test/validate/service_territory_test.py | 27 ++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/test/validate/service_territory_test.py b/test/validate/service_territory_test.py index 550aeb44bd..203f40ff0e 100644 --- a/test/validate/service_territory_test.py +++ b/test/validate/service_territory_test.py @@ -48,9 +48,30 @@ def test_minmax_rows( ) -def test_report_year_discrepency_in_demand_hourly_pa_ferc714(pudl_out_orig): - """Test if the vast majority of the years in the two date columns line up.""" - demand_hourly_pa_ferc714 = pudl_out_orig.demand_hourly_pa_ferc714() +@pytest.mark.parametrize( + "df_name,expected_rows", + [("demand_hourly_pa_ferc714", 15_608_154)], +) +def test_minmax_rows_and_year_in_demand_hourly_pa_ferc714( + pudl_out_orig: "pudl.output.pudltabl.PudlTabl", + live_dbs: bool, + expected_rows: int, + df_name: str, +): + """Test if the majority of the years in the two date columns line up & min/max rows. + + We are parameterizing this test even though it only has one input because the + test_minmax_rows is a common test across many tables and we wanted to preserve the + format. + """ + if not live_dbs: + pytest.skip("Data validation only works with a live PUDL DB.") + demand_hourly_pa_ferc714 = pudl_out_orig.__getattribute__(df_name)() + _ = demand_hourly_pa_ferc714.pipe( + pv.check_min_rows, expected_rows=expected_rows, margin=0.0, df_name=df_name + ).pipe(pv.check_max_rows, expected_rows=expected_rows, margin=0.0, df_name=df_name) + + logger.info("Checking the consistency of the year in the multiple date columns.") mismatched_report_years = demand_hourly_pa_ferc714[ ( demand_hourly_pa_ferc714.utc_datetime.dt.year From 095d31bdf34ca12ca86f5f5b69f3a4b0479968d3 Mon Sep 17 00:00:00 2001 From: Christina Gosnell Date: Tue, 7 Nov 2023 16:55:58 -0500 Subject: [PATCH 42/44] idk exactly why the "nan"s began existing but this fixes it --- src/pudl/analysis/classify_plants_ferc1.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pudl/analysis/classify_plants_ferc1.py b/src/pudl/analysis/classify_plants_ferc1.py index 1a0f2835f6..68393c0699 100644 --- a/src/pudl/analysis/classify_plants_ferc1.py +++ b/src/pudl/analysis/classify_plants_ferc1.py @@ -546,7 +546,7 @@ def revert_filled_in_string_nulls(df: pd.DataFrame) -> pd.DataFrame: if col in df.columns: # the replace to_replace={column_name: {"", pd.NA}} mysteriously doesn't work. df[col] = df[col].replace( - to_replace=[""], + to_replace=["", "nan"], value=pd.NA, ) return df From 14e6bc8e6909e5f52a0cbd27bba2bc54f875afec Mon Sep 17 00:00:00 2001 From: Christina Gosnell Date: Tue, 7 Nov 2023 18:00:58 -0500 Subject: [PATCH 43/44] revert the replace of "nan" by stopping introducing them! plus some light clean up --- src/pudl/analysis/classify_plants_ferc1.py | 14 +++++++++----- src/pudl/output/ferc1.py | 4 ---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/pudl/analysis/classify_plants_ferc1.py b/src/pudl/analysis/classify_plants_ferc1.py index 68393c0699..ef6f800aa6 100644 --- a/src/pudl/analysis/classify_plants_ferc1.py +++ b/src/pudl/analysis/classify_plants_ferc1.py @@ -546,7 +546,7 @@ def revert_filled_in_string_nulls(df: pd.DataFrame) -> pd.DataFrame: if col in df.columns: # the replace to_replace={column_name: {"", pd.NA}} mysteriously doesn't work. df[col] = df[col].replace( - to_replace=["", "nan"], + to_replace=[""], value=pd.NA, ) return df @@ -654,9 +654,11 @@ def fuel_by_plant_ferc1( ] # Ensure that the dataframe we've gotten has all the information we need: - for col in keep_cols: - if col not in fuel_df.columns: - raise AssertionError(f"Required column {col} not found in input fuel_df.") + missing_cols = [col for col in keep_cols if col not in fuel_df.columns] + if missing_cols: + raise AssertionError( + f"Required columns not found in input fuel_df: {missing_cols}" + ) # Calculate per-fuel derived values and add them to the DataFrame df = ( @@ -679,7 +681,8 @@ def fuel_by_plant_ferc1( "plant_name_ferc1", "report_year", "fuel_type_code_pudl", - ] + ], + observed=True, ) .sum() .reset_index() @@ -732,6 +735,7 @@ def fuel_by_plant_ferc1( ).reset_index() # Label each plant-year record by primary fuel: + df.loc[:, ["primary_fuel_by_cost", "primary_fuel_by_mmbtu"]] = pd.NA for fuel_str in fuel_categories: try: mmbtu_mask = df[f"{fuel_str}_fraction_mmbtu"] > thresh diff --git a/src/pudl/output/ferc1.py b/src/pudl/output/ferc1.py index fe11acb346..5ed3551f3e 100644 --- a/src/pudl/output/ferc1.py +++ b/src/pudl/output/ferc1.py @@ -810,10 +810,6 @@ def drop_other_fuel_types(df): return df[df.fuel_type_code_pudl != "other"].copy() thresh = context.op_config["thresh"] - # The existing function expects `fuel_type_code_pudl` to be an object, rather than - # a category. This is a legacy of pre-dagster code, and we convert here to prevent - # further retooling in the code-base. - fuel_ferc1["fuel_type_code_pudl"] = fuel_ferc1["fuel_type_code_pudl"].astype(str) fuel_categories = list( pudl.transform.ferc1.FuelFerc1TableTransformer() From b7533cfbff5ff8538cab5208e7fde1b90c52132e Mon Sep 17 00:00:00 2001 From: Christina Gosnell Date: Wed, 8 Nov 2023 10:23:14 -0500 Subject: [PATCH 44/44] REALLY REALLY its a nullable string --- src/pudl/analysis/classify_plants_ferc1.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pudl/analysis/classify_plants_ferc1.py b/src/pudl/analysis/classify_plants_ferc1.py index ef6f800aa6..9a8e6a1096 100644 --- a/src/pudl/analysis/classify_plants_ferc1.py +++ b/src/pudl/analysis/classify_plants_ferc1.py @@ -736,6 +736,12 @@ def fuel_by_plant_ferc1( # Label each plant-year record by primary fuel: df.loc[:, ["primary_fuel_by_cost", "primary_fuel_by_mmbtu"]] = pd.NA + df = df.astype( + { + "primary_fuel_by_cost": pd.StringDtype(), + "primary_fuel_by_mmbtu": pd.StringDtype(), + } + ) for fuel_str in fuel_categories: try: mmbtu_mask = df[f"{fuel_str}_fraction_mmbtu"] > thresh