Fix broken series-ID builders; env-var config; project README
Repair every dead series-ID encoding (library now 82/82 query helpers
return live data, verified against the BLS API):
- JOLTS: 21-char format (was 18) — add state/area/sizeclass fields
- OES: national area code 0000000 (was invalid 0000400)
- ECI: correct owner/component/estimate encoding, default unadjusted (CIU)
- Productivity: 4-digit sector + 4-digit measure codes (was 2+3)
- QCEW: 13-char timeseries-API form (ENUUS00010510 / ENU{fips}00010{own}10)
- PPI: repoint finished-goods -> final demand (WPUFD4); keep alias
- ECEC: drop fabricated health-insurance/retirement helpers; add total benefits
- wages SOC: software developers 151132 -> 151252 (2018 SOC)
Tooling/docs:
- config reads BLS_API_KEY env var (takes precedence; config.py gitignored)
- add requirements.txt
- rewrite README as project front door + coverage table + limitations
- correct JOLTS/OES tables in series_id_formats.md, USAGE.md, dataset explorer
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@ -191,33 +191,36 @@ ENU0000010510000 → National, quarterly, private, all industries
|
||||
| 14 | Annual 75th percentile wage |
|
||||
| 15 | Annual 90th percentile wage |
|
||||
|
||||
**Examples:**
|
||||
**Examples** (national area type is `N`, national area code is `0000000`):
|
||||
```
|
||||
OEUM0000400000000000001 → National, all industries, all occupations, employment
|
||||
OEUM0000400000015113201 → National, all industries, software devs, employment
|
||||
OEUN000000000000000000001 → National, all industries, all occupations, employment
|
||||
OEUN000000000000000000004 → National, all industries, all occupations, annual mean wage
|
||||
OEUN000000000000015125213 → National, all industries, software devs (15-1252), annual median wage
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## JOLTS — Job Openings & Labor Turnover (prefix: JT)
|
||||
|
||||
**Series ID:** `JT[S/U][IIIIII][E/J][RR][LL]`
|
||||
**Series ID:** `JT[S/U][IIIIII][SS][AAAAA][ZZ][EE][L/R]` — 21 chars
|
||||
|
||||
| Pos | Length | Field | Notes |
|
||||
|-----|--------|-------|-------|
|
||||
| 1-2 | 2 | Prefix | `JT` |
|
||||
| 3 | 1 | Seasonal adj | `S` or `U` |
|
||||
| 4-9 | 6 | Industry code | NAICS supersector |
|
||||
| 10 | 1 | Job status | `E`=total; `J`=job openings; `H`=hires; `L`=layoffs/discharges; `Q`=quits; `T`=total separations |
|
||||
| 11-12 | 2 | Rate/level | `R`=rate; `L`=level (thousands) |
|
||||
| 13-14 | 2 | Ownership | `00`=total; `10`=private; `20`=government |
|
||||
| 4-9 | 6 | Industry code | NAICS supersector; `000000` = total nonfarm |
|
||||
| 10-11 | 2 | State code | `00` = national |
|
||||
| 12-16 | 5 | Area code | `00000` = all areas |
|
||||
| 17-18 | 2 | Size class | `00` = all sizes |
|
||||
| 19-20 | 2 | Data element | `JO`=job openings; `HI`=hires; `QU`=quits; `LD`=layoffs/discharges; `TS`=total separations; `OS`=other separations |
|
||||
| 21 | 1 | Rate/level | `L`=level (thousands); `R`=rate |
|
||||
|
||||
**Examples:**
|
||||
**Examples** (15 zeros sit between the seasonal code and the 2-char element):
|
||||
```
|
||||
JTS000000000000JOL → Total nonfarm, job openings, level
|
||||
JTS000000000000JOR → Total nonfarm, job openings, rate
|
||||
JTS000000000000HIL → Total nonfarm, hires, level
|
||||
JTS000000000000TSL → Total nonfarm, total separations, level
|
||||
JTS000000000000000JOL → Total nonfarm, job openings, level
|
||||
JTS000000000000000JOR → Total nonfarm, job openings, rate
|
||||
JTS000000000000000HIL → Total nonfarm, hires, level
|
||||
JTS000000000000000TSL → Total nonfarm, total separations, level
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user