The MOVES National Emission Inventory (NEI) Submissions Quality Assurance (QA) Tool includes scripts to run against onroad and nonroad county database (CDB) submissions for the NEI. The QA report generated by the QA Tool verifies that all table contents meet naming convention, format, data validity, and other checks. The report confirms that each CDB contains the appropriate tables and that the values within those tables are valid. It is very important that the QA Tool be properly run for each submitted CDB.
The QA Tool is run in MOVES via the command line, using Ant, the MOVES dependency manager and command line interface tool. This document includes specific examples on how to do this. For general information on MOVES' command line tools, see CommandLineMOVES.md.
The QA Tool requires that the CDB has already been built using the MOVES County Data Manager and is ready to be checked. The tool will not aid in creating or populating an NEI CDB. The database must be loaded into MariaDB's data folder for the tool to find it.
To keep track of the thousands of CDBs used in the NEI calculations, EPA has established a naming convention for CDBs that differentiate between databases and make automation of running and processing the inputs and outputs from MOVES easier.
The naming convention for each CDB folder has 20 characters. The first 6 characters identify the county, the next 5 indicate the calendar year of the county database, and the last characters indicate the date on which the database was created.
The first 6 characters consist of the letter c
followed by the 5-digit Federal Information Processing Standard (FIPS) code for the county, including a leading zero when necessary. The next 5 characters are the letter y
, followed by a 4-digit calendar year. This calendar year indicates the calendar year of the data contained in the database. A CDB can only contain data from a single calendar year. The last 8 digits, following an underscore character, represent the date on which the database was created in the YYYYMMDD
format.
An example of a CDB name is c26161y2023_20240601
where this CDB names indicates c26161
refers to the county FIPS code (in this case Washtenaw County, Michigan). y2023
refers to the calendar year for the county database and 20240601
identifies the database modification date of June 1, 2024, in YYYYMMDD
format.
To use MOVES' command line tools, first open the Windows command prompt and navigate to the MOVES directory. Then, run the command setenv
. For more information on using MOVES' command line tools, see CommandLineMOVES.md.
The Ant command to run the NEI QA script is onroadNEIQA
, and the Ant command to run the nonroad NEI QA script is nonroadNEIQA
. Note that Ant commands are case sensitive. Inputs to these commands are specified by the following flags:
Flag | Behavior | Examples |
---|---|---|
-Dinput |
There are three types of input allowed: 1. A single input database 2. A comma-separated list of databases, wrapped in quotes 3. A .txt file with a list of databases, one on each line |
1.-Dinput=c99001y2023_20240601 2. -Dinput="c99001y2023_20240601,c99002y2023_20240601" 3. -Dinput=db_list.txt |
-Doutput |
A file to write the QA results to. Accepted formats are: * .xlsx or .xls for spreadsheet output* .csv for comma-separated output* .txt or .tab for tab-separated outputThis input does not need to be wrapped in quotes unless there are spaces or commas in the filename. |
1. -Doutput=QA_Report.xlsx 2. -Doutput="QA Report.csv" 3. -Doutput=QA_Report.txt |
For input option #3 above, databases need to be separated by a new line. The following would be a valid db_list.txt
file:
c99001y2023_20240601
c99002y2023_20240601
Putting everything together, the following are all valid ways of calling the QA scripts:
setenv
ant onroadNEIQA -Dinput=c99001y2023_20240601 -Doutput=QA_Report.xlsx
ant onroadNEIQA -Dinput="c99001y2023_20240601,c99002y2023_20240601" -Doutput=QA_Report.csv
ant onroadNEIQA -Dinput=db_list.txt -Doutput=QA_Report.txt
ant nonroadNEIQA -Dinput=c99001y2023_20240601 -Doutput=QA_Report.xlsx
ant nonroadNEIQA -Dinput="c99001y2023_20240601,c99002y2023_20240601" -Doutput=QA_Report.csv
ant nonroadNEIQA -Dinput=db_list.txt -Doutput="QA Report.txt"
The QA Tool saves its results to the specified output file. If multiple databases are run using the tool, they are all combined into one output file. These results are also saved in a database created by the tool called All_CDB_Checks
. If the tool runs into a problem it can't resolve, it creates a table called qa_checks_log
, so that users can tell how far the script got before the error occurred. There are a few additional tables that are only created if the tool detects overlaps and/or gaps in model year ranges in select tables, as described below.
All_CDB_Checks
and the output file have the following structure:
Field | Type | Description |
---|---|---|
countyID | int(11) | county evaluated in the check |
status | char(20) | Status of the check: Complete, Warning, or Error |
tableName | char(100) | name of the table evaluated in the check |
checkNumber | smallint(6) | number of the check, which can be mapped to specific QA checks in the following sections |
testDescription | char(250) | a short description of the check |
testValue | text | Additional text providing more context for the failed check |
count | int(11) | Number of rows relevant to the check |
dataBaseName | char(100) | name of the input database |
dayID | smallint(6) | dayID which failed the check, if applicable |
fuelFormulationID | int(11) | fuelFormulationID which failed the check, if applicable |
fuelTypeId | smallint(6) | fuelTypeID which failed the check, if applicable |
fuelSubtypeID | smallint(6) | fuelSubTypeID which failed the check, if applicable |
fuelYearID | smallint(6) | fuelYearID which failed the check, if applicable |
hourDayID | smallint(6) | hourDayID which failed the check, if applicable |
hourID | smallint(6) | hourID which failed the check, if applicable |
HPMSVtypeID | smallint(6) | HPMSVtypeID which failed the check, if applicable |
monthGroupID | smallint(6) | monthGroupID which failed the check, if applicable |
monthID | smallint(6) | monthID which failed the check, if applicable |
roadTypeID | smallint(6) | roadTypeID which failed the check, if applicable |
sourceTypeID | smallint(6) | sourceTypeID which failed the check, if applicable |
stateID | smallint(6) | stateID which failed the check, if applicable |
yearID | smallint(6) | yearID which failed the check, if applicable |
zoneID | int(11) | zoneID which failed the check, if applicable |
msgType | char(50) | Type of message: Info, Table Check, or Data Problem |
msgDate | date | date of execution |
msgTime | time | time of execution, to the second |
version | char(8) | version of the MOVES default database used as a reference |
sumKeyID | int(11) | |
sumKeyDescription | char(50) |
qa_checks_log
remains in the input database if the QA Tool ran into a problem. It has the following structure:
Field | Type | Description |
---|---|---|
checkNo | int(11) | check number, which can be mapped to specific checks below |
status | char(20) | Status of the check - OK or otherwise |
version | char(8) | version of the MOVES default database used as a reference |
msgDate | date | date of execution |
msgTime | time | time of execution, to the second |
qa_checks_im
is created if there are overlaps and/or gaps in the IMCoverage
table's begModelYearID
and endModelYearID
columns. It has the following structure:
Field | Type | Description |
---|---|---|
Cpol | int | polProcessID which failed the check |
Ccou | int | countyID which failed the check |
Cyea | int | yearID which failed the check |
Csou | int | sourceTypeID which failed the check |
Cfue | int | fuelTypeID which failed the check |
LENDMY | int | the endModelYearID in the row before the row that failed |
CBEGMY | int | the begModelYearID which failed the check |
CENDMY | int | the endModelYearID which failed the check |
useIMyn | char(1) | the value of useIMyn where the check failed |
Reason | varchar(40) | a description of why the check failed |
qa_checks_had
is created if there are overlaps and/or gaps in the hotellingactivitydistribution
table's beginModelYearID
and endModelYearID
columns. It has the following structure:
Field | Type | Description |
---|---|---|
Czone | int | zoneID which failed the check |
CftID | int | fuelTypeID which failed the check |
CopID | int | opModeID which failed the check |
LENDMY | int | the endModelYearID in the row before the row that failed |
CBEGMY | int | the beginModelYearID which failed the check |
CENDMY | int | the endModelYearID which failed the check |
Reason | varchar(40) | a description of why the check failed |
qa_checks_imyg
is created if there are overlaps and/or gaps in the idlemodelyeargrouping
table's minModelYearID
and maxModelYearID
columns. It has the following structure:
Field | Type | Description |
---|---|---|
CsourceType | int | sourceTypeID which failed the check |
LMaxMY | int | the maxModelYearID in the row before the row that failed |
CMinMY | int | the minModelYearID which failed the check |
CMaxMY | int | the maxModelYearID which failed the check |
Reason | varchar(40) | a description of why the check failed |
qa_checks_tif
is created if there are overlaps and/or gaps in the totalidlefraction
table's minModelYearID
and maxModelYearID
columns. It has the following structure:
Field | Type | Description |
---|---|---|
CsourceType | int | sourceTypeID which failed the check |
Cmonth | int | countyID which failed the check |
Cday | int | yearID which failed the check |
LMaxMY | int | the maxModelYearID in the row before the row that failed |
CMinMY | int | the minModelYearID which failed the check |
CMaxMY | int | the maxModelYearID which failed the check |
Reason | varchar(40) | a description of why the check failed |
Table No. | Check No. | Table | Description | Type | Comment |
---|---|---|---|---|---|
1001 | hpmsvtypeday or hpmsvtypeyear or sourcetypedayvmt or sourcetypeyearvmt | makes sure VMT is supplied correctly (one and only one of the four possible tables is used) | Error | ||
1002 | hpmsvtypeday | records the number of rows | Info | ||
1003 | hpmsvtypeyear | records the number of rows | Info | ||
1004 | sourcetypedayvmt | records the number of rows | Info | ||
1005 | sourcetypeyearvmt | records the number of rows | Info | ||
1006 | starts or startsperday or startsperdaypervehicle | makes sure starts are supplied correctly (either 0 or 1 of the three possible tables are used) | Error | ||
1007 | starts | records the number of rows | Info | ||
1008 | startsperday | records the number of rows | Info | ||
1009 | startsperdaypervehicle | records the number of rows | Info | ||
11 | 1100 | year | table check (indicates that the checks associated with this table have started) | Info | |
1101 | year | checks that isBaseYear is either Y or N | Error | ||
1102 | year | makes sure fuelYearID is the same as yearID | Error | ||
1103 | year | checks for unknown yearID | Error | ||
1104 | year | Checks that the yearID matches the year noted in the CDB name (for example the year ‘2023’ of the CDB c13121y2023_YYYYMMDD ) |
Error | ||
1105 | year | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
12 | 1200 | state | table check (indicates that the checks associated with this table have started) | Info | |
1201 | state | checks for unknown stateID | Error | ||
1202 | state | check for unknown idleRegionID | Error | ||
1203 | state | checks that state has at least 1 row | Error | ||
1204 | state | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
13 | 1300 | county | table check (indicates that the checks associated with this table have started) | Info | |
1301 | county | checks for unknown countyIDs, referencing the default db | Error | ||
1302 | county | Checks that the countyID matches the county noted in the CDB name (for example the county ‘13121’ of the CDB c13121y2023_YYYYMMDD ) |
Error | ||
1303 | county | makes sure altitude column is either L or H | Error | ||
1304 | county | makes sure the GPAFract is between 0 and 1 | Error | ||
1305 | county | makes sure the barometric pressure is between 20 and 33 | Error | ||
1306 | county | checks stateID against the state table | Error | ||
1307 | county | checks that county has at least one row | Error | ||
1308 | county | check for unknown countyTypeID | Error | ||
1309 | county | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
14 | 1400 | zone | table check (indicates that the checks associated with this table have started) | Info | |
1401 | zone | checks countyID against the county table | Error | ||
1402 | zone | makes sure startAllocFactor sums to 1 | Error | ||
1403 | zone | makes sure idleAllocFactor sums to 1 | Error | ||
1404 | zone | makes sure SHPAllocFactor sums to 1 | Error | ||
1405 | zone | checks that zoneID is consistent with countyID (zoneID = countyID * 10) | Error | ||
1406 | zone | checks that zone has at least 1 row | Error | ||
1407 | zone | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
15 | 1500 | avft | table check (indicates that the checks associated with this table have started) | Info | |
1501 | avft | checks for unknown sourceTypeID | Error | ||
1502 | avft | checks for unknown modelYearID | Error | ||
1503 | avft | checks for unknown fuelTypeID | Error | ||
1504 | avft | checks for unknown engTechID | Error | ||
1505 | avft | makes sure all fuelEngFraction values are between 0 and 1 | Error | ||
1506 | avft | checks that fuelengfraction sums to 1 by source type and model year | Error | ||
1507 | avft | checks for missing combinations of sourceTypeID, modelYearID, fuelTypeID, and engTechID | Error or Warning | This returns only the first missing combination, not all of them. It will be a Warning if the table is empty, or an Error if the table is supplied with missing combinations | |
1508 | avft | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
16 | 1600 | avgspeeddistribution | table check (indicates that the checks associated with this table have started) | Info | |
1601 | avgspeeddistribution | checks for unknown avgSpeedBinID | Error | ||
1602 | avgspeeddistribution | checks that the avgSpeedFraction column sums to 1 by sourceTypeID, hourDayID, and roadTypeID | Error | ||
1603 | avgspeeddistribution | checks for unknown hourDayIDs | Error | ||
1604 | avgspeeddistribution | checks for unknown roadTypeID | Error | ||
1605 | avgspeeddistribution | checks for unknown sourceTypeID | Error | ||
1606 | avgspeeddistribution | checks for missing combinations of hourDayID, roadTypeID, sourceTypeID, and avgSpeedBinID | Error | This returns only the first missing combination, not all of them | |
1607 | avgspeeddistribution | make sure no avgSpeedFraction values are greater than or equal to 1 | Error | ||
1608 | avgspeeddistribution | make sure no avgSpeedFraction profiles are flat | Warning | For example, all 1/16 | |
1609 | avgspeeddistribution | makes sure the weekday and weekend speed profiles aren't identical | Warning | ||
1610 | avgspeeddistribution | don't allow identical profiles for each road type | Warning | This checks all pairwise combinations of road types, and will report a warning if any of them match. This will only report the first pair of matching distributions, not all of them | |
1611 | avgspeeddistribution | checks for 0% avgSpeedFraction in avgSpeedBinID 1 | Warning | This returns only the first instance, not all of them | |
1612 | avgspeeddistribution | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
17 | 1700 | countyyear | table check (indicates that the checks associated with this table have started) | Info | |
1701 | countyyear | checks countyID against the county table | Error | ||
1702 | countyyear | checks yearID against year table | Error | ||
1703 | countyyear | checks that refuelingVaporProgramAdjustment is between 0 and 1 | Error | ||
1704 | countyyear | checks that refuelingSpillProgramAdjustment is between 0 and 1 | Error | ||
1705 | countyyear | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
18 | 1800 | dayvmtfraction | table check (indicates that the checks associated with this table have started) | Info | |
1801 | dayvmtfraction | checks for unknown dayID | Error | ||
1802 | dayvmtfraction | makes sure dayVMTFraction sums to 1 by monthID, roadTypeID, and sourceTypeID | Error | ||
1803 | dayvmtfraction | checks for unknown monthID | Error | ||
1804 | dayvmtfraction | checks for unknown roadTypeID | Error | ||
1805 | dayvmtfraction | checks for unknown sourceTypeID | Error | ||
1806 | dayvmtfraction | make sure no dayVMTFraction values are greater than or equal to 1 | Warning | ||
1807 | dayvmtfraction | makes sure allocations between weekend and weekday are not identical | Warning | ||
1808 | dayvmtfraction | if populated, makes sure there are no missing combinations of monthID, roadTypeID, sourceTypeID, and dayID | Error | This returns only the first missing combination, not all of them | |
1809 | dayvmtfraction | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
19 | 1900 | emissionratebyage | table check (indicates that the checks associated with this table have started) | Info | |
1901 | emissionratebyage | checks for unknown polProcessID | Error | ||
1902 | emissionratebyage | checks for unknown opModeID | Error | ||
1903 | emissionratebyage | checks for unknown ageGroupID | Error | ||
1904 | emissionratebyage | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
1905 | emissionratebyage | if populated, warn that this table may be overwritten | Warning | This table is not expected to be submitted, so it might not be used | |
20 | 2000 | fuelformulation | table check (indicates that the checks associated with this table have started) | Info | |
2001 | fuelformulation | checks for unknown fuelSubtypeID | Warning | ||
2002 | fuelformulation | checks for valid RVP (>=5 && <=20) for all gasoline fuelSubTypeIDs, not including E85 | Warning | ||
2003 | fuelformulation | checks for valid sulfur levels (0-5000) for all fuels | Warning | ||
2004 | fuelformulation | checks for valid ethanol volume (0-100) for user-supplied fuels (fuelFormulationID > 100) | Warning | ||
2005 | fuelformulation | checks that MTBE is 0 or NULL for user-supplied fuels (fuelFormulationID > 100) | Warning | ||
2006 | fuelformulation | checks that ETBE is 0 or NULL for user-supplied fuels (fuelFormulationID > 100) | Warning | ||
2007 | fuelformulation | checks that TAME is 0 or NULL for user-supplied fuels (fuelFormulationID > 100) | Warning | ||
2008 | fuelformulation | checks for valid aromatic content (0-55) for user-supplied gasoline fuelSubTypeIDs (fuelFormulationID > 100) | Warning | ||
2009 | fuelformulation | checks for valid olefin content (0-25) for user-supplied gasoline fuelSubTypeIDs (fuelFormulationID > 100) | Warning | ||
2010 | fuelformulation | checks for valid benzene content (0-5) for user-supplied gasoline fuelSubTypeIDs (fuelFormulationID > 100) | Warning | ||
2011 | fuelformulation | checks for valid e200 values (0-70) for user-supplied gasoline fuelSubTypeIDs (fuelFormulationID > 100) | Warning | ||
2012 | fuelformulation | checks for valid e300 values (0-100) for user-supplied gasoline fuelSubTypeIDs (fuelFormulationID > 100) | Warning | ||
2013 | fuelformulation | makes sure the T50 and T90 columns exist | Error | ||
2014 | fuelformulation | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
2015 | fuelformulation | if populated, warn that this table may be overwritten | Warning | This table is not expected to be submitted, so it might not be used. | |
21 | 2100 | fuelsupply | table check (indicates that the checks associated with this table have started) | Info | |
2101 | fuelsupply | checks for unknown fuelFormulationIDs, referencing the CDB fuelforumulation table | Warning | ||
2102 | fuelsupply | checks fuelYearID against the year table | Warning | ||
2103 | fuelsupply | checks for unknown monthGroupID | Warning | ||
2104 | fuelsupply | checks for multiple fuelRegionIDs | Warning | ||
2105 | fuelsupply | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
2106 | fuelsupply | if populated, warn that this table may be overwritten | Warning | This table is not expected to be submitted, so it might not be used. | |
22 | 2200 | fuelusagefraction | table check (indicates that the checks associated with this table have started) | Info | |
2201 | fuelusagefraction | checks fuelYearID against the year table | Error | ||
2202 | fuelusagefraction | checks countyID against the county table | Error | ||
2203 | fuelusagefraction | checks for unknown modelYearGroupID | Error | ||
2204 | fuelusagefraction | checks for unknown sourceBinFuelTypeID | Error | ||
2205 | fuelusagefraction | checks for unknown fuelSupplyFuelTypeID | Error | ||
2206 | fuelusagefraction | checks that sourceBinFuelTypeID = fuelSupplyFuelTypeID for non FF vehicles | Error | ||
2207 | fuelusagefraction | checks that fuelSupplyFuelTypeID is 1 or 5 for FF vehicles | Error | ||
2208 | fuelusagefraction | make sure theres a row for sourceBinFuelTypeID 5 where fuelSupplyFuelTypeID is 1 or 5 | Error | ||
2209 | fuelusagefraction | make sure usageFraction sums to 1 for all sourceBinFuelTypeIDs | Error | ||
2210 | fuelusagefraction | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
23 | 2300 | hotellingactivitydistribution | table check (indicates that the checks associated with this table have started) | Info | |
2301 | hotellingactivitydistribution | checks for unknown opModeID | Error | ||
2302 | hotellingactivitydistribution | checks that opModeDistribution sums to 1 by model year group | Error | ||
2303 | hotellingactivitydistribution | check zoneID against zone table | Error | ||
2304 | hotellingactivitydistribution | check for overlaps/gaps in model year columns | Error | ||
2305 | hotellingactivitydistribution | checks for unknown fuelTypeID | Error | ||
2306 | hotellingactivitydistribution | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
24 | 2400 | hotellingagefraction | table check (indicates that the checks associated with this table have started) | Info | |
2401 | hotellingagefraction | checks zoneID against zone table | Error | ||
2402 | hotellingagefraction | checks for unknown ageID | Error | ||
2403 | hotellingagefraction | if populated, makes sure all ages are present | Error | This returns only the first missing ageID, not all of them | |
2404 | hotellingagefraction | makes sure no ageFraction values are greater than or equal to 1 | Error | ||
2405 | hotellingagefraction | make sure ageFraction sums to 1 by zoneID | Error | ||
2406 | hotellingagefraction | make sure no fraction profiles are flat | Warning | For example, all 1/31 | |
2407 | hotellingagefraction | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
25 | 2500 | hotellinghourfraction | table check (indicates that the checks associated with this table have started) | Info | |
2501 | hotellinghourfraction | check zoneID against zone table | Error | ||
2502 | hotellinghourfraction | check for unknown dayID | Error | ||
2503 | hotellinghourfraction | check for unknown hourID | Error | ||
2504 | hotellinghourfraction | if populated, makes sure all combinations of zoneID, dayID, and hourID are present | Error | This returns only the first missing combination, not all of them | |
2505 | hotellinghourfraction | make sure no hourFraction values are greater than or equal to 1 | Error | ||
2506 | hotellinghourfraction | make sure all hourFractions sum to 1 by zoneID and dayID | Error | ||
2507 | hotellinghourfraction | make sure no hour profiles are flat | Warning | For example, all 1/24 | |
2508 | hotellinghourfraction | makes sure hour profiles aren't identical for weekends and weekdays | Warning | ||
2509 | hotellinghourfraction | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
26 | 2600 | hotellinghoursperday | table check (indicates that the checks associated with this table have started) | Info | |
2601 | hotellinghoursperday | check yearID against year table | Error | ||
2602 | hotellinghoursperday | check zoneID against zone table | Error | ||
2603 | hotellinghoursperday | check for unknown dayID | Error | ||
2604 | hotellinghoursperday | if populated, makes sure all combinations of yearID, zoneID, and dayID are present | Error | This returns only the first missing combination, not all of them | |
2605 | hotellinghoursperday | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
27 | 2700 | hotellingmonthadjust | table check (indicates that the checks associated with this table have started) | Info | |
2701 | hotellingmonthadjust | Check zoneID against zone table | Error | ||
2702 | hotellingmonthadjust | Check for unknown monthID | Error | ||
2703 | hotellingmonthadjust | if populated, makes sure all combinations of zoneID and monthID are present | Error | This returns only the first missing combination, not all of them | |
2704 | hotellingmonthadjust | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
28 | 2800 | hourvmtfraction | table check (indicates that the checks associated with this table have started) | Info | |
2801 | hourvmtfraction | checks for unknown dayID | Error | ||
2802 | hourvmtfraction | checks for unknown hourID | Error | ||
2803 | hourvmtfraction | checks for unknown roadTypeID | Error | ||
2804 | hourvmtfraction | checks for unknown sourceTypeID | Error | ||
2805 | hourvmtfraction | if populated, makes sure hourVMTFraction sums to 1 for each dayID, roadTypeID, and sourceTypeID | Error | This returns only the first missing combination, not all of them | |
2806 | hourvmtfraction | makes sure all combinations of dayID, hourID, roadTypeID, and sourceTypeID are present | Error | ||
2807 | hourvmtfraction | make sure no hourVMTFraction values are greater than or equal to 1 | Error | ||
2808 | hourvmtfraction | make sure no hour profiles are flat | Warning | For example, all 1/24 | |
2809 | hourvmtfraction | makes sure hour profiles aren't identical for weekends and weekdays | Warning | ||
2810 | hourvmtfraction | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
29 | 2900 | hpmsvtypeday | table check (indicates that the checks associated with this table have started) | Info | |
2901 | hpmsvtypeday | checks yearID against year table | Error | ||
2902 | hpmsvtypeday | checks for unknown monthID | Error | ||
2903 | hpmsvtypeday | checks for unknown dayID | Error | ||
2904 | hpmsvtypeday | check for unknown hpmsvtypeID | Error | ||
2905 | hpmsvtypeday | if populated, makes sure all combinations of yearID, monthID, dayID, and HPMSVtypeID are present | Error | This returns only the first missing combination, not all of them | |
2906 | hpmsvtypeday | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
30 | 3000 | hpmsvtypeyear | table check (indicates that the checks associated with this table have started) | Info | |
3001 | hpmsvtypeyear | checks for unknown HPMSVtypeID | Error | ||
3002 | hpmsvtypeyear | checks for unknown yearID | Error | ||
3003 | hpmsvtypeyear | if populated, makes sure all combinations of yearID and HPMSVtypeID are present | Error | This returns only the first missing combination, not all of them | |
3004 | hpmsvtypeyear | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
31 | 3100 | idledayadjust | table check (indicates that the checks associated with this table have started) | Info | |
3101 | idledayadjust | Check for unknown sourceTypeID | Error | ||
3102 | idledayadjust | Check for unknown dayID | Error | ||
3103 | idledayadjust | if populated, make sure all combinations of sourceTypeID and dayID are present | Error | This returns only the first missing combination, not all of them | |
3104 | idledayadjust | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
32 | 3200 | idlemodelyeargrouping | table check (indicates that the checks associated with this table have started) | Info | |
3201 | idlemodelyeargrouping | Check for unknown sourceTypeID | Error | ||
3202 | idlemodelyeargrouping | if populated, makes sure all sourceTypeIDs are present | Error | This returns only the first missing sourceTypeID, not all of them | |
3203 | idlemodelyeargrouping | Check for model year gaps and overlaps | Error | ||
3204 | idlemodelyeargrouping | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
33 | 3300 | idlemonthadjust | table check (indicates that the checks associated with this table have started) | Info | |
3301 | idlemonthadjust | Check for unknown sourceTypeID | Error | ||
3302 | idlemonthadjust | Check for unknown monthID | Error | ||
3303 | idlemonthadjust | if populated, makes sure all combinations of sourceTypeID and monthID are present | Error | This returns only the first missing combination, not all of them | |
3304 | idlemonthadjust | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
34 | 3400 | totalidlefraction | table check (indicates that the checks associated with this table have started) | Info | |
3401 | totalidlefraction | Check for unknown sourceTypeID | Error | ||
3402 | totalidlefraction | Check for unknown monthID | Error | ||
3403 | totalidlefraction | Check for unknown dayID | Error | ||
3404 | totalidlefraction | Check for unknown idleRegionID | Error | ||
3405 | totalidlefraction | checks for multiple idleRegionIDs | Error | ||
3406 | totalidlefraction | Check for unknown countyTypeID | Error | ||
3407 | totalidlefraction | checks for multiple countyTypeIDs | Error | ||
3408 | totalidlefraction | Check for model year gaps and overlaps | Error | ||
3409 | totalidlefraction | if populated, checks that all combinations of sourceTypeID, monthID, dayID, idleRegionID, and countyTypeID are present | Error | This returns only the first missing combination, not all of them | |
3410 | totalidlefraction | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
35 | 3500 | imcoverage | table check (indicates that the checks associated with this table have started) | Info | |
3501 | imcoverage | checks countyID against the county table | Error | ||
3502 | imcoverage | checks for unknown fuelTypeID | Error | ||
3503 | imcoverage | checks for unknown polProcessID | Error | ||
3504 | imcoverage | checks that inspection frequency is either 1 or 2 | Error | ||
3505 | imcoverage | checks that useIMyn is either "y" or "n", case insensitive | Error | ||
3506 | imcoverage | checks that complianceFactor is between 0 and 100 | Error | ||
3507 | imcoverage | checks for unknown sourceTypeID | Error | ||
3508 | imcoverage | checks stateID against the state table | Error | ||
3509 | imcoverage | checks yearID against year table | Error | ||
3510 | imcoverage | makes sure fuel types 1 and 5 have the same number of rows | Error | ||
3511 | imcoverage | checks for model year overlaps and gaps | Error | ||
3512 | imcoverage | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
36 | 3600 | monthvmtfraction | table check (indicates that the checks associated with this table have started) | Info | |
3601 | monthvmtfraction | checks for unknown monthID | Error | ||
3602 | monthvmtfraction | checks for unknown sourceTypeID | Error | ||
3603 | monthvmtfraction | makes sure monthvmtfraction sums to 1 for each sourceTypeID | Error | ||
3604 | monthvmtfraction | make sure no monthVMTFraction values are greater than or equal to 1 | Error | ||
3605 | monthvmtfraction | make sure no month profiles are flat | Warning | For example, all 1/12 | |
3606 | monthvmtfraction | if populated, makes sure all combinations of sourceTypeID and monthID are present | Error | This returns only the first missing combination, not all of them | |
3607 | monthvmtfraction | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
37 | 3700 | onroadretrofit | table check (indicates that the checks associated with this table have started) | Info | |
3701 | onroadretrofit | checks for unknown pollutantID | Error | ||
3702 | onroadretrofit | checks for unknown processID | Error | ||
3703 | onroadretrofit | checks for unknown fuelTypeID | Error | ||
3704 | onroadretrofit | checks for unknown sourceTypeID | Error | ||
3705 | onroadretrofit | checks that retrofitYearID is less than or equal to analysis year | Error | ||
3706 | onroadretrofit | checks that endModelYearID is less than or equal to retrofitYearID | Error | ||
3707 | onroadretrofit | checks that beginModelYearID is less than or equal to endModelYearID | Error | ||
3708 | onroadretrofit | checks that cumFractionRetrofit is between 0 and 1 | Error | ||
3709 | onroadretrofit | checks that retrofitEffectiveFraction is less than or equal to 1 | Error | ||
3710 | onroadretrofit | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
38 | 3800 | roadtypedistribution | table check (indicates that the checks associated with this table have started) | Info | |
3801 | roadtypedistribution | checks for unknown roadTypeID | Error | ||
3802 | roadtypedistribution | checks for unknown sourceTypeID | Error | ||
3803 | roadtypedistribution | checks that VMTFraction sums to 1 by sourceTypeID | Error | ||
3804 | roadtypedistribution | make sure no VMTFraction values are greater than or equal to 1 | Warning | ||
3805 | roadtypedistribution | make sure no road type profiles are flat | Warning | For example, all 1/4 | |
3806 | roadtypedistribution | makes sure all combinations of roadTypeID and sourceTypeID are present | Error | This returns only the first missing combination, not all of them | |
3807 | roadtypedistribution | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
39 | 3900 | sourcetypeagedistribution | table check (indicates that the checks associated with this table have started) | Info | |
3901 | sourcetypeagedistribution | checks for unknown ageID | Error | ||
3902 | sourcetypeagedistribution | checks for unknown sourceTypeID | Error | ||
3903 | sourcetypeagedistribution | checks yearID against year table | Error | ||
3904 | sourcetypeagedistribution | checks that sourceTypeAgeFraction sums to 1 for each ageID, sourceTypeID, and yearID | Error | ||
3905 | sourcetypeagedistribution | checks for missing sourceTypeID, ageID, yearID combinations | Error | This returns only the first missing combination, not all of them | |
3906 | sourcetypeagedistribution | make sure no age profiles are flat | Warning | For example, all 1/31 | |
3907 | sourcetypeagedistribution | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
40 | 4000 | sourcetypedayvmt | table check (indicates that the checks associated with this table have started) | Info | |
4001 | sourcetypedayvmt | checks yearID against year table | Error | ||
4002 | sourcetypedayvmt | checks for unknown monthID | Error | ||
4003 | sourcetypedayvmt | checks for unknown dayID | Error | ||
4004 | sourcetypedayvmt | checks for unknown sourceTypeID | Error | ||
4005 | sourcetypedayvmt | if populated, makes sure all yearID, monthID, dayID, and sourceTypeID combinations are present | Error | This returns only the first missing combination, not all of them | |
4006 | sourcetypedayvmt | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
41 | 4100 | sourcetypeyearvmt | table check (indicates that the checks associated with this table have started) | Info | |
4101 | sourcetypeyearvmt | checks yearID against year table | Error | ||
4102 | sourcetypeyearvmt | checks for unknown sourceTypeID | Error | ||
4103 | sourcetypeyearvmt | if populated, makes sure all combinations of yearID and sourceTypeID are present | Error | This returns only the first missing combination, not all of them | |
4104 | sourcetypedayvmt | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
42 | 4200 | sourcetypeyear | table check (indicates that the checks associated with this table have started) | Info | |
4201 | sourcetypeyear | checks yearID against year table | Error | ||
4202 | sourcetypeyear | checks for unknown sourceTypeID | Error | ||
4203 | sourcetypeyear | makes sure all combinations of yearID and sourceTypeID are present | Error | This returns only the first missing combination, not all of them | |
4204 | sourcetypeyear or HPMSVtypeDay | checks that population exists for HPMS types with VMT and that no population exists for HPMS types without VMT, if using hpmsvtypeday for VMT | Error | ||
4205 | sourcetypeyear or HPMSVtypeYear | checks that population exists for HPMS types with VMT and that no population exists for HPMS types without VMT, if using hpmsvtypeyear for VMT | Error | ||
4206 | sourcetypeyear or sourceTypeDayVMT | checks that population exists for source types with VMT and that no population exists for source types without VMT, if using sourcetypedayvmt for VMT | Error | ||
4207 | sourcetypeyear or sourceTypeYearVMT | checks that population exists for source types with VMT and that no population exists for source types without VMT, if using sourcetypeyearvmt for VMT | Error | ||
4208 | sourcetypeyear | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
43 | 4300 | starts | table check (indicates that the checks associated with this table have started) | Info | |
4301 | starts | checks for unknown hourDayID | Error | ||
4302 | starts | checks for unknown monthID | Error | ||
4303 | starts | checks yearID against year table | Error | ||
4304 | starts | checks for unknown ageID | Error | ||
4305 | starts | checks zoneID against zone table | Error | ||
4306 | starts | checks for unknown sourceTypeID | Error | ||
4307 | starts | check isUserInput is Y, y, N, or n | Error | ||
4308 | starts | if populated, checks for all combinations of hourDayID, monthID, yearID, ageID, zoneID, and sourceTypeID | Error | This returns only the first missing combination, not all of them | |
4309 | starts | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
44 | 4400 | startsagadjustment | table check (indicates that the checks associated with this table have started) | Info | |
4401 | startsagadjustment | Check for unknown sourceTypeID | Error | ||
4402 | startsagadjustment | Check for unknown ageID | Error | ||
4403 | startsagadjustment | if populated, makes sure all sourceTypeID, ageID combinations are present | Error | This returns only the first missing combination, not all of them | |
4404 | startsagadjustment | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
45 | 4500 | startshourfraction | table check (indicates that the checks associated with this table have started) | Info | |
4501 | startshourfraction | checks for unknown dayID | Error | ||
4502 | startshourfraction | checks for unknown hourID | Error | ||
4503 | startshourfraction | check for unknown sourceTypeID | Error | ||
4504 | startshourfraction | makes sure allocationFraction sums to 1 by zoneID and dayID | Error | ||
4505 | startshourfraction | make sure no allocationFraction values are greater than or equal to 1 | Error | ||
4506 | startshourfraction | make sure no hour profiles are flat | Warning | For example, all 1/24 | |
4507 | startshourfraction | if populated, makes sure all combinations of dayID, sourceTypeID, and hourID are present | Error | This returns only the first missing combination, not all of them | |
4508 | startshourfraction | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
46 | 4600 | startsmonthadjust | table check (indicates that the checks associated with this table have started) | Info | |
4601 | startsmonthadjust | checks for unknown monthID | Error | ||
4602 | startsmonthadjust | check for unknown sourceTypeID | Error | ||
4603 | startsmonthadjust | if populated, makes sure all combinations of monthID and sourceTypeID are present | Error | This returns only the first missing combination, not all of them | |
4604 | startsmonthadjust | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
47 | 4700 | startsopmodedistribution | table check (indicates that the checks associated with this table have started) | Info | |
4701 | startsopmodedistribution | Check for unknown dayID | Error | ||
4702 | startsopmodedistribution | Check for unknown hourID | Error | ||
4703 | startsopmodedistribution | Check for unknown sourceTypeID | Error | ||
4704 | startsopmodedistribution | Check for unknown ageID | Error | ||
4705 | startsopmodedistribution | Check for unknown opModeID | Error | ||
4706 | startsopmodedistribution | Check isUserInput is 'Y' or 'N', case insensitive | Error | ||
4707 | startsopmodedistribution | Make sure opModeFraction sums to 1 by dayID, hourID, sourceTypeID, and ageID | Error | ||
4708 | startsopmodedistribution | if populated, makes sure all combinations of dayID, hourID, sourceTypeID, ageID, and opModeID are present | Error | This returns only the first missing combination, not all of them | |
4709 | startsopmodedistribution | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
48 | 4800 | startsperday | table check (indicates that the checks associated with this table have started) | Info | |
4801 | startsperday | checks for unknown dayID | Error | ||
4802 | startsperday | check for unknown sourceTypeID | Error | ||
4803 | startsperday | if populated, makes sure all combinations of dayID and sourceTypeID are present | Error | This returns only the first missing combination, not all of them | |
4804 | startsperday | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
49 | 4900 | startsperdaypervehicle | table check (indicates that the checks associated with this table have started) | Info | |
4901 | startsperdaypervehicle | Check for unknown dayID | Error | ||
4902 | startsperdaypervehicle | Check for unknown sourceTypeID | Error | ||
4903 | startsperdaypervehicle | if populated, makes sure all combinations of dayID and sourceTypeID are present | Error | This returns only the first missing combination, not all of them | |
4904 | startsperdaypervehicle | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
50 | 5000 | zonemonthhour | table check (indicates that the checks associated with this table have started) | Info | |
5001 | zonemonthhour | checks for unknown hourID | Warning | ||
5002 | zonemonthhour | checks for unkown monthID | Warning | ||
5003 | zonemonthhour | checks zoneID against zone table | Warning | ||
5004 | zonemonthhour | makes sure temperature is between -80F and 150 F | Warning | ||
5005 | zonemonthhour | makes sure relative humidity is between 0 and 100 | Warning | ||
5006 | zonemonthhour | if populated, make sure all combinations of zoneID, monthID, and hourID are populated | Warning | This returns only the first missing combination, not all of them | |
5007 | zonemonthhour | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | ||
5008 | zonemonthhour | if populated, warn that this table may be overwritten | Warning | This table is not expected to be submitted, so it might not be used. | |
51 | 5100 | zoneroadtype | table check (indicates that the checks associated with this table have started) | Info | |
5101 | zoneroadtype | checks for unknown roadTypeID | Error | ||
5102 | zoneroadtype | checks zoneID against zone table | Error | ||
5103 | zoneroadtype | makes sure SHOAllocFactor sums to 1 for each roadTypeID, and there is only one row per road type | Error | ||
5104 | zoneroadtype | Makes sure all combinations of roadTypeID and zoneID are present | Error | This returns only the first missing combination, not all of them | |
5105 | zoneroadtype | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error |
Table No. | Check No. | Table | Description | Type |
---|---|---|---|---|
20 | 2000 | fuelformulation | checks if table is missing or empty | Info if missing, warning if not empty |
2001 | fuelformulation | checks for unknown fuelSubtypeID | Warning | |
2002 | fuelformulation | checks for valid RVP (>=5 && <=20) for all gasoline fuelSubTypeIDs, not including E85 | Warning | |
2003 | fuelformulation | checks for valid sulfur levels (0-5000) for all fuels | Warning | |
2004 | fuelformulation | checks for valid ethanol volume (0-100) for user-supplied fuels (fuelFormulationID > 100) | Warning | |
2005 | fuelformulation | checks that MTBE is 0 or NULL for user-supplied fuels (fuelFormulationID > 100) | Warning | |
2006 | fuelformulation | checks that ETBE is 0 or NULL for user-supplied fuels (fuelFormulationID > 100) | Warning | |
2007 | fuelformulation | checks that TAME is 0 or NULL for user-supplied fuels (fuelFormulationID > 100) | Warning | |
2008 | fuelformulation | checks for valid aromatic content (0-55) for user-supplied gasoline fuelSubTypeIDs (fuelFormulationID > 100) | Warning | |
2009 | fuelformulation | checks for valid olefin content (0-25) for user-supplied gasoline fuelSubTypeIDs (fuelFormulationID > 100) | Warning | |
2010 | fuelformulation | checks for valid benzene content (0-5) for user-supplied gasoline fuelSubTypeIDs (fuelFormulationID > 100) | Warning | |
2011 | fuelformulation | checks for valid e200 values (0-70) for user-supplied gasoline fuelSubTypeIDs (fuelFormulationID > 100) | Warning | |
2012 | fuelformulation | checks for valid e300 values (0-100) for user-supplied gasoline fuelSubTypeIDs (fuelFormulationID > 100) | Warning | |
2013 | fuelformulation | makes sure the T50 and T90 columns exist | Error | |
2014 | fuelformulation | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | |
50 | 5000 | zonemonthhour | checks if table is missing or empty | Info if missing, warning if not empty |
5001 | zonemonthhour | checks for unknown hourID | Error | |
5002 | zonemonthhour | checks for unkown monthID | Error | |
5003 | zonemonthhour | checks for unkown zoneID | Error | |
5004 | zonemonthhour | makes sure temperature is between -80F and 150 F | Error | |
5005 | zonemonthhour | makes sure humidity is between 0 and 100 | Error | |
5006 | zonemonthhour | if populated, make sure all combinations of monthID and hourID are populated | Warning | |
5007 | zonemonthhour | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | |
100 | 10000 | nrbaseyearequippopulation | checks if table is missing or empty | Info if missing, warning if empty |
10001 | nrbaseyearequippopulation | checks for unknown sourceTypeID | Error | |
10002 | nrbaseyearequippopulation | checks for unknown stateID (using default db) | Error | |
10003 | nrbaseyearequippopulation | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | |
101 | 10100 | nrdayallocation | checks if table is missing or empty | Info if missing, warning if empty |
10101 | nrdayallocation | checks for unknown dayID | Error | |
10102 | nrdayallocation | makes sure dayfraction sums to 1 | Error | |
10103 | nrdayallocation | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | |
102 | 10200 | nrfuelsupply | checks if table is missing or empty | Info if missing, warning if not empty |
10201 | nrfuelsupply | checks for unknown fuelRegionID | Error | |
10202 | nrfuelsupply | checks for unknown fuelFormulationID | Error | |
10203 | nrfuelsupply | checks for unknown fuelYearID (using default db) | Error | |
10204 | nrfuelsupply | checks that marketShare sums to 1 | Error | |
10205 | nrfuelsupply | checks for unknown monthGroupID | Error | |
10206 | nrfuelsupply | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | |
103 | 10300 | nrgrowthindex | checks if table is missing or empty | Info if missing, warning if empty |
10301 | nrgrowthindex | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | |
104 | 10400 | nrhourallocation | checks if table is missing or empty | Info if missing, warning if empty |
10401 | nrhourallocation | checks for unknown hourID, hardcoded to be between 1 and 24 | Error | |
10402 | nrhourallocation | makes sure hourfraction sums to 1 | Error | |
10403 | nrhourallocation | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | |
105 | 10500 | nrmonthallocation | checks if table is missing or empty | Info if missing, warning if empty |
10501 | nrmonthallocation | checks for unknown stateID (using default db) | Error | |
10502 | nrmonthallocation | checks for unknown monthID | Error | |
10503 | nrmonthallocation | makes sure monthFraction sums to 1 where appropriate | Error | |
10504 | nrmonthalocation | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | |
106 | 10600 | nrretrofitfactors | checks if table is missing or empty | Info if missing, warning if empty |
10601 | nrretrofitfactors | checks for unknown pollutantIDs | Error | |
10602 | nrretrofitfactors | check that the retrofitStartYear <= retrofitEndYear | Error | |
10603 | nrretrofitfactors | check that EndModelYear <= retrofitEndYear | Error | |
10604 | nrretrofitfactors | check that StartModelYear <= EndModelYear | Error | |
10605 | nrretrofitfactors | check that annualFractionRetrofit between 0 and 1 | Error | |
10606 | nrretrofitfactors | check that retrofitEffectiveFraction <= 1 | Error | |
10607 | nrretrofitfactors | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | |
107 | 10700 | nrsourceusetype | checks if table is missing or empty | Info if missing, warning if empty |
10701 | nrsourceusetype | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error | |
108 | 10800 | nrstatesurrogate | checks if table is missing or empty | Info if missing, warning if empty |
10801 | nrstatesurrogate | checks for unknown stateID (using default db) | Error | |
10802 | nrstatesurrogate | checks for unknown countyID (using default db) | Error | |
10803 | nrstatesurrogate | checks each column's schema definition for mismatches with the default database's data type, null/not null, and key status | Error |