Generating Sources for Tables Managed Outside SOLE
We have seen in Auto-Generating Sources from SOLE Ingestion Tables how to avoid manually adding new dbt sources every time you create a table by sharing table definitions between SOLE and MATE.
However, what if the tables are externally managed, outside the scope of SOLE?
DataOps.live provides a convenient script — source-builder
— that can save you time when creating MATE dbt source definitions for such tables.
The source-builder
script is provided as-is and without warranty. Although it is not a part of the data product platform,
it has been well tested, and our Support team will be happy to help if they can.
Prerequisites
To run the source-builder
script, you must:
- Have a working Python 3.6+ environment — it has only been fully tested on Ubuntu Linux so far (Windows should work, but your mileage may vary)
- Install dbt locally, or at least create a
profiles.yml
as the script uses a local dbtprofiles.yml
file as the source of connection and authentication details
You can download and install the sources from the Model Builder project on DataOps.live — check the README for instructions.
To best use this script, you may need to have your DataOps project cloned locally (using Git over HTTPS).
Usage
The source-builder
script quickly retrieves some or all of your table structures from Snowflake and converts them into dbt source definition files in YAML format.
usage: source-builder [-h] [--version] [--profiles-dir PROFILES_DIR] [--profile PROFILE] [--database DATABASE]
[--schema SCHEMA] [--warehouse WAREHOUSE] [--project-dir PROJECT_DIR]
[--sources-dir SOURCES_DIR] [--force]
Build dbt source definitions from a Snowflake database.
optional arguments:
-h, --help show this help message and exit
--version, -v show program's version number and exit
--profiles-dir PROFILES_DIR
Which directory to look in for the profiles.yml file (default: /home/sam/.dbt)
--profile PROFILE, -p PROFILE
Which profile to load (default: default)
--database DATABASE, -d DATABASE
Database to interrogate (default None)
--schema SCHEMA, -s SCHEMA
Schema to interrogate (default: None)
--warehouse WAREHOUSE, -w WAREHOUSE
Warehouse to use (default: None)
--project-dir PROJECT_DIR, -o PROJECT_DIR
Target directory for source files (default: .)
--sources-dir SOURCES_DIR, -i SOURCES_DIR
Sources directory within the project directory (default: sources)
--force, -f Force overwriting output files/directories