✅ dbt 1.10 Change: Starting with dbt 1.10,
meta
andtags
properties must be moved under aconfig
block. This tool automates that migration for you.
If you're using dbt (Core or Cloud) and upgrading to version 1.10, you'll start seeing deprecation warnings for your YAML files. This is because dbt is changing how meta
and tags
should be structured in your project files.
Instead of manually updating hundreds of YAML files, MetaMove does it automatically while preserving your comments and formatting.
Before:
models:
- name: my_model
meta:
owner: "Data Team"
tags: ["core", "customer"]
columns:
- name: id
meta:
is_primary_key: true
tags: ["identifier"]
After:
models:
- name: my_model
config:
meta:
owner: "Data Team"
tags: ["core", "customer"]
columns:
- name: id
config:
meta:
is_primary_key: true
tags: ["identifier"]
The easiest way to install is with pipx:
pip install pipx # if you don't have it
pipx install metamove
metamove --help
Transform a single YAML file into a new directory transformed
:
metamove models/my_model.yml # saves to ./transformed/
Transform multiple files into transformed
:
metamove models/* models/schema/*
By default, transformed files are saved to a transformed
directory in your current location so your original files aren't modified:
metamove models/* # saves to ./transformed/
Instead you can transform files and save to a specific directory:
metamove models/* -o transformed_models
Once you're feeling confident, transform files in place (modify original files):
metamove models/* -i
The tool automatically processes only .yml
and .yaml
files, so you can use simple wildcards:
# Transform all YAML files in your dbt project
metamove models/* seeds/* snapshots/*
# Transform all YAML files in nested directories
metamove models/**/*
# Transform specific model directories
metamove models/marts/* models/staging/*
- Always backup your files before running transformations
- Use the default output directory first to test changes
- Once verified, use
-i
to update files in place
- Save Hours: No more manual file editing
- Zero Risk: Preserves all your comments and formatting
- Complete: Handles all your YAML files, including nested structures
- Smart: Intelligently merges existing config blocks
- Safe: Creates backups before making changes
The tool handles:
meta
andtags
at any nesting level (including insidecolumns
)- Existing
config
blocks (merges new values in) - All YAML types (dict, list, scalar)
- YAML comments and whitespace formatting
- Proper placement following dbt precedence rules
Found a bug or have an idea? Open an issue or submit a pull request!
Note: The Mac binary is currently being signed and will be available soon. For now, please use the pipx installation method above.
Once available, Mac users will be able to:
- Download the latest binary from GitHub Releases
- Make it executable:
chmod +x metamove
- Run it:
./metamove --help