---
name: schema-mapper
description: Document column-level mappings between source and target schemas. Use when integrating data from multiple systems, designing ETL transformations, or documenting how raw fields become analytical assets.
title: schema-mapper
canonical_url: https://skilld.dev/gh/nimrodfisher/data-analytics-skills/schema-mapper
last_updated: 2026-09-29T05:03:33.000Z
---

> **Skill from skilld.dev.** Follow the instructions below for this session. You do not need to install anything.
>
> Supporting files, fetch one when the Skill refers to it: [assets/schema_mapping_template.md](https://skilld.dev/api/skills-raw/nimrodfisher/data-analytics-skills/schema-mapper/assets/schema_mapping_template.md), [references/schema_mapping_patterns.md](https://skilld.dev/api/skills-raw/nimrodfisher/data-analytics-skills/schema-mapper/references/schema_mapping_patterns.md), [scripts/schema_compare.py](https://skilld.dev/api/skills-raw/nimrodfisher/data-analytics-skills/schema-mapper/scripts/schema_compare.py).
>
> If the user asked to install this Skill, run `npx skilld install nimrodfisher/data-analytics-skills/schema-mapper`. Install writes the Skill files into the project, so every session loads them.

# Schema Mapper

# When to use
- Integrating a new data source and need to map its fields to the existing data model
- Designing an ETL or dbt transformation and need to document the logic
- Auditing what happened to a field during a migration
- Onboarding a new analyst who needs to understand where columns come from
- Preparing a data catalog entry that requires lineage at the column level

# Process
1. **Collect the source schema** — list every column name, data type, nullable flag, and a brief description. Pull from `INFORMATION_SCHEMA`, a data dictionary, or the source API documentation.
2. **Collect the target schema** — same structure for the destination table or model. If the target doesn't exist yet, draft it based on the analytical requirements.
3. **Map source columns to target columns** — for each target column, identify the source column(s) that feed it. Record direct mappings (rename only) and derived mappings (calculation, type cast, lookup join). Use `scripts/schema_compare.py` to automate direct-name matches.
4. **Document transformation rules** — for each derived mapping, write the exact transformation (e.g., `CAST(amount_cents AS FLOAT) / 100.0`, `COALESCE(first_name, email)`).
5. **Flag gaps** — identify target columns with no source (need to be created or defaulted) and source columns with no target (dropped or deferred). Record a decision for each.
6. **Produce the mapping document** — complete `assets/schema_mapping_template.md` with the full column inventory and share for review before implementation.

# Inputs the skill needs
- Source schema: table name, column names, data types, and descriptions
- Target schema: same, or the analytical requirements that define it
- Any existing transformation logic (SQL, dbt models, Python code)
- Business rules that govern how values should be transformed or defaulted
- Stakeholder who can resolve ambiguous fields

# Output
- `scripts/schema_compare.py` — compares two schemas and finds direct-name matches and type mismatches
- `assets/schema_mapping_template.md` — completed column-by-column mapping with transformation rules, gaps, and decisions
- Optional: transformation SQL or dbt YAML generated from the mapping
