Senior Analytics Engineer (Financial Data & Reporting) — Power BI / SQL / Data Modeling

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Full Time

SALARY

870

HOURS PER WEEK

40

DATE UPDATED

Mar 16, 2026

JOB OVERVIEW

Senior Analytics Engineer
IMPORTANT: Candidates who don't complete Round-1 are NOT considered.
----------

Why this role exists
Turn messy operational data into clean models, deterministic validations, reconciled outputs, and executive-ready evidence—so leadership can file on time, pass reviews, and make decisions with confidence. You’ll move quickly from MVP to repeatable, low-touch workflows.

What you’ll do (outcomes)
1. Model & Validate: Build tidy star-schema models; write rule-based checks (completeness, allowed values, tie-outs, negative/zero policies) that prevent bad data from shipping.
2. Reconcile: Prove totals reconcile to control numbers; maintain balance ? flow bridges; keep exceptions at zero by close.
3. Evidence-ready outputs: Produce clean, fixed-layout exports and one-page views that hold up under review.
4. Cadence & reliability: Own refresh schedules, light automation for deadline windows, and receipt/acknowledgment capture.
5. Iterate to MVP: Ship weekly increments, simplify the path to first-pass acceptance, and reduce manual touches.

Must-have qualifications
1. SQL + data modeling: Built analysis-ready models; can explain grain, joins, lineage.
2. Validation mindset: You write acceptance-grade rules (uniqueness, ranges, null policies, reconciliations) and block releases when controls fail.
3. Power BI competence: Data model + core DAX + clean pages; can wire simple RLS and test it.
4. Clarity & artifacts: Concise written English; tidy notes; reproducible steps.
5. Portfolio/snippets: PBIX/SQL/screenshots + a short “what changed & why” note.

We welcome adjacent profiles: strong Data Engineers with modeling/quality chops, or Power BI Analysts who write SQL and adopt modular/dbt-style patterns. If you’re great at rules and reconciliations, we’ll teach the missing bits.

Nice-to-have
- Modular SQL transforms (dbt-style).
- Expectation-style data-quality tests and exception reporting.
- Basic orchestration/automation (scheduled refresh, light UI automation, receipt capture).
- Finance literacy (control totals, variance basics).

System requirements
- Windows 10/11, Power BI Desktop, 16GB RAM (recommended minimum), stable internet ?25 Mbps.

How we work
- Async-first, low meetings: clear runbooks, quick reviews, Ship > Talk.
- Short loops: weekly deliverables that reduce rework and manual effort.
- Ownership: you propose controls, not just visuals.
- Microsoft-first, lean stack: we teach specifics.
- Acceptance bar (used in trials & ongoing work)
- Models reconcile to control totals within tolerance.
- All validations green at file time; exceptions cleared with notes.
- Evidence pages export cleanly (pagination, labels, links).
- A trained teammate can reproduce the flow at 5PM on close day.

30/60/90 milestones
Day 30: Core transaction slice modeled; ?10 validation checks; one exceptions view.
Day 60: Balance-to-flow tie-outs operational; daily variance view.
Day 90: Coverage/adequacy slice packaged with artifacts; light automations for deadline windows.

Compensation & schedule
- Core availability 2:00–8:30 PM EST; 8:30–10:30 PM EST (As-needed window). Pay applies to meetings + assigned build work only.
- Contractor, target ~$5-7 USD/hour.

How to apply (required)
- Complete a short, free Round-1 audition (30-60 min, offline).
- We provide a small regulatory-reporting sample dataset plus context.

You submit:
- A rules list (what you’d validate and why)
- A compact transform plan (SQL-like or pseudo-dbt)
- One clean Power BI page (PBIX) with a brief reconciliation note
- A 90-sec Loom walk-through showing your PBIX and transform logic

Applicant Keywords
Power BI, DAX, SQL, Star Schema, RLS, Data Modeling, ETL/ELT, Data Validation, Reconciliation, Paginated Export, Automation, Analytics Engineer, Data Engineer

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0265
Total Execution Time  0.0279
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,625,600 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-Analytics-Engineer-Financial-Data-Reporting-Power-BI-SQL-Data-Modeling-1523800
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0199 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1523800
 LIMIT 1 
0.0042   SELECT *
FROM `employers`
WHERE `employer_id` = 611945
 LIMIT 1 
0.0009   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1523800
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-04-16',ej.date_added) duration_daysDATEDIFF('2026-04-16',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-04-16',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1523800' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1523800 
0.0012   UPDATE employer_jobs SET hit_counts '***Nov-29-2025=252***Nov-30-2025=93***Dec-01-2025=98***Dec-02-2025=32***Dec-03-2025=21***Dec-04-2025=12***Dec-05-2025=12***Dec-06-2025=7***Dec-07-2025=5***Dec-08-2025=9***Dec-09-2025=6***Dec-10-2025=4***Dec-11-2025=3***Dec-12-2025=6***Dec-13-2025=2***Dec-14-2025=3***Dec-15-2025=12***Dec-16-2025=3***Dec-17-2025=3***Dec-18-2025=5***Dec-19-2025=4***Dec-20-2025=6***Dec-22-2025=3***Dec-23-2025=6***Dec-24-2025=1***Dec-25-2025=2***Dec-26-2025=1***Dec-27-2025=6***Dec-29-2025=6***Dec-30-2025=10***Dec-31-2025=26***Jan-01-2026=51***Jan-02-2026=23***Jan-03-2026=10***Jan-04-2026=10***Jan-05-2026=11***Jan-06-2026=9***Jan-07-2026=4***Jan-08-2026=4***Jan-09-2026=6***Jan-10-2026=1***Jan-11-2026=5***Jan-12-2026=14***Jan-13-2026=7***Jan-14-2026=6***Jan-15-2026=7***Jan-16-2026=3***Jan-17-2026=3***Jan-18-2026=4***Jan-19-2026=2***Jan-21-2026=2***Jan-22-2026=9***Jan-23-2026=3***Jan-24-2026=2***Jan-25-2026=4***Jan-26-2026=5***Jan-27-2026=2***Jan-28-2026=1***Jan-29-2026=3***Jan-30-2026=6***Jan-31-2026=2***Feb-01-2026=34***Feb-02-2026=56***Feb-03-2026=20***Feb-04-2026=18***Feb-05-2026=19***Feb-06-2026=5***Feb-07-2026=5***Feb-08-2026=9***Feb-09-2026=9***Feb-10-2026=6***Feb-11-2026=13***Feb-12-2026=8***Feb-13-2026=5***Feb-14-2026=2***Feb-15-2026=7***Feb-16-2026=3***Feb-17-2026=10***Feb-18-2026=3***Feb-19-2026=3***Feb-20-2026=5***Feb-21-2026=3***Feb-22-2026=7***Feb-23-2026=4***Feb-24-2026=5***Feb-25-2026=5***Feb-26-2026=3***Feb-27-2026=3***Mar-01-2026=8***Mar-02-2026=4***Mar-04-2026=9***Mar-05-2026=1***Mar-06-2026=3***Mar-07-2026=5***Mar-08-2026=2***Mar-09-2026=5***Mar-10-2026=3***Mar-11-2026=6***Mar-12-2026=2***Mar-13-2026=6***Mar-14-2026=2***Mar-15-2026=1***Mar-16-2026=307***Mar-17-2026=32***Mar-18-2026=16***Mar-19-2026=12***Mar-20-2026=17***Mar-21-2026=1***Mar-22-2026=9***Mar-23-2026=8***Mar-24-2026=6***Mar-25-2026=2***Mar-26-2026=8***Mar-27-2026=6***Mar-28-2026=5***Mar-29-2026=4***Mar-30-2026=34***Mar-31-2026=41***Apr-01-2026=28***Apr-02-2026=13***Apr-03-2026=11***Apr-04-2026=13***Apr-06-2026=3***Apr-07-2026=2***Apr-08-2026=2***Apr-09-2026=3***Apr-10-2026=2***Apr-11-2026=2***Apr-16-2026=1' WHERE job_id'1523800'  
0.0008   UPDATE employer_jobs SET monthly_hits '***Nov-2025=345***Dec-2025=314***Jan-2026=219***Feb-2026=270***Mar-2026=564***Apr-2026=80' WHERE job_id'1523800'  
0.0014   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1523800' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1523800 
0.0089   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '611945'
AND `date_added` >= '2022-06-08' 
0.0005   select from teasers 
0.0003   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)