catalyst-cooperative / pudl

The Public Utility Data Liberation Project provides analysis-ready energy system data to climate advocates, researchers, policymakers, and journalists.
https://catalyst.coop/pudl
MIT License
471 stars 108 forks source link

Create per-plant fuel summary for FERC #251

Closed zaneselvans closed 5 years ago

zaneselvans commented 5 years ago

The FERC fuel and steam plants table are intimately related. Without the plants table, the fuel table is... just not that useful. Additionally, some of the columns in the fuel table are junk -- e.g. the reported fuel units, or the per-unit net generation values (heat rate, fuel cost per kWh) are not meaningful unless applied to the sum of all fuels. Thus, it's possible and helpful to create a simplified summary of the core data in the fuel table for use directly with the plants table.

The fundamental information of interest that comes from the fuel_ferc1 table is:

From those quantities we can also derive:

However, in practice, the units field is a mess. For the most part we are usually discarding the "units" string and assuming standard units based on the different fuel types (tons for coal, mcf for gas, barrels for petroleum) and "correcting" the other quantities based on those assumptions (which isn't always correct).

Having fuel information merged in with the plants table would also provide some very valuable features for inferring which records belong to the same plant (see issue #144) and differentiating between different sub-plant level generation units, since gas and coal units are often reported as separate "plants" to FERC.

It is also very helpful to be able to filter plants based on the primary fuel type of a plant, and having the relative quantities of each fuel available in the plants table would make assigning that "primary" fuel type (or the lack thereof) very easy.

Having the primary fuel types for each plant should also allow us to fill in missing fuel type values sometimes. See #101.

zaneselvans commented 5 years ago

See the pudl.transform.ferc.fuel_by_plant_ferc1() function for how this issue was resolved.