WARNING - Installed package 'elementary' is overri...
# ask-elementary-ai
s
WARNING - Installed package 'elementary' is overriding the built-in materialization 'XXX' Starting from dbt 1.8 and above, 3rd party dbt packages cannot override dbt materializations without an explicit configuration from users. Elementary utilizes this dbt mechanism to add reporting functionality to non-Elementary tests (such as native dbt tests and expectations): • Collection of the total number of failed rows. • Collection of failed row samples. If you are encountering the warning above though, it means that you have previously added the flag
require_explicit_package_overrides_for_builtin_materializations=False
to
dbt-project.yml
. This is no longer required!. Instead, please add a file named
elementary_materialization.sql
to your macros folder, with the following contents - If you use Snowflake: Copy Ask AI
Copy code
{% materialization test, adapter='snowflake' %}
  {{ return(elementary.materialization_test_snowflake()) }}
{% endmaterialization %}
If you use any other DWH: Copy Ask AI
Copy code
{% materialization test, default %}
{{ return(elementary.materialization_test_default()) }}
{% endmaterialization %}
This will ensure Elementary’s test materialization is run but will avoid the warning. i created macro and set the falg to true in dbt_project.yml now how do i map this macro or make dbt test to see that i actually defined here , so warning message can be avoided @kapa.ai
k
A message from kapa.ai
The warning goes away only if dbt actually uses your custom
test
materialization macro
. Based on the docs and threads, there are two key requirements: 1. Macro file location and name - The macro must live under your project’s
macros/
directory (not inside the Elementary package), e.g.: -
macros/elementary_materialization.sql
- The contents should be exactly one of: Snowflake:
Copy code
sql    {% materialization test, adapter='snowflake' %}      {{ return(elementary.materialization_test_snowflake()) }}    {% endmaterialization %}
Other warehouses:
Copy code
sql    {% materialization test, default %}      {{ return(elementary.materialization_test_default()) }}    {% endmaterialization %}
This is how you tell dbt “when you materialize a
test
, use Elementary’s macro implementation from my project instead of from the package,” which avoids the “installed package is overriding” warning. [[Install package](https://docs.elementary-data.com/oss/quickstart/quickstart-cli-package#step-by-step%3A-install-elementary-dbt-package)] 2. Remove the legacy flag - You should remove (or set back to dbt’s default) the flag you had previously set:
Copy code
yaml    flags:      require_explicit_package_overrides_for_builtin_materializations: true  # or remove entirely
The new recommended approach is: - Do not rely on
require_explicit_package_overrides_for_builtin_materializations: false
. - Instead, define the
test
materialization macro in your project as above, which counts as an explicit override and removes the warning. [[Install package](https://docs.elementary-data.com/oss/quickstart/quickstart-cli-package#step-by-step%3A-install-elementary-dbt-package)] 3. How dbt “sees” the macro (mapping) dbt automatically picks the
test
materialization macro by name and adapter: - Name:
materialization test, …
- Namespace: your project’s macros override package macros with the same signature. - No extra “mapping” is needed beyond placing the macro in
macros/
and re-running
dbt
(a full parse). To confirm it’s picked up: - Run
dbt --debug test -s some_test
and ensure no “Installed package 'elementary' is overriding…” warning appears. - If you still see the warning: - Verify the macro file is in your root project
macros/
directory. - Ensure there are no typos in
adapter='snowflake'
/
default
. - Remove any remaining
require_explicit_package_overrides_for_builtin_materializations: false
in
dbt_project.yml
, as that path is what triggers the original warning in newer dbt versions. [[Warning override](https://slack.com/archives/C02CTC89LAX/p1715016357916139); [Materialization override](https://slack.com/archives/C02CTC89LAX/p1722858974369239)] If you share your exact
dbt_project.yml
(redacted) and where you placed
elementary_materialization.sql
, I can help pinpoint why dbt might still be issuing the warning.