-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathschema.sql
More file actions
314 lines (291 loc) · 9.04 KB
/
schema.sql
File metadata and controls
314 lines (291 loc) · 9.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
-- ============================================
-- MONITORCILLO - NEON SCHEMA
-- ============================================
-- ============================================
-- CATALOG (indicadores)
-- ============================================
CREATE TABLE IF NOT EXISTS indicators_catalog (
id VARCHAR(50) PRIMARY KEY,
indicador VARCHAR(255),
referencia TEXT,
dato VARCHAR(50),
fecha VARCHAR(20),
fuente VARCHAR(100),
trend VARCHAR(20),
category VARCHAR(50),
has_details BOOLEAN DEFAULT false,
source_url TEXT,
updated_at TIMESTAMP DEFAULT NOW()
);
-- ============================================
-- EMISION (diaria)
-- ============================================
CREATE TABLE IF NOT EXISTS emision_raw (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
compra_dolares DECIMAL,
tc DECIMAL,
bcra DECIMAL,
vencimientos DECIMAL DEFAULT 0,
licitado DECIMAL DEFAULT 0,
resultado_fiscal DECIMAL DEFAULT 0,
fetched_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS emision_normalized (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
bcra DECIMAL,
tc DECIMAL,
compra_dolares DECIMAL,
vencimientos DECIMAL,
licitado DECIMAL,
licitaciones DECIMAL,
resultado_fiscal DECIMAL,
total DECIMAL,
acumulado DECIMAL,
last_update TIMESTAMP DEFAULT NOW()
);
-- ============================================
-- EMAE (mensual)
-- ============================================
CREATE TABLE IF NOT EXISTS emae_raw (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
emae DECIMAL,
emae_desestacionalizado DECIMAL,
emae_tendencia DECIMAL,
agro DECIMAL,
pesca DECIMAL,
mineria DECIMAL,
industria DECIMAL,
energia DECIMAL,
construccion DECIMAL,
comercio DECIMAL,
hoteles DECIMAL,
transporte DECIMAL,
finanzas DECIMAL,
inmobiliarias DECIMAL,
administracion_publica DECIMAL,
ensenanza DECIMAL,
salud DECIMAL,
otros_servicios DECIMAL,
impuestos DECIMAL,
fetched_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS emae_normalized (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
emae DECIMAL,
emae_desestacionalizado DECIMAL,
emae_tendencia DECIMAL,
agro_mm12 DECIMAL,
pesca_mm12 DECIMAL,
mineria_mm12 DECIMAL,
industria_mm12 DECIMAL,
energia_mm12 DECIMAL,
construccion_mm12 DECIMAL,
comercio_mm12 DECIMAL,
hoteles_mm12 DECIMAL,
transporte_mm12 DECIMAL,
finanzas_mm12 DECIMAL,
inmobiliarias_mm12 DECIMAL,
administracion_publica_mm12 DECIMAL,
ensenanza_mm12 DECIMAL,
salud_mm12 DECIMAL,
otros_servicios_mm12 DECIMAL,
impuestos_mm12 DECIMAL,
last_update TIMESTAMP DEFAULT NOW()
);
-- ============================================
-- BMA (mensual)
-- ============================================
CREATE TABLE IF NOT EXISTS bma_raw (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
base_monetaria DECIMAL,
pases DECIMAL,
leliq DECIMAL,
lefi DECIMAL,
otros DECIMAL,
depositos_tesoro DECIMAL,
pbi_trimestral DECIMAL,
emae_desestacionalizado DECIMAL,
ipc_nucleo DECIMAL,
fetched_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS bma_normalized (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
base_monetaria DECIMAL,
pasivos_remunerados DECIMAL,
depositos_tesoro DECIMAL,
bma_amplia DECIMAL,
last_update TIMESTAMP DEFAULT NOW()
);
-- ============================================
-- RECAUDACION (mensual)
-- ============================================
CREATE TABLE IF NOT EXISTS recaudacion_raw (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
mes VARCHAR(2),
year INTEGER,
recaudacion_total DECIMAL,
pbi_trimestral DECIMAL,
emae_desestacionalizado DECIMAL,
ipc_nucleo DECIMAL,
fetched_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS recaudacion_normalized (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
mes VARCHAR(2),
year INTEGER,
pct_pbi DECIMAL,
last_update TIMESTAMP DEFAULT NOW()
);
-- ============================================
-- PODER ADQUISITIVO (mensual)
-- ============================================
CREATE TABLE IF NOT EXISTS poder_adquisitivo_raw (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
ipc_nucleo DECIMAL,
salario_registrado DECIMAL,
salario_no_registrado DECIMAL,
salario_privado DECIMAL,
salario_publico DECIMAL,
ripte DECIMAL,
jubilacion_minima DECIMAL,
fetched_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS poder_adquisitivo_normalized (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
blanco DECIMAL,
negro DECIMAL,
privado DECIMAL,
publico DECIMAL,
ripte DECIMAL,
jubilacion DECIMAL,
last_update TIMESTAMP DEFAULT NOW()
);
-- ============================================
-- DEUDA PUBLICA (perfil de compromisos)
-- ============================================
CREATE TABLE IF NOT EXISTS deuda_raw (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
nacion DECIMAL,
pagos DECIMAL,
tc DECIMAL,
ipc_nucleo DECIMAL,
pbi_trimestral DECIMAL,
emae_desestacionalizado DECIMAL,
fetched_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS deuda_normalized (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
nacion DECIMAL,
pagos DECIMAL,
acumulado DECIMAL,
total DECIMAL,
last_update TIMESTAMP DEFAULT NOW()
);
-- ============================================
-- POBREZA (semestral)
-- ============================================
CREATE TABLE IF NOT EXISTS pobreza_raw (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
pobreza_indec DECIMAL,
pobreza_utdt DECIMAL,
pobreza_utdt_first_quarter DECIMAL,
pobreza_utdt_second_quarter DECIMAL,
pobreza_utdt_lower DECIMAL,
pobreza_utdt_upper DECIMAL,
pobreza_utdt_proyectada DECIMAL,
pobreza_utdt_proyectada_lower DECIMAL,
pobreza_utdt_proyectada_upper DECIMAL,
fetched_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS pobreza_normalized (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
pobreza_indec DECIMAL,
pobreza_utdt DECIMAL,
pobreza_utdt_lower DECIMAL,
pobreza_utdt_upper DECIMAL,
pobreza_utdt_proyectada DECIMAL,
pobreza_utdt_proyectada_lower DECIMAL,
pobreza_utdt_proyectada_upper DECIMAL,
pobreza DECIMAL,
preliminar BOOLEAN DEFAULT false,
last_update TIMESTAMP DEFAULT NOW()
);
-- ============================================
-- INFLACION (mensual)
-- ============================================
CREATE TABLE IF NOT EXISTS inflacion_raw (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
ipc_indec_general DECIMAL,
ipc_indec_nucleo DECIMAL,
ipc_equilibra DECIMAL,
ipc_online DECIMAL,
fetched_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS inflacion_normalized (
id SERIAL PRIMARY KEY,
fecha DATE UNIQUE NOT NULL,
ipc_indec DECIMAL,
ipc_nucleo_indec DECIMAL,
ipc_equilibra DECIMAL,
ipc_online DECIMAL,
ipc DECIMAL,
last_update TIMESTAMP DEFAULT NOW()
);
-- ============================================
-- INDEXES
-- ============================================
CREATE INDEX IF NOT EXISTS idx_indicators_catalog_id ON indicators_catalog(id);
CREATE INDEX IF NOT EXISTS idx_emision_fecha ON emision_raw(fecha);
CREATE INDEX IF NOT EXISTS idx_emae_fecha ON emae_raw(fecha);
CREATE INDEX IF NOT EXISTS idx_bma_fecha ON bma_raw(fecha);
CREATE INDEX IF NOT EXISTS idx_recaudacion_fecha ON recaudacion_raw(fecha);
CREATE INDEX IF NOT EXISTS idx_poder_fecha ON poder_adquisitivo_raw(fecha);
CREATE INDEX IF NOT EXISTS idx_deuda_fecha ON deuda_raw(fecha);
CREATE INDEX IF NOT EXISTS idx_pobreza_fecha ON pobreza_raw(fecha);
CREATE INDEX IF NOT EXISTS idx_inflacion_fecha ON inflacion_raw(fecha);
-- ============================================
-- MANUAL OVERRIDES (datos manuales que prevalecen sobre API)
-- ============================================
CREATE TABLE IF NOT EXISTS manual_overrides (
id SERIAL PRIMARY KEY,
category VARCHAR(50) NOT NULL, -- 'otros' o 'tesoro'
month VARCHAR(7) NOT NULL, -- formato 'YYYY-MM'
value DECIMAL NOT NULL,
updated_at TIMESTAMP DEFAULT NOW(),
UNIQUE(category, month)
);
CREATE INDEX IF NOT EXISTS idx_manual_overrides_month ON manual_overrides(month);
-- ============================================
-- INDICATOR PUBLICATIONS (fechas de publicación oficial)
-- ============================================
CREATE TABLE IF NOT EXISTS indicator_publications (
id VARCHAR(50) PRIMARY KEY,
published_at DATE NOT NULL,
period_date DATE,
updated_at TIMESTAMP DEFAULT NOW()
);
-- ============================================
-- RATE LIMITS (durable API throttling)
-- ============================================
CREATE TABLE IF NOT EXISTS rate_limits (
key TEXT PRIMARY KEY,
count INTEGER NOT NULL,
reset_time TIMESTAMPTZ NOT NULL,
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_rate_limits_reset_time ON rate_limits(reset_time);