You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit e83d013
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: docs/03_schema_contracts.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,7 +42,7 @@ text + `_error_reason`, `_ingested_at`) rather than failing the batch — see Ph
42
42
|`silver.entity_alias`| one row per alias |`entity_id`, `alias_name`, `alias_normalized`| Normalized = uppercased, punctuation-stripped, whitespace-collapsed — the actual normalization function is a Phase 3 deliverable |
43
43
|`silver.entity_address`| one row per address |`entity_id`, `address_line`, `city`, `country`| Parsed out of OFAC's combined `city_state_zip_etc` and OpenSanctions' free-text `addresses`|
44
44
|`silver.account`| one row per account |`account_id` (= AMLSim `nodeid`) |`synthetic_holder_name`, `synthetic_country`, `synthetic_dob` (the account's own fabricated identity attributes from the synthetic identity-linkage step — **not** a FK to `silver.entity`, see below), `init_balance`, `opened_date` (synthetic, derived from the date anchor) |
45
-
|`silver.transaction`| one row per transaction |`transaction_id` (surrogate) |`source_account_id`, `target_account_id`, `amount`, `currency` (assumed USD), `event_time` (derived from synthetic date anchor + AMLSim `time` step) |
45
+
|`silver.transaction`| one row per transaction |`transaction_id` (surrogate) |`source_account_id`, `target_account_id`, `amount`, `currency` (assumed USD), `event_time` (derived from synthetic date anchor + AMLSim `time` step), `event_date` (partition column for pruning)|
46
46
|`silver.match_candidate`| one row per candidate match |`match_id`|`account_id`, `entity_id` (the watchlist entity), `match_confidence_band` (`exact` / `strong` / `weak`), `match_score`, `matched_on` (name/alias/dob/country), `explanation` (structured — which fields matched and how) |
47
47
|`silver.elliptic_txn_risk`| one row per Elliptic tx |`txId`|`class`, `time_step`, `in_degree`, `out_degree` (from `bronze.elliptic_txs_edgelist`), `illicit_neighbor_ratio` (share of 1-hop neighbors labeled illicit — the interpretable signal this dataset can actually offer, since the 165 raw features can't be feature-engineered further). Real SQL self-join/window-function work, standalone graph-topology analytics — not natively joinable to `silver.account`, see the bridge table below. |
48
48
|`silver.network_risk_reference`| one row per `account_id` that received a synthetic linkage |`account_id`|`network_risk_exposure` (0-1, sampled from the `illicit_neighbor_ratio` distribution in `silver.elliptic_txn_risk`), `linkage_note` (fixed string documenting this is a simulated bridge, not a real Bitcoin-to-remittance-account linkage) — see caveat below |
@@ -80,7 +80,8 @@ linkage is disclosed.
80
80
|`gold.entity_risk_profile`| one row per entity/account, per `as_of_date`|`entity_id`, `account_id`, `as_of_date`|`watchlist_match_summary` (struct), behavioral features: `velocity_1d/7d/30d`, `counterparty_diversity_30d`, `burst_flag`, `round_dollar_ratio`, `risky_counterparty_exposure`, `network_risk_exposure` (from `silver.network_risk_reference`, nullable — only populated for accounts that received the synthetic Elliptic linkage); `composite_risk_score`, `score_band`, `top_contributing_factors` (array of struct: factor name, value, weight/contribution) |
81
81
|`gold.prioritized_alert_queue`| one row per active alert |`alert_id`|`entity_id`, `account_id`, `priority_rank`, `composite_risk_score`, `escalation_reason` (`sanctions_hard_override` vs. `behavioral_threshold`), `status` (`new`/`reviewed`/`suppressed`), `generated_at`|
82
82
|`gold.watchlist_match_summary`| one row per watchlist entity |`watchlist_entity_id`|`matched_account_count`, `highest_confidence_band`, `jurisdictions`, `risk_type`|
83
-
|`gold.ops_control`| one row per pipeline batch |`pipeline_name`, `batch_id`|`last_successful_batch_id`, `processed_row_count`, `expected_row_count`, `lag_seconds`, `freshness_status` (`fresh`/`stale`/`degraded`), `dead_letter_count`, `checkpoint_offset` — the silent-failure/ops layer from Phase 6/8 |
0 commit comments