Skip to content

Open nowPosted 969 days ago

Analytics Engineer

OPSWAT96 open roles

Where
Ho Chi Minh City, Ho Chi Minh City, Vietnam
Get the CV for this job

From $25 per CV, paid once. No subscription.

Your applicationOpen nowAnalytics EngineerOPSWAT · Ho Chi Minh City, Ho Chi Minh City, Vietnam
  1. YouYes, apply to this one.

  2. CV RocketCV written for this posting.

  3. 25 readersRecruiter, hiring manager, skeptic. Round after round.

  4. CV RocketApplied on OPSWAT's own form.

The reply lands in your private mailbox

3×more interviews than doing it yourself with ChatGPT.

The clock on this job

Early applications get read.

13.4% of postings close within 7 days. Measured by our own scanner across the market. OPSWAT postings stay open a median of 23 days.

Share of postings closed within
  1. 2.2%1 day
  2. 4.6%3 days
  3. 13.4%7 days
  4. 21.6%14 days
  5. 36.2%30 days
  6. 59.0%60 days
This job: posted 969 days ago

OPSWAT median: 23 days open

The posting

OPSWAT, a global leader in IT, OT, and ICS critical infrastructure cybersecurity, delivers an end-to-end platform that gives public and private sector organizations and enterprises the critical advantage needed to protect their complex networks, secure their devices, and ensure compliance. Over the last 20 years our commitment to innovative technology has earned the trust of more than 1,700 organizations, governments, and institutions globally, solidifying our role in protecting the world’s critical infrastructure and securing our way of life.

The Position

OPSWAT's data platform turns CRM and business-system data into governed, documented, tested tables that business teams can read without asking what a column means. It is built on dbt Core, layered source → staging → intermediate → mart, and it is migrating on two fronts: a large estate of legacy stored procedures into that model, one domain at a time, with value parity proven before anything is cut over and the warehouse platform itself, from Microsoft Fabric Warehouse to Azure PostgreSQL, potentially an Elastic Cluster. You will work across both engines while that move completes.

As a member of the Data Engineering team, you will own the modelling for the domains assigned to you, and the programme's cross-cutting craft: the dbt layer standards and the tooling that enforces them. This is a hands-on modelling role for someone who wants their name on the rules, not just on the tickets. You will decide what "correct" looks like for a model, prove it with numbers, and make the standard checkable by script rather than by memory. You will work in an AI-assisted engineering workflow, where agentic tooling accelerates the work but the modelling decisions: grain, layer, parity.

You will work as one half of a deliberate pairing: the Data Engineering team on the technical side, Product Analysts embedded in the product pods, one per business domain on the business side. Product Analysts own what the domain means, the certified metrics and their definitions, and whether the result is right in business terms. Analytics Engineering owns the technical spectrum: modelling, layers, grain, keys, tests, parity, and the standards and tooling the models are built to. Both halves write SQL and dbt; they bring the domain, you carry the technical bar, and the two halves answer for the same number.

What You Will Be Doing

  • Model the business domains you are assigned in dbt Core from their source tables through layered staging and intermediate models to tested marts; working across Microsoft Fabric and Azure PostgreSQL as the platform migrates.
  • Work as the technical counterpart to the Product Analysts who own each business domain: they bring the business definition and the questions the data must answer; you make the models correct, tested, and proven by parity.
  • Build the tested marts that certified metrics sit on, so a Product Analyst's definition and the model beneath it never drift apart.
  • Prove value parity between each dbt mart and the legacy stored procedure it replaces: row counts and key aggregates recorded, not asserted, before any consumer is repointed.
  • Own and evolve the dbt layer standards, what belongs in each layer, where collation is normalised, one path in per source and the scripts that enforce them.
  • Declare and test primary keys, and write tests that fail when the model breaks, not checks that pass no matter what the data does.
  • Repoint consumers from legacy procedure outputs to dbt models in the right order (readers before procedures), and record each cutover so the sequence is auditable.
  • Work with your Data Engineering teammates to keep the production dbt build on schedule, so parity is a number tracked daily rather than a measurement obtained occasionally.
  • Review pull requests on the models you own within one working day; they are production-facing, so a mistake there has no legacy fallback.
  • Work with the Product Analysts and Data Engineers who own the other business domains wherever models meet at the boundaries.

What we need from you

  • 3+ years in analytics engineering or data engineering, with production ownership of transformation models.
  • Expert SQL: window functions, CTEs, and multi-entity joins at warehouse scale; strong in the SQL Server / T-SQL dialect today, and fluent enough in PostgreSQL to move with the platform.
  • Hands-on dbt. You have built and maintained a dbt project (models, layers, refs, tests, documentation), not only run someone else's.
  • Dimensional modelling judgement: you can state the grain of a model, choose its keys, and place its logic in the right layer.
  • A git-based workflow: pull requests, CI checks, review discipline; plus Python for the tooling around the models.
  • Working fluency with AI-assisted engineering tooling. You set the task, review the output, and own what lands in production.
  • The ability to read a legacy stored procedure and say what business question it answers, and where it quietly disagrees with the documentation.
  • Comfort working directly with Product Analysts turning "this number looks wrong" into a testable question and a fix, and explaining a modelling trade-off in business terms.
  • Care at data boundaries: you treat a join that silently matches nothing as a defect, not a detail.

It Would Be Great If You Also Have

  • Azure PostgreSQL (Elastic Cluster), Microsoft Fabric Warehouse, OneLake, or another Delta lakehouse in your background.
  • A warehouse platform migration you helped carry: engine, dialect, or both.
  • Experience migrating stored procedures or warehouse SQL into a transformation framework such as dbt.
  • Airflow (or similar) orchestration experience.
  • Data-quality, lineage, or parity/audit tooling in your history.
  • Standards or tooling you authored that other engineers actually follow.

What success looks like in your first 60 days

  • The domains assigned to you move through the cutover stages: modelled to the layer standards → readers repointed → value parity proven with recorded numbers → cutover recorded.
  • New and modified models pass the layer-standards check, and declared primary keys resolve against the columns the models actually emit.
  • Parity coverage for your domain is a tracked figure, published, not a one-off measurement.
  • Pull-request reviews on the models you own land within one working day.
  • The Product Analysts you pair with treat your models as the source of truth for their domain, their certified metrics trace back to marts you own, and they can read those models without asking what a column means.

OPSWAT is an equal opportunity employer. We celebrate diversity and are committed to providing an environment where equal employment opportunities are extended to all employees and applicants, free of discrimination and harassment of any type. All employment decisions are based on individual qualifications, job requirements, and business needs without regard to race, color, religion, age, sex, national origin, disability status, genetics, protected veteran status, sexual orientation, gender identity or expression, or any other category protected by federal, state, or local laws.

Recruiting Agencies: we do not accept unsolicited resumes from third party agencies for any of our open positions. To submit resumes for our jobs, there must be a recruiting contract approved by our legal team and endorsed by both parties. We are currently not accepting additional 3rd party agencies at this time.

From $25, paid onceGet the CV for this job

What happens when you press

One press. We do the rest.

  1. A CV for this posting

    Written against OPSWAT's own wording, from every piece of relevant proof in your profile.

  2. 25 readers review it

    Recruiter, hiring manager, skeptic and more read every draft, round after round. You get the best round.

    The review screen in CV Rocket: how each CV was read, round by round.
  3. We apply on OPSWAT's form

    Our application engine gets through the hardest forms there are. Where a question needs you, AI suggests the best answer. Don't want us applying from our IP addresses? Use our Chrome extension: we apply straight from your own browser.

    An application in CV Rocket: every answer filled in on the employer's form.
  4. Every reply, sorted

    OPSWAT's answer lands in your private mailbox, and we classify it on arrival: interview, question, rejection.

    The CV Rocket inbox: each employer reply classified as an interview, an action or a rejection.
  5. Reply with AI

    AI helps you write the email, checks it and sends it. We show you whether the recruiter read it.

  6. The interview in your calendar

    Full integration with your calendar. The invitation goes straight in.

    An interview invitation in the CV Rocket inbox, added to the candidate's calendar.
Get the CV for this job

From $25 per CV, paid once. No subscription.

Why it works

3×

more interviews than doing it yourself with ChatGPT.

ChatGPT writes a CV and never learns what happened to it. We see every reply. For each CV we know:

  • How it was written, and how the review scored it
  • When we applied, and how long after the posting went up
  • Which posting, which company, which city
  • Who got the interview, and who heard nothing

That is how we know which CVs get called.

Get the CV for this job

From $25 per CV, paid once. No subscription.

The numbers game

More applications. More interviews.

Every application goes out with its own CV, written for that posting and paid once. Send enough of them and the law of large numbers finds you the job.

By hand5–10
With CV Rocket100
applications a day

Nearby

Live postings like this one

Same employer first, then the same role elsewhere.

Before you press

Straight answers

Get the CV for this job

From $25 per CV, paid once. No subscription.

What if my background isn't good enough?

We make the most of the background you have. The CV uses every piece of relevant proof your profile holds, and one of the 25 readers reads your whole profile and flags what the CV left out.

Do you really apply for me?

Yes, on the employer's own form, the hardest ones included. Where a question needs you, you answer it right there and AI suggests the best answer. Don't want us applying from our IP addresses? Use our Chrome extension: we apply straight from your own browser.

Is it a subscription?

No. You pay once per CV, from $25. Every application goes out with its own CV, written for that posting.

One job. One CV.
Paid once.

Pick the posting you want. We write for it, apply for you and catch the reply.

Get the CV for this job

From $25 per CV, paid once. No subscription.