// projects / case-study · 01

Snowflake migration
for healthcare BI.

Rewrote a sprawling SQL Server reporting layer onto Snowflake + Oracle Analytics Cloud. Eight-times query speedup, ten-million-plus rows migrated, full Power BI semantic model refactored from scratch.

// role
Lead BI engineer
// timeline
2023 — present
// type
work · anonymized
// 01 / problem

Reporting layer that wouldn't scale.

Operational reporting was anchored on a SQL Server warehouse that had grown for a decade. Multi-million-row tables behind dashboards used by service operations to monitor SLA adherence and patient-impact metrics — and the dashboards were getting slower every quarter.

Key symptoms:

  • Power BI refreshes timing out during business hours
  • Stored queries with hand-tuned joins that no one alive understood
  • Semantic model bloated with many-to-many fixes and shadow measures
  • No clear path to incremental load — full refresh every time
// 02 / approach

Rebuild the layer, don't lift-and-shift.

Migrated source-of-truth queries to Snowflake views, with companion logical models in OAC. Rewrote stored queries from scratch instead of porting them — preserved business rules, dropped the legacy scaffolding.

-- representative Snowflake view (anonymized)
CREATE OR REPLACE VIEW ops.encounter_sla_v2 AS
SELECT e.encounter_id, e.patient_uid,
  DATEDIFF('hour', e.opened_at, COALESCE(e.resolved_at, CURRENT_TIMESTAMP())) AS hours_open,
  CASE WHEN e.resolved_at IS NULL THEN 'open' ELSE 'closed' END AS status
FROM raw.encounters e
WHERE e.opened_at >= DATEADD('year', -2, CURRENT_DATE());
  • Staged ingestion with incremental loads on warehouse-friendly clustering keys
  • Converted complex DAX → Oracle Logical SQL; validated via reconciliation tests
  • Rebuilt Power BI semantic model — normalized relationships, killed shadow measures
// 03 / outcome

Faster dashboards, cleaner model.

query speedup
rows migrated
10M+
refresh time
−72%

Most importantly, the semantic model became diagnosable. New measures land in a day instead of a week, and reconciliations against source-of-truth are routine instead of dramatic.

// 04 / stack

Stack.

Snowflake Oracle Analytics Cloud Power BI DAX Oracle Logical SQL SQL Server (source) HL7