This section is aimed at collecting common issues users have to provide quick debug solutions.
If you get an empty report, there are several steps to understand what went wrong and try and fix it.
1. Validate elementary dbt package is deployed and working:
Check that dbt package version is the latest
Refer to the dbt package installation guide, and validate that your version in packages.yml is the one mentioned there. If not, upgrade and run dbt deps
. Make sure to execute dbt run --select elementary
for the package tables to be created.
Check if the table elementary_test_results
exists and has data
If the table does not exist - refer to the dbt package installation guide. Make sure to execute dbt run --select elementary
for the package tables to be created.
If the table exists but has no data - Did you execute dbt test
since deploying the package and creating the models?
If yes, make sure the table was created as an incremental table (not a regular table or view).
If not, there is a materialization configuration in your dbt_project.yml
file that overrides the package config. Remove it, and run dbt run --select elementary --full-refresh
to recreate the tables. After that run dbt test
again and check if there is data.
Still no data in the table? Reach out to the elementary team at #support on Slack.
2. Validate that the CLI was properly installed
Check the CLI version is the latest
Use the command pip show elementary-data
to detect your version, and validate that it is the latest one. If not, run
pip install elementary-data --upgrade
.
Try to force update the CLI internal packages
Run the CLI with the flag for force updating the packages:
edr report -u true
3. Validate that the CLI has a working connection profile in the right path and format
HOME_DIR/.dbt/profiles.yml
. If saved elsewhere, make sure to run dbt run and dbt test with —profiles-dir <profiles.yml path>
elementary
<your_dbt_project_schema>_elementary
4. Validate the schema configuration for elementary models in your dbt_project.yml
models:
jaffle_shop:
+materialized: table
elementary:
+schema: 'elementary'
5. Still not working? Collect the following logs and reach our to the elementary team at #community-support on Slack
/site-packages/monitor/dbt_project/logs/dbt.log
You can find the full path of the package location using
pip show elementary-data
.Elementary dbt package includes macros that run insert commands to some of the models.
This error means that these models were materialized as views, and not as tables.
The reason for the error is probably a configuration on your dbt_project.yml
file, under the key materialization
.
## In your dbt_project.yml
## This is causing the problem:
models:
materialization: <some_config>
We recommend moving this config to be strictly for models in your package, or else it will override the materialization of packages:
## Change to this:
models:
your_project_name:
models:
materialization: <some_config>
In Python on macOS, when you globally install a package that has executables, such as Elementary’s edr
, it places the executable in a location that is not under the default PATH
which is the environment variable that is used for executable lookups. Here’s an example of the warning you might receive upon running python3 -m pip install elementary-data
.
$ python3 -m pip install elementary-data
...
WARNING: The script edr is installed in '/Users/user/Library/Python/3.8/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
...
$ edr
zsh: command not found: edr
As you can see, edr
is not found by default upon installation.
There are multiple ways to solve this.
$ ~/Library/Python/3.8/bin/edr
________ __
/ ____/ /__ ____ ___ ___ ____ / /_____ ________ __
/ __/ / / _ \/ __ `__ \/ _ \/ __ \/ __/ __ `/ ___/ / / /
/ /___/ / __/ / / / / / __/ / / / /_/ /_/ / / / /_/ /
/_____/_/\___/_/ /_/ /_/\___/_/ /_/\__/\__,_/_/ \__, /
/____/
Usage: edr [OPTIONS] COMMAND [ARGS]...
Open source data reliability solution (https://docs.elementary-data.com/)
...
~/.zshrc
) and append Python’s library path.export PATH=$PATH:$HOME/Library/Python/3.8/bin
If you got a message Successfully installed elementary-data
but get a command not found
error, it is probably because of a missing path in your environment variables.
Look for a warning in your terminal saying:
Warning: the script edr.exe is installed in '<path>' which is not on PATH
This is the path that needs to be added to your windows env vars, run:
set PATH='%PATH%;<path from error message>'
After that restart your CMD and try edr
again.
This means the installation was not completed successfully. This is usually a Python dependencies issue.
Please try installing again on a clean virtual env:
pip install virtualenv
python3 -m venv virtualenv_elementary
source virtualenv_elementary/bin/activate
python3 -m ensurepip --upgrade
python3 -m pip install --upgrade pip
python3 -m pip install elementary-data
python3 -m pip install elementary-data[<adapter>]
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):
The warning above may appear in one of the following two cases:
require_explicit_package_overrides_for_builtin_materializations
to false
as required in the dbt package installation guide.In either case, please ignore it for now. This is a temporary measure and we are working with the dbt team on a longer term solution.
Elementary tests have a var named training_period
.
If you change it after executing elementary tests, you will need to run a full refresh to the metrics collected. This will make the next tests collect data for the new training_period
timeframe.
The steps are:
training_period
in your dbt_project.yml
. dbt run --select data_monitoring_metrics --full-refresh
.If you want the Elementary UI to show data for a longer period of time, use the days-back option of the CLI:
edr report --days-back 45
When writing to the dbt_artifacts
tables in the Elementary schema, data is deleted and reinserted. Running parallel jobs through an orchestrator can lead to errors, as multiple jobs may attempt to modify the same tables simultaneously.
To prevent this, you should:
For scheduled updates to dbt_artifacts
(e.g., a daily job), run:
dbt run --select elementary --vars '{"enable_elementary_models": true}'
The dbt_columns
table in the Elementary schema can take a while to update, especially for large projects. This table is only used by Elementary Cloud, so if you’re not relying on it (or want to speed up your runs), you can disable it safely without affecting any other functionality.
To skip updating this table, add the following to your dbt_project.yml:
vars:
columns_upload_strategy: none
If you’re experiencing issues of any kind, reach out on the #community-support channel. Elementary AI and the team will be happy to help.
Ask us on Slack, we are very responsive!