{"id":13686344,"url":"https://github.com/gouline/dbt-metabase","last_synced_at":"2026-04-19T11:03:48.815Z","repository":{"id":38804745,"uuid":"227567532","full_name":"gouline/dbt-metabase","owner":"gouline","description":"dbt + Metabase integration","archived":false,"fork":false,"pushed_at":"2026-04-17T11:10:56.000Z","size":2649,"stargazers_count":592,"open_issues_count":0,"forks_count":82,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-04-17T12:09:28.505Z","etag":null,"topics":["analytics","business-intelligence","data","data-modelling","dbt","elt","metabase","pypa","python","vizualisation"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/dbt-metabase/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gouline.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"gouline","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2019-12-12T09:23:22.000Z","updated_at":"2026-04-17T11:10:59.000Z","dependencies_parsed_at":"2023-11-24T01:24:59.828Z","dependency_job_id":"4f4eb7f0-7c0d-404d-bc3f-206e415be102","html_url":"https://github.com/gouline/dbt-metabase","commit_stats":null,"previous_names":[],"tags_count":88,"template":false,"template_full_name":null,"purl":"pkg:github/gouline/dbt-metabase","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gouline%2Fdbt-metabase","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gouline%2Fdbt-metabase/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gouline%2Fdbt-metabase/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gouline%2Fdbt-metabase/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gouline","download_url":"https://codeload.github.com/gouline/dbt-metabase/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gouline%2Fdbt-metabase/sbom","scorecard":{"id":442295,"data":{"date":"2025-08-11","repo":{"name":"github.com/gouline/dbt-metabase","commit":"fe6403a382fb0e88d9512a9304dd18fb179e8356"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.4,"checks":[{"name":"Maintained","score":8,"reason":"6 commit(s) and 4 issue activity found in the last 90 days -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 2/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yml:28","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:29","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/master.yml:1","Warn: no topLevel permission defined: .github/workflows/pull_request.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":5,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'master'","Info: 'stale review dismissal' is required to merge on branch 'master'","Warn: required approving review count is 1 on branch 'master'","Warn: codeowners review is required - but no codeowners file found in repo","Warn: 'last push approval' is disabled on branch 'master'","Info: 'up-to-date branches' is required to merge on branch 'master'","Info: status check found to merge onto on branch 'master'","Info: PRs are required in order to make changes on branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/gouline/dbt-metabase/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/gouline/dbt-metabase/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/gouline/dbt-metabase/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:84: update your workflow using https://app.stepsecurity.io/secureworkflow/gouline/dbt-metabase/codeql-analysis.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/master.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/gouline/dbt-metabase/master.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/master.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/gouline/dbt-metabase/master.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/master.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/gouline/dbt-metabase/master.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull_request.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/gouline/dbt-metabase/pull_request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull_request.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/gouline/dbt-metabase/pull_request.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pull_request.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/gouline/dbt-metabase/pull_request.yml/master?enable=pin","Warn: containerImage not pinned by hash: sandbox/Dockerfile:1: pin your Docker image by updating python:3.12-slim-bullseye to python:3.12-slim-bullseye@sha256:411fa4dcfdce7e7a3057c45662beba9dcd4fa36b2e50a2bfcd6c9333e59bf0db","Info:   0 out of   9 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/master.yml:12"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T05:50:27.003Z","repository_id":38804745,"created_at":"2025-08-19T05:50:27.003Z","updated_at":"2025-08-19T05:50:27.003Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32004046,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analytics","business-intelligence","data","data-modelling","dbt","elt","metabase","pypa","python","vizualisation"],"created_at":"2024-08-02T15:00:30.199Z","updated_at":"2026-04-19T11:03:48.766Z","avatar_url":"https://github.com/gouline.png","language":"Python","funding_links":["https://github.com/sponsors/gouline"],"categories":["Packages","analytics","Related Third Party Projects"],"sub_categories":["Unofficial and Third Party Examples"],"readme":"# dbt-metabase\n\n[![PyPI](https://img.shields.io/pypi/v/dbt-metabase)](https://pypi.org/project/dbt-metabase/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/gouline/dbt-metabase/blob/main/LICENSE)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)\n\nIntegration between [dbt](https://www.getdbt.com/) and [Metabase](https://www.metabase.com/).\n\nIf dbt is your source of truth for database schemas and you use Metabase as your analytics tool, dbt-metabase can propagate table relationships, model and column descriptions and semantic types (e.g. currency, category, URL) to your Metabase data model, and extract questions and dashboards as exposures in your dbt project.\n\n## Requirements\n\nRequires Python 3.10 or above.\n\nFor development, you will need [uv](https://docs.astral.sh/uv/getting-started/installation/) installed.\n\n## Usage\n\nYou can install dbt-metabase from [PyPI](https://pypi.org/project/dbt-metabase/):\n\n```\npip install dbt-metabase\n```\n\nSections below demonstrate basic usage examples, for all CLI options:\n\n```\ndbt-metabase --help\n```\n\n## Manifest\n\nBefore running dbt-metabase, you need a compiled `manifest.json` file to parse. These are part of the [dbt artifact](https://docs.getdbt.com/reference/artifacts/dbt-artifacts) generated during compilation.\n\nOnce `dbt compile` finishes, `manifest.json` can be found in the `target/` directory of your dbt project.\n\nSee [dbt documentation](https://docs.getdbt.com/docs/running-a-dbt-project/run-your-dbt-projects) for more information.\n\n## Metabase API\n\nAll commands require authentication against the [Metabase API](https://www.metabase.com/docs/latest/api-documentation) using one of these methods:\n\n* API key (`--metabase-api-key`) \n  - Strongly **recommended** for automation, see [documentation](https://www.metabase.com/docs/latest/people-and-groups/api-keys) (Metabase 49 or later).\n* Username and password (`--metabase-username` / `--metabase-password`)\n  - Fallback for older versions of Metabase and smaller instances.\n\n## Exporting Models\n\nLet's start by defining a short sample `schema.yml` as below.\n\n```yaml\nmodels:\n  - name: stg_users\n    description: User records.\n    columns:\n      - name: id\n        description: Primary key.\n        data_tests:\n          - not_null\n          - unique\n\n      - name: email\n        description: User's email address.\n\n      - name: group_id\n        description: Foreign key to user group.\n        data_tests:\n          - not_null\n          - relationships:\n              arguments:\n                to: ref('groups')\n                field: id\n\n  - name: stg_groups\n    description: User groups.\n    columns:\n      - name: id\n        description: Primary key.\n        data_tests:\n          - not_null\n          - unique\n\n      - name: name\n        description: Group name.\n```\n\nThis is already enough to propagate the primary keys, foreign keys and descriptions to Metabase:\n\n```\ndbt-metabase models \\\n    --manifest-path target/manifest.json \\\n    --metabase-url https://metabase.example.com \\\n    --metabase-api-key mb_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= \\\n    --metabase-database business \\\n    --include-schemas public\n```\n\nOpen Metabase and go to Settings \u003e Admin Settings \u003e Table Metadata, you will notice that `id` column in `stg_users` is now marked as \"Entity Key\" and `group_id` is a \"Foreign Key\" pointing to `id` in `stg_groups`.\n\nTry running `dbt-metabase models --help` to see all the options available for fine tuning.\n\n### Foreign Keys\n\nNative [relationship tests](https://docs.getdbt.com/reference/resource-properties/data-tests#relationships) and [column-level constraints](https://docs.getdbt.com/reference/resource-properties/constraints#defining-constraints) are the recommended ways of defining foreign keys, however you can override them with `fk_target_table` and `fk_target_field` meta fields. If both are set for a column, meta fields take precedence.\n\n```yaml\n- name: country_id\n  description: FK to User's country in the dim_countries table.\n  config:\n    meta:\n      metabase.fk_target_table: analytics_dims.dim_countries\n      metabase.fk_target_field: id\n```\n\nYou can provide `fk_target_table` as `schema_name.table_name` or just `table_name` to use the current schema. If your model has an alias, provide that alias rather than the original name.\n\n### Semantic Types\n\nNow that we have foreign keys configured, let's tell Metabase that `email` column contains email addresses:\n\n```yaml\n- name: email\n  description: User's email address.\n  config:\n    meta:\n      metabase.semantic_type: type/Email\n```\n\nOnce you run `dbt-metabase models` again, you will notice that `email` column is now marked as \"Email\".\n\nBelow are common semantic types (formerly known as _special types_) accepted by Metabase:\n\n* `type/PK`\n* `type/FK`\n* `type/Number`\n* `type/Currency`\n* `type/Category`\n* `type/Title`\n* `type/Description`\n* `type/City`\n* `type/State`\n* `type/ZipCode`\n* `type/Country`\n* `type/Latitude`\n* `type/Longitude`\n* `type/Email`\n* `type/URL`\n* `type/ImageURL`\n* `type/SerializedJSON`\n* `type/CreationTimestamp`\n\nSee [Metabase documentation](https://www.metabase.com/docs/latest/users-guide/field-types.html) for a more complete list.\n\n### Visibility Types\n\nYou can optionally specify visibility for tables and columns, this controls whether they are displayed in Metabase.\n\nHere is how you would hide that email column:\n\n```yaml\n- name: email\n  description: User's email address.\n  config:\n    meta:\n      metabase.semantic_type: type/Email\n      metabase.visibility_type: sensitive\n```\n\nBelow are the visibility types supported for columns:\n\n* `normal` (default) - This field will be displayed normally in tables and charts.\n* `details-only` - This field will only be displayed when viewing the details of a single record.\n* `sensitive` - This field won't be visible or selectable in questions created with the GUI interfaces.\n\nTables support the following:\n\n* No value for visible (default)\n* `hidden`\n* `technical`\n* `cruft`\n\nIf you notice any changes to these, please submit a pull request with an update.\n\n### Other Meta Fields\n\nIn addition to foreign keys, semantic types and visibility types, Metabase also accepts the following meta fields:\n\n```yaml\n- name: model_name\n  config:\n    meta:\n      metabase.display_name: another_model_name\n      metabase.visibility_type: normal\n      metabase.points_of_interest: Relevant records.\n      metabase.caveats: Sensitive information about users.\n  columns:\n    - name: column_name\n      config:\n        meta:\n          metabase.display_name: another_column_name\n          metabase.visibility_type: sensitive\n          metabase.semantic_type: type/Number\n          metabase.has_field_values: list\n          metabase.coercion_strategy: keyword\n          metabase.number_style: decimal\n          metabase.decimals: 3\n```\n\nSee [Metabase documentation](https://www.metabase.com/docs/latest/api) for details and accepted values.\n\n### Synchronization\n\nBy default, dbt-metabase waits for tables and columns to be synchronized between your dbt project and Metabase database, otherwise the export fails when the sync timeout expires. \n\nIf you have known discrepancies between dbt and Metabase and wish to proceed without synchronization, set the sync timeout to zero (e.g. `--sync-timeout 0`). This is discouraged, because you will still encounter errors if you have a table or column in your dbt project that is missing from Metabase and dbt-metabase attempts to export it.\n\n## Exposure Extraction\n\ndbt-metabase allows you to extract questions and dashboards from Metabase as [dbt exposures](https://docs.getdbt.com/docs/building-a-dbt-project/exposures) in your project:\n\n```\ndbt-metabase exposures \\\n    --manifest-path ./target/manifest.json \\\n    --metabase-url https://metabase.example.com \\\n    --metabase-api-key mb_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX= \\\n    --output-path models/ \\\n    --exclude-collections \"temp*\"\n```\n\nOnce the execution completes, check your output path for exposures files containing descriptions, creator details and links for Metabase questions and dashboards:\n\n```yaml\nexposures:\n  - name: number_of_orders_over_time\n    description: '\n      ### Visualization: Line\n\n      A line chart depicting how order volume changes over time\n\n      #### Metadata\n\n      Metabase Id: __8__\n\n      Created On: __2021-07-21T08:01:38.016244Z__'\n    type: analysis\n    url: https://metabase.example.com/card/8\n    maturity: medium\n    owner:\n      name: Indiana Jones\n      email: indiana@example.com\n    depends_on:\n      - ref('orders')\n```\n\nNative query questions will have SQL code blocks inside the descriptions, formatted to look nice in [dbt docs](https://docs.getdbt.com/docs/collaborate/documentation). These YAML files can be committed to source control to understand how exposures change over time.\n\nTry running `dbt-metabase exposures --help` to see all the options available for fine tuning.\n\n## Configuration\n\nThere are 3 levels of configuration in decreasing order of precedence:\n\n* CLI arguments, e.g. `--manifest-path target/manifest.json`\n* Environment variables, e.g. `MANIFEST_PATH=target/manifest.json`\n* Configuration file, e.g. `manifest_path: target/manifest.json`\n\nTry running `--help` for any command to see the full list of CLI arguments and environment variables.\n\nA configuration file can be created in `~/.dbt-metabase/config.yml` for dbt-metabase to pick it up automatically or anywhere else by specifying `dbt-metabase --config-path path/to/config.yml` (must come **before** the command). Here is an example YAML file:\n\n```yaml\nconfig:\n    manifest_path: target/manifest.json\n    metabase_url: https://metabase.example.com\n    metabase_api_key: mb_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=\n    # Configuration specific to models command\n    models:\n      metabase_database: business\n    # Configuration specific to exposures command\n    exposures:\n      output_path: models\n```\n\nNote that common configurations are in the outer block and command-specific ones are in separate blocks.\n\n## Programmatic API\n\nAlternatively, you can invoke dbt-metabase programmatically. Below is the equivalent of CLI examples:\n\n```python\nfrom dbtmetabase import DbtMetabase, Filter\n\n# Initializing instance\nc = DbtMetabase(\n    manifest_path=\"target/manifest.json\",\n    metabase_url=\"https://metabase.example.com\",\n    metabase_api_key=\"mb_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=\",\n)\n\n# Exporting models\nc.export_models(\n    metabase_database=\"business\",\n    schema_filter=Filter(include=[\"public\"]),\n)\n\n# Extracting exposures\nc.extract_exposures(\n    output_path=\".\",\n    collection_filter=Filter(exclude=[\"temp*\"]),\n)\n```\n\nSee function header comments for information about other parameters.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgouline%2Fdbt-metabase","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgouline%2Fdbt-metabase","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgouline%2Fdbt-metabase/lists"}