This section is aimed at collecting common questions users have to provide documented answers.
Can I disable the `on-run-end` hooks or results uploading?
You can use the disablement vars or disable the entire package in your dbt_project.yml
.
It's possible to configure to disable with a condition like specific env.
Here are examples:
Disable specific hooks (the recommended method) -
Disable the whole package (Elementary tests won't work) -
Can I select / exclude elementary tests only?
Sure! All you have to do is use the 'elementary-tests' tag in your dbt run command. Here's an example:
Can I disable / exclude the Elementary models?
Elementary only needs you to run the models once after you install, and on upgrades of minor versions (like 0.15.X -> 0.16.X). On such upgrades we make schema changes, so we need you to rebuild the tables.
For excluding the elementary models from your runs we suggest 2 options:
--exclude elementary
when you run dbt run
.Here is how you implement option 2:
dbt_project.yml
add:You will run the Elementary models explicitly in one of two cases:
To run Elementary models:
Can I change the Elementary schema?
The short answer is yes.
We recommend that Elementary models will have their own schema, but it is not mandatory.
You can change the schema name by using dbt custom schema configuration on your dbt_project.yml
.
In short, the default dbt generate_schema_name
macro concatenate the value provided in schema
configuration key to the target schema, as in: target_schema_custom_schema
.
If you want a different behaviour, like configuring a full name for the Elementary schema, you can override the default generate_schema_name
macro with your logic.
Before you do that, make sure that there isn't already a macro named generate_schema_name.sql
in your project.
Here is a macro you can use that would search for a config under meta
named schema_name
.
If it exists, that would be the schema name. If not - the original dbt logic would be followed:
If you implement this macro and want to name the Elementary schema elementary_data_observability
:
What is the Elementary schema?
The Elementary package creates various models to store information about collected dbt artifacts and test results.
To avoid mixing with your existing models, we recommend configuring a dedicated schema for the Elementary models using the dbt custom schema option. Here is an example configuration, that creates a schema with the suffix '_elementary' for elementary models:
Which tests can I see on Elementary report?
All your dbt tests - the built-in dbt tests, Elementary tests, custom tests and any other package tests (such as dbt_utils or dbt_expectations).
Elementary supports custom tests / singular tests? How can I add configuration to custom tests?
Custom / Singular tests are supported by Elementary.
ref
one model are presented in the report under the relevant model.You can add configuration to your custom tests with a config block:
How to run full-refresh / truncate Elementary's incremental models?
Elementary’s incremental models aren’t truncated by the standard full refresh flag. This is because generally you wouldn’t want those models to truncate
To run full-refresh, use the elementary_full_refresh
var like this:
What permissions Elementary requires?
The CLI needs to have permissions to access the profiles.yml
file with the relevant profile, write files to disk,
and network access to the data warehouse.
Also, in the elementary
profile, the credentials should have permissions to read and write the elementary schema, and execute queries.
Can I use Elementary with dbt cloud?
Yes! All the functionality is available and supported for dbt cloud users as well.
Can I see more result samples in the report?
Yes you can!
Elementary saves samples of failed test rows and stores them in the table test_result_rows
, then displays them in the Results tab of the report.
By default, Elementary saves 5 rows per test, but you can change this number by setting the variable test_sample_row_count
to the number of rows you want to save. For example, to save 10 rows per test, add the following to your dbt_project.yml
file:
Or use the --vars
flag when you run dbt test
:
NOTE: The larger the number of rows you save, the more data you will store in your database. This can affect the performance and cost, depending on your database.
Is Elementary free? Does Elementary cost money?
Elementary dbt package and CLI are free. Everything that is open source is 100% free and will remain free! Elementary Cloud is a paid SaaS offering, with premium features and integrations. However, we are committed to building a great OSS product first.
Checkout Elementary Cloud pricing.
My question is not listed here
You can join our Slack and search our #support channel, and of course ask us - we are very responsive!
You could also open a GitHub issue using the template Documentation gap
, and we could add the missing question (and answer) to the docs.
This section is aimed at collecting common questions users have to provide documented answers.
Can I disable the `on-run-end` hooks or results uploading?
You can use the disablement vars or disable the entire package in your dbt_project.yml
.
It's possible to configure to disable with a condition like specific env.
Here are examples:
Disable specific hooks (the recommended method) -
Disable the whole package (Elementary tests won't work) -
Can I select / exclude elementary tests only?
Sure! All you have to do is use the 'elementary-tests' tag in your dbt run command. Here's an example:
Can I disable / exclude the Elementary models?
Elementary only needs you to run the models once after you install, and on upgrades of minor versions (like 0.15.X -> 0.16.X). On such upgrades we make schema changes, so we need you to rebuild the tables.
For excluding the elementary models from your runs we suggest 2 options:
--exclude elementary
when you run dbt run
.Here is how you implement option 2:
dbt_project.yml
add:You will run the Elementary models explicitly in one of two cases:
To run Elementary models:
Can I change the Elementary schema?
The short answer is yes.
We recommend that Elementary models will have their own schema, but it is not mandatory.
You can change the schema name by using dbt custom schema configuration on your dbt_project.yml
.
In short, the default dbt generate_schema_name
macro concatenate the value provided in schema
configuration key to the target schema, as in: target_schema_custom_schema
.
If you want a different behaviour, like configuring a full name for the Elementary schema, you can override the default generate_schema_name
macro with your logic.
Before you do that, make sure that there isn't already a macro named generate_schema_name.sql
in your project.
Here is a macro you can use that would search for a config under meta
named schema_name
.
If it exists, that would be the schema name. If not - the original dbt logic would be followed:
If you implement this macro and want to name the Elementary schema elementary_data_observability
:
What is the Elementary schema?
The Elementary package creates various models to store information about collected dbt artifacts and test results.
To avoid mixing with your existing models, we recommend configuring a dedicated schema for the Elementary models using the dbt custom schema option. Here is an example configuration, that creates a schema with the suffix '_elementary' for elementary models:
Which tests can I see on Elementary report?
All your dbt tests - the built-in dbt tests, Elementary tests, custom tests and any other package tests (such as dbt_utils or dbt_expectations).
Elementary supports custom tests / singular tests? How can I add configuration to custom tests?
Custom / Singular tests are supported by Elementary.
ref
one model are presented in the report under the relevant model.You can add configuration to your custom tests with a config block:
How to run full-refresh / truncate Elementary's incremental models?
Elementary’s incremental models aren’t truncated by the standard full refresh flag. This is because generally you wouldn’t want those models to truncate
To run full-refresh, use the elementary_full_refresh
var like this:
What permissions Elementary requires?
The CLI needs to have permissions to access the profiles.yml
file with the relevant profile, write files to disk,
and network access to the data warehouse.
Also, in the elementary
profile, the credentials should have permissions to read and write the elementary schema, and execute queries.
Can I use Elementary with dbt cloud?
Yes! All the functionality is available and supported for dbt cloud users as well.
Can I see more result samples in the report?
Yes you can!
Elementary saves samples of failed test rows and stores them in the table test_result_rows
, then displays them in the Results tab of the report.
By default, Elementary saves 5 rows per test, but you can change this number by setting the variable test_sample_row_count
to the number of rows you want to save. For example, to save 10 rows per test, add the following to your dbt_project.yml
file:
Or use the --vars
flag when you run dbt test
:
NOTE: The larger the number of rows you save, the more data you will store in your database. This can affect the performance and cost, depending on your database.
Is Elementary free? Does Elementary cost money?
Elementary dbt package and CLI are free. Everything that is open source is 100% free and will remain free! Elementary Cloud is a paid SaaS offering, with premium features and integrations. However, we are committed to building a great OSS product first.
Checkout Elementary Cloud pricing.
My question is not listed here
You can join our Slack and search our #support channel, and of course ask us - we are very responsive!
You could also open a GitHub issue using the template Documentation gap
, and we could add the missing question (and answer) to the docs.