93 lines
3.1 KiB
SQL
93 lines
3.1 KiB
SQL
-- Trade Intelligence — External API Data Store
|
|
-- Sources: UN Comtrade, IMF, World Bank, Eurostat
|
|
|
|
CREATE DATABASE IF NOT EXISTS trade_intelligence;
|
|
|
|
-- UN Comtrade: bilateral trade flows
|
|
CREATE TABLE IF NOT EXISTS trade_intelligence.comtrade
|
|
(
|
|
id UUID DEFAULT generateUUIDv4(),
|
|
period UInt32, -- YYYYMM or YYYY
|
|
period_type LowCardinality(String), -- M=monthly, A=annual
|
|
reporter_code UInt16,
|
|
reporter String,
|
|
partner_code UInt16,
|
|
partner String,
|
|
trade_flow LowCardinality(String), -- Import | Export | Re-Import | Re-Export
|
|
commodity_code String,
|
|
commodity String,
|
|
netweight_kg Float64,
|
|
trade_value_usd Float64,
|
|
qty Float64,
|
|
qty_unit LowCardinality(String),
|
|
fetched_at DateTime DEFAULT now()
|
|
)
|
|
ENGINE = ReplacingMergeTree(fetched_at)
|
|
ORDER BY (period, reporter_code, partner_code, trade_flow, commodity_code)
|
|
PARTITION BY toString(intDiv(period, 100));
|
|
|
|
-- IMF World Economic Outlook
|
|
CREATE TABLE IF NOT EXISTS trade_intelligence.imf_weo
|
|
(
|
|
country_code LowCardinality(String),
|
|
country String,
|
|
indicator_code LowCardinality(String),
|
|
indicator String,
|
|
year UInt16,
|
|
value Nullable(Float64),
|
|
unit LowCardinality(String),
|
|
scale LowCardinality(String),
|
|
fetched_at DateTime DEFAULT now()
|
|
)
|
|
ENGINE = ReplacingMergeTree(fetched_at)
|
|
ORDER BY (country_code, indicator_code, year);
|
|
|
|
-- World Bank Open Data
|
|
CREATE TABLE IF NOT EXISTS trade_intelligence.worldbank
|
|
(
|
|
country_code LowCardinality(String),
|
|
country String,
|
|
indicator_code LowCardinality(String),
|
|
indicator String,
|
|
year UInt16,
|
|
value Nullable(Float64),
|
|
fetched_at DateTime DEFAULT now()
|
|
)
|
|
ENGINE = ReplacingMergeTree(fetched_at)
|
|
ORDER BY (country_code, indicator_code, year);
|
|
|
|
-- Eurostat: Comext trade data (intra+extra EU)
|
|
CREATE TABLE IF NOT EXISTS trade_intelligence.eurostat_comext
|
|
(
|
|
period UInt32,
|
|
reporter LowCardinality(String),
|
|
partner LowCardinality(String),
|
|
product String, -- CN8 code
|
|
flow LowCardinality(String), -- 1=Import 2=Export
|
|
value_eur Float64,
|
|
quantity_ton Float64,
|
|
stat_value Float64,
|
|
fetched_at DateTime DEFAULT now()
|
|
)
|
|
ENGINE = ReplacingMergeTree(fetched_at)
|
|
ORDER BY (period, reporter, partner, product, flow)
|
|
PARTITION BY toString(intDiv(period, 100));
|
|
|
|
-- Predictions: AI-generated trade forecasts stored here
|
|
CREATE TABLE IF NOT EXISTS trade_intelligence.predictions
|
|
(
|
|
id UUID DEFAULT generateUUIDv4(),
|
|
created_at DateTime DEFAULT now(),
|
|
commodity_code String,
|
|
commodity String,
|
|
reporter String,
|
|
partner String,
|
|
horizon_months UInt8,
|
|
predicted_value_usd Float64,
|
|
confidence Float32,
|
|
model LowCardinality(String),
|
|
features String, -- JSON
|
|
rationale String
|
|
)
|
|
ENGINE = MergeTree()
|
|
ORDER BY (created_at, commodity_code, reporter);
|