Source code for pudl.metadata.resources.eia923
"""Definitions of data tables primarily coming from EIA-923."""
from typing import Any
from pudl.metadata.resource_helpers import (
inherits_harvested_values_details,
merge_descriptions,
)
[docs]
TABLE_DESCRIPTIONS: dict[str, dict[str, Any]] = {
"_core_eia923__yearly_fgd_operation_maintenance": {
"additional_summary_text": "flue gas desulfurization (FGD) operation and maintenance expenses at generation facilities.",
"additional_source_text": "(Schedule 8C)",
"usage_warnings": ["irregular_years"],
"additional_details_text": (
"""From 2008-2011 this table also reported operational
characteristics that are now reported in 923 Air Emissions Control Info.
Note: This table has been cleaned, but not harvested with other EIA 923 or 860 data.
The same variables present in this table may show up in other _core tables in other
years. Once this table has been harvested, it will be removed from the PUDL database."""
),
},
"_core_eia923__monthly_cooling_system_information": {
"additional_summary_text": "cooling system information at generation facilities - mainly water volumes and temperatures.",
"additional_source_text": "(Schedule 8D)",
"usage_warnings": ["irregular_years"],
"additional_details_text": (
"""In 2008 and 2009, EIA only reports annual averages, but in later years all data is monthly.
Note: This table has been cleaned, but not harvested with other EIA 923 or 860
data. The same variables present in this table may show up in other _core
tables in other years. Once this table has been harvested, it will be removed
from the PUDL database."""
),
},
"core_eia923__monthly_boiler_fuel": {
"additional_summary_text": "boiler fuel consumption and emissions.",
"additional_source_text": "(Schedule 3)",
"usage_warnings": [
"month_as_date",
{
"type": "custom",
"description": "A small number of respondents only report annual fuel consumption, and all of it is reported in December.",
},
],
"additional_details_text": (
"""Reports the quantity of each type of fuel consumed by each boiler on a monthly basis, as
well as the sulfur and ash content of those fuels. Fuel quantity is reported in standard
EIA fuel units (tons, barrels, Mcf). Heat content per unit of fuel is also reported,
making this table useful for calculating the thermal efficiency (heat rate) of various
generation units.
This table provides better coverage of the entire fleet of generators than the
``core_eia923__monthly_generation_fuel`` table, but the fuel consumption reported here is not directly
associated with a generator. This complicates the heat rate calculation, since the
associations between individual boilers and generators are incomplete and can be
complex."""
),
},
"core_eia923__fuel_receipts_costs": {
"additional_summary_text": "Individual fuel deliveries to power plants, organized by fuel type and supplier.",
"additional_source_text": "(Schedule 2 - Part A)",
"usage_warnings": [
"month_as_date",
"redacted_values",
{
"type": "custom",
"description": "Time of fuel deliveries is not necessarily connected with time of fuel consumption.",
},
],
"additional_primary_key_text": "Each record describes an individual fuel delivery. There can be multiple deliveries of the same type of fuel from the same supplier to the same plant in a single month, so the table has no natural primary key.",
"additional_details_text": (
"""There can be a significant delay between the receipt of fuel and its consumption, so
using this table to infer monthly attributes associated with power generation may not be
entirely accurate. However, this is the most granular data we have describing fuel
costs, and we use it in calculating the marginal cost of electricity for individual
generation units.
Under some circumstances utilities are allowed to treat the price of fuel as proprietary
business data, meaning it is redacted from the publicly available spreadsheets. It's
still reported to EIA and influences the aggregated (state, region, annual, etc.) fuel
prices they publish. From 2009-2021 about 1/3 of all prices are redacted. The missing
data is not randomly distributed. Deregulated markets dominated by merchant generators
(independent power producers) redact much more data, and natural gas is by far the most
likely fuel to have its price redacted. This means, for instance, that the entire
Northeastern US reports essentially no fine-grained data about its natural gas prices.
Additional data which we haven't yet integrated is available in a similar format from
2002-2008 via the EIA-423, and going back as far as 1972 from the FERC-423."""
),
},
"out_eia923__aggregated_fuel_receipts_costs": {
"additional_summary_text": "fuel deliveries to power plants aggregated by plant, fuel type, and time period.",
"additional_source_text": "(Schedule 2 - Part A)",
"usage_warnings": [
"month_as_date",
"estimated_values",
"redacted_values",
{
"type": "custom",
"description": "Time of fuel deliveries is not necessarily connected with time of fuel consumption.",
},
],
"additional_details_text": (
"""This table is an aggregation of the more detailed data in the
:ref:`core_eia923__fuel_receipts_costs` table. It provides a tidy timeseries
of deliveries by fuel type for each plant. However, not all values in the
original table can be aggregated meaningfully, so this table contains only a
subset of the source table columns -- primarily numerical values and a
handful of categorical variables, plus additional attributes that are
constant within each plant-fuel-time period grouping and associated with the
plant or utility. When aggregating numerical values any sum that contains an
NA value is treated as NA."""
),
},
"core_eia923__monthly_generation": {
"additional_summary_text": "net electricity generated by power plant generators.",
"additional_source_text": "(Schedule 3)",
"usage_warnings": [
"month_as_date",
"incomplete_id_coverage",
"low_coverage",
{
"type": "custom",
"description": "A small number of respondents only report annual fuel consumption, and all of it is reported in December.",
},
],
"additional_details_text": (
"""This is the most granular information we have about how much electricity individual
generators are producing, but only about half of all the generation reported in the
``core_eia923__monthly_generation_fuel`` appears in this table due to the different reporting
requirements imposed on different types and sizes of generators.
Whenever possible, we use this generator-level net generation to estimate the heat rates
of generation units and the marginal cost of electricity on a per-generator basis, but
those calculations depend on plant-level fuel costs and sometimes uncertain or
incomplete boiler-generator associations."""
),
},
"core_eia923__monthly_generation_fuel": {
"additional_summary_text": "generation and fuel consumption by fuel and prime mover.",
"additional_source_text": "(Schedule 3)",
"usage_warnings": [
"month_as_date",
{
"type": "custom",
"description": "A small number of respondents only report annual fuel consumption, and all of it is reported in December.",
},
],
"additional_details_text": (
"""This data can't be easily linked to individual boilers, generators, and
generation units, but it is provides the most complete coverage
of fuel consumption and electricity generation for the entire generation fleet. We use
the primary fuels and prime movers reported for each generator along with their
capacities to attribute fuel consumption and generation when it isn't directly reported
in the ``core_eia923__monthly_generation`` and ``core_eia923__monthly_boiler_fuel`` tables in order to calculate
capacity factors, heat rates, and the marginal cost of electricity.
The table makes a distinction between all fuel consumed and fuel consumed for
electricity generation because some units are also combined heat and power (CHP) units,
and also provide high temperature process heat at the expense of net electricity
generation."""
),
},
"core_eia923__monthly_generation_fuel_nuclear": {
"additional_summary_text": "generation and fuel consumption of nuclear generation units by fuel and prime mover.",
"additional_source_text": "(Schedule 3)",
"usage_warnings": [
"month_as_date",
{
"type": "custom",
"description": "A small number of respondents only report annual fuel consumption, and all of it is reported in December.",
},
],
"additional_details_text": (
"""This data is originally reported
alongside similar information for fossil fuel plants, but the nuclear data is reported
by (nuclear) generation unit rather than fuel type and prime mover, and so has a
different primary key."""
),
},
"generation_fuel_combined_eia923": {
"additional_summary_text": "generation and fuel consumption of all generation units.",
"additional_source_text": "(Schedule 3)",
"usage_warnings": [
"month_as_date",
{
"type": "custom",
"description": "A small number of respondents only report annual fuel consumption, and all of it is reported in December.",
},
],
"additional_details_text": (
"""Denormalized, combined data from the ``core_eia923__monthly_generation_fuel`` and
``core_eia923__monthly_generation_fuel_nuclear`` with nuclear generation aggregated from the nuclear
generation unit level up to the plant prime mover level, so as to be compatible with
fossil fuel generation data.
This data can't be easily linked to individual boilers, generators, and
generation units, but it is provides the most complete coverage
of fuel consumption and electricity generation for the entire generation fleet. We use
the primary fuels and prime movers reported for each generator along with their
capacities to attribute fuel consumption and generation when it isn't directly reported
in the ``core_eia923__monthly_generation`` and ``core_eia923__monthly_boiler_fuel`` tables in order to calculate
capacity factors, heat rates, and the marginal cost of electricity.
The table makes a distinction between all fuel consumed and fuel consumed for
electricity generation because some units are also combined heat and power (CHP) units,
and also provide high temperature process heat at the expense of net electricity
generation.
"""
),
},
}
[docs]
RESOURCE_METADATA: dict[str, dict[str, Any]] = {
"core_eia923__monthly_boiler_fuel": {
"description": TABLE_DESCRIPTIONS["core_eia923__monthly_boiler_fuel"],
"schema": {
"fields": [
"plant_id_eia",
"boiler_id",
"energy_source_code",
"prime_mover_code",
"fuel_type_code_pudl",
"report_date",
"fuel_consumed_units",
"fuel_mmbtu_per_unit",
"sulfur_content_pct",
"ash_content_pct",
"data_maturity",
],
"primary_key": [
"plant_id_eia",
"boiler_id",
"energy_source_code",
"prime_mover_code",
"report_date",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "eia923",
},
"out_eia923__boiler_fuel": {
"description": merge_descriptions(
TABLE_DESCRIPTIONS["core_eia923__monthly_boiler_fuel"],
{
"table_type_code": "timeseries",
"timeseries_resolution_code": "monthly",
"additional_details_text": inherits_harvested_values_details(
"plants and utilities"
),
"usage_warnings": ["harvested"],
},
),
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"plant_id_pudl",
"plant_name_eia",
"utility_id_eia",
"utility_id_pudl",
"utility_name_eia",
"boiler_id",
"unit_id_pudl",
"energy_source_code",
"prime_mover_code",
"fuel_type_code_pudl",
"fuel_consumed_units",
"fuel_mmbtu_per_unit",
"fuel_consumed_mmbtu",
"sulfur_content_pct",
"ash_content_pct",
"data_maturity",
],
"primary_key": [
"plant_id_eia",
"boiler_id",
"energy_source_code",
"prime_mover_code",
"report_date",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "outputs",
},
"out_eia923__yearly_boiler_fuel": {
"description": merge_descriptions(
TABLE_DESCRIPTIONS["core_eia923__monthly_boiler_fuel"],
{
"additional_details_text": inherits_harvested_values_details(
"plants and utilities"
),
"usage_warnings": ["harvested"],
},
),
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"plant_id_pudl",
"plant_name_eia",
"utility_id_eia",
"utility_id_pudl",
"utility_name_eia",
"boiler_id",
"unit_id_pudl",
"energy_source_code",
"prime_mover_code",
"fuel_type_code_pudl",
"fuel_consumed_units",
"fuel_mmbtu_per_unit",
"fuel_consumed_mmbtu",
"sulfur_content_pct",
"ash_content_pct",
"data_maturity",
],
"primary_key": [
"plant_id_eia",
"boiler_id",
"energy_source_code",
"prime_mover_code",
"report_date",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "outputs",
},
"out_eia923__monthly_boiler_fuel": {
"description": merge_descriptions(
TABLE_DESCRIPTIONS["core_eia923__monthly_boiler_fuel"],
{
"additional_details_text": inherits_harvested_values_details(
"plants and utilities"
),
"usage_warnings": ["harvested"],
},
),
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"plant_id_pudl",
"plant_name_eia",
"utility_id_eia",
"utility_id_pudl",
"utility_name_eia",
"boiler_id",
"unit_id_pudl",
"energy_source_code",
"prime_mover_code",
"fuel_type_code_pudl",
"fuel_consumed_units",
"fuel_mmbtu_per_unit",
"fuel_consumed_mmbtu",
"sulfur_content_pct",
"ash_content_pct",
"data_maturity",
],
"primary_key": [
"plant_id_eia",
"boiler_id",
"energy_source_code",
"prime_mover_code",
"report_date",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "outputs",
},
"core_eia923__entity_coalmine": {
"description": {
"additional_summary_text": "coal mines reporting deliveries in the Fuel Receipts and Costs table.",
"additional_source_text": "(Schedule 2, Part C)",
"usage_warnings": [
{
"type": "custom",
"description": "Mine ID's are not as well defined and consistent as other EIA ID's.",
}
],
"additional_details_text": (
"""This table is produced during the transformation of fuel delivery data, in order to
produce a better normalized database. The same coalmines report many individual
deliveries, and repeating their attributes many times in the fuel receipts and costs
table is duplicative. Unfortunately the coalmine attributes do not generally use a
controlled vocabulary or well defined IDs and so in practice there are many distinct
records in this table that correspond to the same mines in reality.
We have not yet taken the time to rigorously clean this data, but it could be linked
with both Mining Safety and Health Administration (MSHA) and USGS data to provide more
insight into where coal is coming from, and what the employment and geological context
is for those supplies."""
),
},
"schema": {
"fields": [
"mine_id_pudl",
"mine_name",
"mine_type_code",
"state",
"county_id_fips",
"mine_id_msha",
"data_maturity",
],
"primary_key": ["mine_id_pudl"],
"foreign_key_rules": {"fields": [["mine_id_pudl"]]},
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "eia923",
},
"core_eia923__fuel_receipts_costs": {
"description": TABLE_DESCRIPTIONS["core_eia923__fuel_receipts_costs"],
"schema": {
"fields": [
"plant_id_eia",
"report_date",
"contract_type_code",
"contract_expiration_date",
"energy_source_code",
"fuel_type_code_pudl",
"fuel_group_code",
"mine_id_pudl",
"supplier_name",
"fuel_received_units",
"fuel_mmbtu_per_unit",
"sulfur_content_pct",
"ash_content_pct",
"mercury_content_ppm",
"fuel_cost_per_mmbtu",
"primary_transportation_mode_code",
"secondary_transportation_mode_code",
"natural_gas_transport_code",
"natural_gas_delivery_contract_type_code",
"moisture_content_pct",
"chlorine_content_ppm",
"data_maturity",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "eia923",
},
"out_eia923__fuel_receipts_costs": {
"description": merge_descriptions(
TABLE_DESCRIPTIONS["core_eia923__fuel_receipts_costs"],
{
"additional_details_text": inherits_harvested_values_details(
"plants and utilities"
),
"usage_warnings": ["harvested", "estimated_values"],
},
),
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"plant_id_pudl",
"plant_name_eia",
"utility_id_eia",
"utility_id_pudl",
"utility_name_eia",
"state",
"contract_type_code",
"contract_expiration_date",
"energy_source_code",
"fuel_type_code_pudl",
"fuel_group_code",
"supplier_name",
"fuel_received_units",
"fuel_mmbtu_per_unit",
"fuel_cost_per_mmbtu",
"bulk_agg_fuel_cost_per_mmbtu",
"fuel_consumed_mmbtu",
"total_fuel_cost",
"fuel_cost_per_mmbtu_source",
"sulfur_content_pct",
"ash_content_pct",
"mercury_content_ppm",
"primary_transportation_mode_code",
"secondary_transportation_mode_code",
"natural_gas_transport_code",
"natural_gas_delivery_contract_type_code",
"moisture_content_pct",
"chlorine_content_ppm",
"data_maturity",
"mine_id_msha",
"mine_name",
"mine_state",
"coalmine_county_id_fips",
"mine_type_code",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "outputs",
},
"out_eia923__yearly_fuel_receipts_costs": {
"description": merge_descriptions(
TABLE_DESCRIPTIONS["out_eia923__aggregated_fuel_receipts_costs"],
{
"additional_details_text": inherits_harvested_values_details(
"plants and utilities"
),
"usage_warnings": ["harvested"],
},
),
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"plant_id_pudl",
"plant_name_eia",
"utility_id_eia",
"utility_id_pudl",
"utility_name_eia",
"state",
"fuel_type_code_pudl",
"fuel_received_units",
"fuel_mmbtu_per_unit",
"fuel_cost_per_mmbtu",
"fuel_consumed_mmbtu",
"total_fuel_cost",
"fuel_cost_per_mmbtu_source",
"sulfur_content_pct",
"ash_content_pct",
"mercury_content_ppm",
"moisture_content_pct",
"chlorine_content_ppm",
"data_maturity",
],
"primary_key": [
"plant_id_eia",
"fuel_type_code_pudl",
"report_date",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "outputs",
},
"out_eia923__monthly_fuel_receipts_costs": {
"description": merge_descriptions(
TABLE_DESCRIPTIONS["out_eia923__aggregated_fuel_receipts_costs"],
{
"additional_details_text": inherits_harvested_values_details(
"plants and utilities"
),
"usage_warnings": ["harvested"],
},
),
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"plant_id_pudl",
"plant_name_eia",
"utility_id_eia",
"utility_id_pudl",
"utility_name_eia",
"state",
"fuel_type_code_pudl",
"fuel_received_units",
"fuel_mmbtu_per_unit",
"fuel_cost_per_mmbtu",
"fuel_consumed_mmbtu",
"total_fuel_cost",
"fuel_cost_per_mmbtu_source",
"sulfur_content_pct",
"ash_content_pct",
"mercury_content_ppm",
"moisture_content_pct",
"chlorine_content_ppm",
"data_maturity",
],
"primary_key": [
"plant_id_eia",
"fuel_type_code_pudl",
"report_date",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "outputs",
},
"core_eia923__monthly_generation": {
"description": TABLE_DESCRIPTIONS["core_eia923__monthly_generation"],
"schema": {
"fields": [
"plant_id_eia",
"generator_id",
"report_date",
"net_generation_mwh",
"data_maturity",
],
"primary_key": ["plant_id_eia", "generator_id", "report_date"],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "eia923",
},
"out_eia923__generation": {
"description": merge_descriptions(
TABLE_DESCRIPTIONS["core_eia923__monthly_generation"],
{
"table_type_code": "timeseries",
"timeseries_resolution_code": "monthly",
"additional_details_text": inherits_harvested_values_details(
"plants and utilities"
),
"usage_warnings": ["harvested"],
},
),
# TODO: Remove this table in favor of out_eia923__monthly_generation. See #2857
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"plant_id_pudl",
"plant_name_eia",
"utility_id_eia",
"utility_id_pudl",
"utility_name_eia",
"generator_id",
"unit_id_pudl",
"net_generation_mwh",
"data_maturity",
],
"primary_key": ["plant_id_eia", "generator_id", "report_date"],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "outputs",
},
"out_eia923__monthly_generation": {
"description": merge_descriptions(
TABLE_DESCRIPTIONS["core_eia923__monthly_generation"],
{
"additional_details_text": inherits_harvested_values_details(
"plants and utilities"
),
"usage_warnings": ["harvested"],
},
),
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"plant_id_pudl",
"plant_name_eia",
"utility_id_eia",
"utility_id_pudl",
"utility_name_eia",
"generator_id",
"unit_id_pudl",
"net_generation_mwh",
"data_maturity",
],
"primary_key": ["plant_id_eia", "generator_id", "report_date"],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "outputs",
},
"out_eia923__yearly_generation": {
"description": merge_descriptions(
TABLE_DESCRIPTIONS["core_eia923__monthly_generation"],
{
"additional_details_text": inherits_harvested_values_details(
"plants and utilities"
),
"usage_warnings": ["harvested"],
},
),
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"plant_id_pudl",
"plant_name_eia",
"utility_id_eia",
"utility_id_pudl",
"utility_name_eia",
"generator_id",
"unit_id_pudl",
"net_generation_mwh",
"data_maturity",
],
"primary_key": ["plant_id_eia", "generator_id", "report_date"],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "outputs",
},
"core_eia923__monthly_generation_fuel": {
"description": TABLE_DESCRIPTIONS["core_eia923__monthly_generation_fuel"],
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"energy_source_code",
"fuel_type_code_pudl",
"fuel_type_code_agg",
"prime_mover_code",
"fuel_consumed_units",
"fuel_consumed_for_electricity_units",
"fuel_mmbtu_per_unit",
"fuel_consumed_mmbtu",
"fuel_consumed_for_electricity_mmbtu",
"net_generation_mwh",
"data_maturity",
],
"primary_key": [
"plant_id_eia",
"report_date",
"prime_mover_code",
"energy_source_code",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "eia923",
},
"out_eia923__generation_fuel_combined": {
"description": merge_descriptions(
TABLE_DESCRIPTIONS["generation_fuel_combined_eia923"],
{
"table_type_code": "timeseries",
"timeseries_resolution_code": "monthly",
"additional_details_text": inherits_harvested_values_details(
"plants and utilities"
),
"usage_warnings": ["harvested"],
},
),
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"plant_id_pudl",
"plant_name_eia",
"utility_id_eia",
"utility_id_pudl",
"utility_name_eia",
"energy_source_code",
"fuel_type_code_pudl",
"fuel_type_code_agg",
"prime_mover_code",
"fuel_consumed_units",
"fuel_consumed_for_electricity_units",
"fuel_mmbtu_per_unit",
"fuel_consumed_mmbtu",
"fuel_consumed_for_electricity_mmbtu",
"net_generation_mwh",
"data_maturity",
],
"primary_key": [
"plant_id_eia",
"report_date",
"prime_mover_code",
"energy_source_code",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "outputs",
},
"out_eia923__yearly_generation_fuel_combined": {
"description": merge_descriptions(
TABLE_DESCRIPTIONS["generation_fuel_combined_eia923"],
{
"additional_details_text": inherits_harvested_values_details(
"plants and utilities"
),
"usage_warnings": ["harvested"],
},
),
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"plant_id_pudl",
"plant_name_eia",
"utility_id_eia",
"utility_id_pudl",
"utility_name_eia",
"energy_source_code",
"fuel_type_code_pudl",
"prime_mover_code",
"fuel_consumed_units",
"fuel_consumed_for_electricity_units",
"fuel_mmbtu_per_unit",
"fuel_consumed_mmbtu",
"fuel_consumed_for_electricity_mmbtu",
"net_generation_mwh",
"data_maturity",
],
"primary_key": [
"plant_id_eia",
"report_date",
"prime_mover_code",
"energy_source_code",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "outputs",
},
"out_eia923__monthly_generation_fuel_combined": {
"description": merge_descriptions(
TABLE_DESCRIPTIONS["generation_fuel_combined_eia923"],
{
"additional_details_text": inherits_harvested_values_details(
"plants and utilities"
),
"usage_warnings": ["harvested"],
},
),
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"plant_id_pudl",
"plant_name_eia",
"utility_id_eia",
"utility_id_pudl",
"utility_name_eia",
"energy_source_code",
"fuel_type_code_pudl",
"prime_mover_code",
"fuel_consumed_units",
"fuel_consumed_for_electricity_units",
"fuel_mmbtu_per_unit",
"fuel_consumed_mmbtu",
"fuel_consumed_for_electricity_mmbtu",
"net_generation_mwh",
"data_maturity",
],
"primary_key": [
"plant_id_eia",
"report_date",
"prime_mover_code",
"energy_source_code",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "outputs",
},
"core_eia923__monthly_generation_fuel_nuclear": {
"description": TABLE_DESCRIPTIONS[
"core_eia923__monthly_generation_fuel_nuclear"
],
"schema": {
"fields": [
"plant_id_eia",
"report_date",
"nuclear_unit_id",
"energy_source_code",
"fuel_type_code_pudl",
"fuel_type_code_agg",
"prime_mover_code",
"fuel_consumed_units",
"fuel_consumed_for_electricity_units",
"fuel_mmbtu_per_unit",
"fuel_consumed_mmbtu",
"fuel_consumed_for_electricity_mmbtu",
"net_generation_mwh",
"data_maturity",
],
"primary_key": [
"plant_id_eia",
"report_date",
"nuclear_unit_id",
"energy_source_code",
"prime_mover_code",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "eia923",
},
"_core_eia923__monthly_cooling_system_information": {
"description": TABLE_DESCRIPTIONS[
"_core_eia923__monthly_cooling_system_information"
],
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"cooling_id_eia",
"cooling_status_code",
"cooling_type",
"monthly_total_cooling_hours_in_service",
"flow_rate_method",
"temperature_method",
"annual_maximum_intake_summer_temperature_fahrenheit",
"annual_maximum_intake_winter_temperature_fahrenheit",
"monthly_average_intake_temperature_fahrenheit",
"monthly_maximum_intake_temperature_fahrenheit",
"annual_maximum_outlet_summer_temperature_fahrenheit",
"annual_maximum_outlet_winter_temperature_fahrenheit",
"monthly_average_discharge_temperature_fahrenheit",
"monthly_maximum_discharge_temperature_fahrenheit",
"annual_average_consumption_rate_gallons_per_minute",
"monthly_average_consumption_rate_gallons_per_minute",
"monthly_total_consumption_volume_gallons",
"annual_average_discharge_rate_gallons_per_minute",
"monthly_average_discharge_rate_gallons_per_minute",
"monthly_total_discharge_volume_gallons",
"monthly_average_diversion_rate_gallons_per_minute",
"monthly_total_diversion_volume_gallons",
"annual_average_withdrawal_rate_gallons_per_minute",
"monthly_average_withdrawal_rate_gallons_per_minute",
"monthly_total_withdrawal_volume_gallons",
"annual_total_chlorine_lbs",
"monthly_total_chlorine_lbs",
"data_maturity",
],
"primary_key": [
"plant_id_eia",
"report_date",
"cooling_id_eia",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "eia923",
},
"_core_eia923__yearly_fgd_operation_maintenance": {
"description": TABLE_DESCRIPTIONS[
"_core_eia923__yearly_fgd_operation_maintenance"
],
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"so2_control_id_eia",
"opex_fgd_feed_materials_chemical",
"opex_fgd_labor_supervision",
"opex_fgd_land_acquisition",
"opex_fgd_maintenance_material_other",
"opex_fgd_waste_disposal",
"opex_fgd_total_cost",
"fgd_control_flag",
"fgd_operational_status_code",
"fgd_hours_in_service",
"fgd_electricity_consumption_mwh",
"fgd_sorbent_consumption_tons",
"so2_removal_efficiency_tested",
"so2_removal_efficiency_annual",
"so2_test_date",
"data_maturity",
],
"primary_key": [
"plant_id_eia",
"report_date",
"so2_control_id_eia",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "eia923",
},
"core_eia923__monthly_energy_storage": {
"description": {
"additional_summary_text": """energy consumed and discharged ("generated") by energy storage units.""",
"additional_source_text": "(Schedule 3)",
"usage_warnings": ["month_as_date"],
"additional_details_text": (
"""The total MWh discharged from the energy storage unit during the
reporting period is the gross generation and the difference between gross generation
and consumption is the net generation."""
),
},
"schema": {
"fields": [
"plant_id_eia",
"report_date",
"prime_mover_code",
"energy_source_code",
"data_maturity",
"fuel_units",
"fuel_consumed_for_electricity_units",
"fuel_consumed_units",
"gross_generation_mwh",
"net_generation_mwh",
],
"primary_key": [
"plant_id_eia",
"report_date",
"prime_mover_code",
"energy_source_code",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "eia923",
},
"_core_eia923__yearly_byproduct_disposition": {
"description": {
"additional_summary_text": (
"by-products reported by thermoelectric power "
"plants with total steam turbine capacity of 100 megawatts or greater."
),
"usage_warnings": ["experimental_wip"],
"additional_source_text": "(Schedule 8A)",
"additional_details_text": (
"All by-products other than steam sales are reported in thousand tons and "
"are rounded to whole numbers. Steam sales are reported in MMBTu."
),
},
"schema": {
"fields": [
"report_date",
"plant_id_eia",
"byproduct_description",
"byproduct_units",
"disposal_landfill_units",
"disposal_offsite_units",
"disposal_ponds_units",
"sold_units",
"stored_offsite_units",
"stored_onsite_units",
"used_offsite_units",
"used_onsite_units",
"total_disposal_units",
"no_byproducts_to_report",
"data_maturity",
],
"primary_key": [
"plant_id_eia",
"report_date",
"byproduct_description",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "eia923",
},
"_core_eia923__yearly_byproduct_expenses_and_revenues": {
"description": {
"additional_summary_text": (
"financial information related to combustion by-products reported by "
"thermoelectric power plants with total steam turbine capacity of 100 "
"megawatts or greater and that produced combustion by-products during the reporting year."
),
"usage_warnings": ["experimental_wip"],
"additional_source_text": "(Schedule 8B)",
"additional_details_text": (
"Cost data must be entered for all entries on Schedule 8A. "
"Financial information includes operational and maintenance expenditures (opex), "
"capital expenditures (capex), and by-products sales revenue."
),
},
"schema": {
"fields": [
"plant_id_eia",
"report_date",
"data_maturity",
"capex_air_abatement",
"capex_other_abatement",
"capex_solid_waste",
"capex_water_abatement",
"opex_bottom_ash_collection",
"opex_bottom_ash_disposal",
"opex_bottom_ash_other",
"opex_fgd_byproduct_collection",
"opex_fgd_byproduct_disposal",
"opex_fgd_byproduct_other",
"opex_fly_ash_collection",
"opex_fly_ash_disposal",
"opex_fly_ash_other",
"opex_other_abatement_collection",
"opex_other_abatement_disposal",
"opex_other_abatement_other",
"opex_total_collection_abatement",
"opex_total_disposal_abatement",
"opex_total_other_abatement",
"opex_water_abatement_collection",
"opex_water_abatement_disposal",
"opex_water_abatement_other",
"revenues_bottom_ash",
"revenues_fgd_byproducts",
"revenues_fly_ash",
"revenues_fly_bottom_ash_intermingled",
"revenues_other_byproducts",
"revenues_total_byproduct",
],
"primary_key": [
"plant_id_eia",
"report_date",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "eia923",
},
"_core_eia923__yearly_emissions_control": {
"description": {
"additional_summary_text": (
"Actual rate and removal efficiency for air emissions reported by "
"thermoelectric or combined-cycle power plants with a total steam turbine capacity "
"greater than or equal to 10 megawatts."
),
"usage_warnings": ["experimental_wip"],
"additional_source_text": "(Schedule 8C)",
"additional_primary_key_text": (
"This table is not yet normalized, and contains information about "
"several different types of emissions control equipment, each of which "
"has its own ID, and not all of which are present at every plant. As "
"a result there is currently no unique, non-null primary key. "
"Conceptually, the primary key should consist of plant_id_eia, "
"report_date, mercury_control_id_eia, nox_control_id_eia, "
"so2_control_id_eia, and particulate_control_id_eia. In practice many "
"records have NULL values for all of the control equipment IDs."
),
"additional_details_text": (
"In the raw data, the so2_test_date and particulate_test_date columns "
"contained a wide variety of non-standard date formats. "
"They have been standardized to ISO-8601 (YYYY-MM-DD) where "
"possible. Missing days and months have been filled in with 01. A "
"handful of manual spot-fixes have been applied to particularly "
"strange formats. Two-digit years have been assumed to fall between "
"1950 and the last year observed in the report_date column."
),
},
"schema": {
"fields": [
"plant_id_eia",
"report_date",
"acid_gas_removal_efficiency",
"annual_nox_emission_rate_lb_per_mmbtu",
"data_maturity",
"environmental_equipment_name",
"fgd_electricity_consumption_mwh",
"fgd_sorbent_consumption_tons",
"hours_in_service",
"mercury_control_id_eia",
"mercury_emission_rate_lb_per_trillion_btu",
"mercury_removal_efficiency",
"nox_control_id_eia",
"operational_status",
"ozone_season_nox_emission_rate_lb_per_mmbtu",
"particulate_control_id_eia",
"particulate_emission_rate_lb_per_mmbtu",
"particulate_removal_efficiency_tested",
"particulate_removal_efficiency_annual",
"particulate_test_date",
"so2_control_id_eia",
"so2_removal_efficiency_tested",
"so2_removal_efficiency_annual",
"so2_test_date",
],
},
"field_namespace": "eia",
"sources": ["eia923"],
"etl_group": "eia923",
},
}
"""EIA-923 resource attributes organized by PUDL identifier (``resource.name``).
Keys are in alphabetical order.
See :func:`pudl.metadata.helpers.build_foreign_keys` for the expected format of
``foreign_key_rules``.
"""