Validation report · City of Los Angeles — Open Budget: Appropriations

Version v0001 Currently published

Source file
lacity-appropriations-fy2018-2023.csv · 5,245,176 bytes · SHA-256 57c4251de145f155ebd181a81b897e5528c66fa93dbbe81cf8f3da32e577a096
Provenance
Agency data City of Los Angeles Open Budget — Appropriations, FY2018–FY2023 rows. Retrieved 2026-11-07 from https://data.lacity.org/d/5242-pnmt.
Transformations
  • Kept rows with Fiscal_Year 2018–2023; other years excluded because their identifying codes are not unique (see data/PROVENANCE.md).
  • Re-serialized as RFC 4180 CSV; cell values are byte-identical to the download.
Imported
Nov 9, 2026, 12:16 PM PT
Published
Nov 9, 2026, 12:16 PM PT · approval note: “Initial seed: bundled agency snapshot. Warnings are source characteristics documented in data/PROVENANCE.md.” · warnings explicitly accepted
Downloads
Report (JSON) · Exceptions (CSV) · Cleaned dataset (CSV) · this page prints cleanly (HTML)

Result

0 hard-failure checks triggered (0 occurrences); 2 review-warning checks triggered (3,177 occurrences). Hard failures block publication outright. Warnings never block on their own, but publishing requires the operator to accept them explicitly.

Reconciliation

Every row in the file becomes exactly one record. Rows are never dropped, merged, or repaired. Blank amounts are counted here and left out of the dollar totals; they are not treated as $0.

MeasureSource fileStored recordsDashboard (unfiltered)Check
Data rows30,31630,31630,316✓ match
Rows with blank amount3,1753,1753,175✓ match
Total appropriation$63,668,595,549$63,668,595,549$63,668,595,549✓ match

By fiscal year

Fiscal_YearRowsBlank amountTotalDashboardCheck
20184,7480$9,292,134,656$9,292,134,656✓ match
20194,9320$9,899,768,481$9,899,768,481✓ match
20204,4360$10,710,077,843$10,710,077,843✓ match
20214,3880$10,531,278,041$10,531,278,041✓ match
20224,2190$11,480,288,113$11,480,288,113✓ match
20237,5933,175$11,755,048,415$11,755,048,415✓ match

To check these numbers without this project's code, run python3 -I scripts/independent-check.py <file.csv> (Python standard library only).

Before and after

Compared with an empty store (first import), matched on the stable key (Fiscal_Year + Dept_Code + SubDept_Code + Prog_Code + Source_Fund_Code + Account_Code).

Added
30,316
Removed
0
Changed
0
Unchanged
0

Exceptions

TypeFindingOccurrences
Review warningMEASURE_MISSING — Measure is blank in the source (kept as 'not provided', excluded from totals)
Show 25 of 3,175
  • row 22725 · key 2023|6|06LVL5|650|100|1090
  • row 22726 · key 2023|12|12LVL5|1203|56T|1010
  • row 22730 · key 2023|28|28LVL5|2899|100|2120
  • row 22731 · key 2023|28|28LVL5|2899|100|2130
  • row 22732 · key 2023|28|28LVL5|2899|100|3040
  • row 22733 · key 2023|28|28LVL5|2899|100|3310
  • row 22734 · key 2023|28|28LVL5|2899|100|6010
  • row 22736 · key 2023|30|30LVL5|3001|100|1070
  • row 22737 · key 2023|30|30LVL5|3001|100|1090
  • row 22738 · key 2023|30|30LVL5|3001|100|2120
  • row 22739 · key 2023|30|30LVL5|3001|100|3040
  • row 22740 · key 2023|30|30LVL5|3001|100|3310
  • row 22741 · key 2023|30|30LVL5|3001|100|4030
  • row 22742 · key 2023|30|30LVL5|3001|100|6010
  • row 22743 · key 2023|30|30LVL5|3001|100|6020
  • row 22744 · key 2023|30|30LVL5|3001|100|9494
  • row 22745 · key 2023|30|30LVL5|3001|100|9698
  • row 22746 · key 2023|30|30LVL5|3001|100|9699
  • row 22747 · key 2023|30|30LVL5|3001|100|9819
  • row 22748 · key 2023|30|30LVL5|3001|100|9836
  • row 22749 · key 2023|30|30LVL5|3001|100|9840
  • row 22750 · key 2023|30|30LVL5|3001|100|9841
  • row 22751 · key 2023|30|30LVL5|3001|100|9849
  • row 22752 · key 2023|30|30LVL5|3004|100|3040
  • row 22753 · key 2023|30|30LVL5|3004|100|4030
3,175
Review warningMEASURE_NEGATIVE — Measure is negative
Show 2 of 2
  • row 22723 · key 2022|82|82LVL5|8201|100|1010 · value “-108753”
  • row 22724 · key 2022|86|86LVL5|8606|100|3030 · value “-2647530”
2

What was checked

Required columns: all 14 published columns, matched by name. Required non-blank fields: Fiscal_Year, Dept_Code, SubDept_Code, Prog_Code, Source_Fund_Code, Account_Code, Department_Name. Stable key: Fiscal_Year + Dept_Code + SubDept_Code + Prog_Code + Source_Fund_Code + Account_Code. Size limits: 25 MB and 200,000 rows per file.

Hard failures (block publication)

  • FILE_TOO_LARGE — File exceeds the size limit
  • FILE_EMPTY — File is empty or has no data rows
  • NOT_UTF8 — File is not valid UTF-8 text
  • BINARY_CONTENT — File contains NUL bytes (binary content)
  • CSV_MALFORMED — CSV structure could not be parsed (quoting or column count)
  • TOO_MANY_ROWS — Row count exceeds the limit
  • MISSING_COLUMN — Required column is missing from the header
  • UNEXPECTED_COLUMN — Header contains a column not in the agreed schema
  • DUPLICATE_COLUMN — Header repeats a column name
  • REQUIRED_BLANK — Required field is blank
  • INVALID_NUMBER — Numeric field is not a plain number (digits, optional minus and decimals; the measure allows at most 2 decimals)
  • FIELD_TOO_LONG — Field exceeds the length limit
  • DUPLICATE_KEY — Two or more rows share the same stable key

Review warnings (need explicit acceptance)

  • MEASURE_MISSING — Measure is blank in the source (kept as 'not provided', excluded from totals)
  • MEASURE_NEGATIVE — Measure is negative
  • SURROUNDING_WHITESPACE — Value has leading or trailing spaces (kept as published)
  • FORMULA_LIKE_TEXT — Text begins with = + - or @ (spreadsheet-formula risk; escaped in CSV export)
  • SUM_MISMATCH — A total does not equal the sum of its parts
  • RECORDS_REMOVED — Records present in the published version are absent from this file
  • GROUP_ADDED — A group value appears that the published version does not have
  • GROUP_REMOVED — A group value in the published version is absent from this file
  • GROUP_TOTAL_SHIFT — A group's measure total changed by more than the review threshold

Limitations

  • Validation checks that this file is internally consistent and was loaded completely and exactly. It does not certify that the City's original figures are correct, complete, or final.
  • Totals exclude rows whose measure is blank in the source. Those rows are counted and listed separately; they are not treated as zero.
  • The City does not publish per-column definitions for this dataset. Field descriptions in this project are interpretations of column names and the dataset description.
  • The meaning of Fiscal_Year (for example, whether 2023 means the year ending June 2023) is not stated by the source and is shown as published.
  • Amounts are nominal US dollars as published, not adjusted for inflation.