
Analytics Data Engineer
- 28 installs
- 7 repo stars
- Updated May 20, 2026
- daemon-blockint-tech/agentic-enteprises-skill
Build analytics-engineering pipelines: dbt project layout, staging-to-mart models, incremental/CDC loads, tests, and lineage for BI.
About
Guides analytics engineering including dbt project structure, staging/mart models, incremental/CDC loads, data tests, and lineage. A developer uses it when building or refactoring analytics models and aligning warehouse tables to business metrics.
- dbt layering: staging, intermediate, mart with naming conventions
- Incremental/CDC models plus tests, freshness, and contracts
Analytics Data Engineer by the numbers
- 28 all-time installs (skills.sh)
- Ranked #1,126 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
- Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/daemon-blockint-tech/agentic-enteprises-skill --skill analytics-data-engineerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 28 |
|---|---|
| repo stars | ★ 7 |
| Last updated | May 20, 2026 |
| Repository | daemon-blockint-tech/agentic-enteprises-skill ↗ |
What it does
Build analytics-engineering pipelines: dbt project layout, staging-to-mart models, incremental/CDC loads, tests, and lineage for BI.
Files
Analytics Data Engineer
When to Use
- Structure a dbt project (layers, naming, materializations)
- Build staging → intermediate → mart pipelines in the warehouse
- Implement incremental, snapshot, or CDC-driven models
- Add tests (unique, not null, relationships, custom SQL) and freshness checks
- Document models and expose lineage for BI and stakeholders
- Define marts that map to metrics and dashboards
- Set up CI for analytics SQL (compile, test, slim CI)
- Debug metric mismatches between mart and dashboard
When NOT to Use
- Enterprise mesh, governance program, platform selection →
data-architect - Partition/cluster tuning without dbt context →
data-warehouse-engineer - Chart choice, executive dashboards, stakeholder storytelling →
bi-analyst - Feature engineering, training, experiments →
data-scientist - Data org roadmap and steward operations →
data-manager - Analytics eng hiring, squad roadmap, launch governance →
analytics-data-engineering-manager-product - Generic app CI/CD without analytics patterns →
devops
Related skills
| Need | Skill |
|---|---|
| Warehouse SQL tuning, star schema theory | data-warehouse-engineer |
| KPI definitions and dashboards | bi-analyst |
| Platform and domain architecture | data-architect |
| Pipeline on-call and platform SLOs | data-system-ops-lead |
| ML and advanced stats | data-scientist |
| Requirements and metric business rules | business-analyst |
Core Workflows
1. Project layout and conventions
Layering, naming (stg_, int_, fct_, dim_), materialization defaults, env targets.
See `references/dbt_project_structure.md`.
2. Modeling for analytics
Facts, dimensions, wide marts, grain, degenerate dimensions, bridge tables.
See `references/analytics_modeling.md`.
3. Incremental and CDC
Merge strategies, full-refresh exceptions, late-arriving facts.
See `references/incremental_cdc.md`.
4. Quality and contracts
Tests, severity, source freshness, optional contracts with downstream.
See `references/testing_quality.md`.
5. Docs, lineage, exposures
Model descriptions, column docs, exposures to BI tools.
See `references/docs_lineage_exposures.md`.
6. Metrics alignment
Grain, definitions, ownership with bi-analyst and business-analyst.
See `references/metrics_alignment.md`.
Output standards
- Every mart documents grain and primary key in YAML
- Tests on keys and critical business rules before merge
- PR includes: models changed, test plan, backfill impact, downstream exposures
- No breaking grain change without migration note to BI
When to load references
- dbt layout →
references/dbt_project_structure.md - Modeling →
references/analytics_modeling.md - Incremental →
references/incremental_cdc.md - Tests →
references/testing_quality.md - Docs/CI →
references/docs_lineage_exposures.md - Metrics →
references/metrics_alignment.md
Analytics Modeling
Grain first
Every mart answers: one row = what?
Document in model YAML:
description: One row per order line per day (order_date)Changing grain is a breaking change for BI.
Patterns
| Pattern | When |
|---|---|
| Star | Facts + conformed dimensions |
| Wide mart | Self-serve BI; denormalized |
| Bridge | Many-to-many (campaign ↔ user) |
| Activity schema | Optional; event-centric products |
Coordinate star-schema depth with data-warehouse-engineer for platform-wide conformed dimensions.
Facts
- Declarative measures; same grain
- Handle late-arriving dimensions in intermediate layer
- Surrogate keys stable across reloads
Dimensions
- SCD2 via snapshots or
valid_from/valid_toin intermediate - Role-playing dates as separate keys in fact (order_date_key, ship_date_key)
Intermediate layer role
- Complex joins and business rules here
- Keeps marts thin and testable
- Not exposed in catalog to general analysts
Performance hints
- Pre-aggregate heavy metrics in
int_or mart variants (fct_orders_daily) - Align cluster/partition keys with filter columns — see
data-warehouse-engineer
dbt Project Structure
Layering
| Layer | Prefix | Purpose |
|---|---|---|
| Sources | source() | Raw landing; minimal logic |
| Staging | stg_ | Clean, rename, type, dedupe keys |
| Intermediate | int_ | Business logic joins; not exposed to BI |
| Marts | fct_, dim_, mart_ | Analytics-ready; documented grain |
Rule: BI tools only query marts (and approved exposures), not staging.
Naming
{entity}singular for dimensions, events plural for facts where clear- Suffix role:
_daily,_hourlyfor snapshots of grain - Avoid environment names in model names
Materializations (defaults)
| Layer | Default | Notes |
|---|---|---|
| Staging | view or ephemeral | Cheap rebuild |
| Intermediate | view or table | Table if expensive |
| Marts | table or incremental | Incremental for large facts |
Override in dbt_project.yml by folder.
Packages and macros
- Centralize surrogate keys, timezone, currency in macros
- Pin package versions in
packages.yml
Environments
| Target | Use |
|---|---|
| dev | Personal schema or prefix |
| ci | Ephemeral PR schema |
| prod | Stable schemas; no full-refresh without approval |
Anti-patterns
- Business logic in staging
- Circular dependencies between intermediates
select *in production models
Documentation, Lineage, and Exposures
Model documentation
Minimum per mart in schema.yml:
description— business purpose- Column
descriptionfor keys and measures metafor owner, PII tier, refresh cadence
Lineage
- dbt docs generate DAG; publish to catalog (dbt Cloud, OpenMetadata, etc.)
- Tag PII columns for governance alignment with
data-architect
Exposures
Declare downstream dashboards in exposures.yml:
exposures:
- name: executive_revenue_dashboard
type: dashboard
depends_on:
- ref('fct_revenue')Use for impact analysis when changing fct_revenue.
CI documentation
- Fail PR if undocumented public mart columns (custom test or linter)
- Auto-deploy docs site on main merge
README for analysts
Short analyst-facing note:
- Approved tables and grains
- Known limitations and refresh time
- Contact for metric definition changes
Handoff to BI
| Artifact | Consumer |
|---|---|
| Exposures | Impact analysis |
| Column docs | Looker/Tableau field descriptions |
| Grain statement | Metric validation with bi-analyst |
Incremental and CDC
When to incremental
| Signal | Approach |
|---|---|
| Large fact table | incremental materialization |
| Append-only events | Timestamp watermark |
| CDC from OLTP | Merge on primary key |
| Small dimension | Full refresh acceptable |
Strategies
| Strategy | dbt pattern | Risk |
|---|---|---|
| Append | insert_overwrite / append new partitions | Duplicates if rerun wrong |
| Merge | unique_key + merge | Requires reliable key |
| Delete+insert | Partition replace | Window must be correct |
| Snapshot | dbt snapshot | Storage growth |
Watermarks
- Use
updated_atwith lookback buffer (e.g. 3 days) for late updates - Document lookback in model description
- Full-refresh job on schedule for small tables only
CDC sources
- Fivetran/Airbyte/DMS — trust
_fivetran_syncedor equivalent - Deletions: soft-delete flag in staging; filter in mart
Backfill playbook
1. Pause downstream dashboards or warn BI 2. Run full-refresh in maintenance window 3. Validate row counts and key uniqueness tests 4. Reconcile sample metrics with bi-analyst
Full refresh guardrails
- Require PR label and approver for prod full-refresh on large models
- Use
--select model+carefully in CI
Metrics Alignment
Definition of done for a metric
| Field | Example |
|---|---|
| Name | Net revenue |
| Definition | Sum of line revenue after discounts, ex tax |
| Grain | Order line |
| Dimensions | Product, region, order date |
| Source mart | fct_order_lines |
| Owner | Finance analytics |
| Cadence | Daily by 6am UTC |
Document in metric catalog or mart YAML meta.
Reconciliation workflow
When dashboard ≠ mart:
1. Confirm same grain and filters 2. Confirm same time zone and date field 3. Compare SQL from BI tool vs mart query 4. Check incremental watermark and late data 5. Log root cause (definition change vs bug)
Roles
| Role | Responsibility |
|---|---|
business-analyst | Business rule sign-off |
bi-analyst | Dashboard and explore experience |
| Analytics data engineer | Mart SQL and tests |
data-warehouse-engineer | Source load and platform issues |
Changing a metric
1. Propose definition change with before/after SQL 2. Impact exposures and dashboards 3. Version or communicate breaking change 4. Update tests to match new rule
Semantic layer note
If Looker/MetricFlow/semantic layer exists:
- Prefer single definition in semantic layer OR mart, not both diverging
- Analytics engineer owns mart; BI may own explores — align in writing
PII and aggregation
- Minimum necessary dimensions in marts
- Aggregates for broad self-serve; row-level restricted roles
Testing and Quality
Test pyramid (analytics)
| Level | Examples |
|---|---|
| Schema | unique, not_null, accepted_values |
| Relationships | relationships to dimensions |
| Business | Custom SQL tests, singular tests |
| Freshness | source freshness on raw loads |
| Volume | Row count anomalies (optional package) |
Severity
| Severity | On failure |
|---|---|
| error | Block merge / deploy |
| warn | Alert; investigate |
Custom tests
Use for rules that are not single-column:
- Revenue = sum(line_amount)
- No orders with ship before order date
- Referential integrity across systems
Contracts (optional)
- Define column types and constraints where warehouse supports
- Coordinate breaking contract changes with BI
CI minimum bar
On every PR:
dbt parse/dbt compiledbt run --select state:modified+(or slim CI)dbt test --select state:modified+
Production monitoring
- Freshness SLA per critical source
- Test failures route to on-call per
data-system-ops-leadrunbook
Anti-patterns
- Tests only on primary key
- No tests on business-critical measures
- Disabling tests to green CI