elementary
elementary copied to clipboard
0.15 / BigQuery EDR monitor fails
Describe the bug
When running EDR monitor
in an environment with edr version 0.15.0 and dbt package 0.15.0 on Bigquery, the run fails on a mismatch on comparison between a TIMESTAMP and DATETIME.
To Reproduce Steps to reproduce the behavior:
- Set up env with both versions 0.15 on BQ.
- Run
dbt build -s elementary
to build the models - Set Slack tokens and Channel.
- Run
edr monitor --slack-token=$ELEMENTARY_SLACK_TOKEN --slack-channel-name=$ELEMENTARY_SLACK_CHANNEL
- Error will occur on model alerts_v2
Expected behavior A clear and concise description of what you expected to happen.
Environment (please complete the following information):
- edr Version: 0.15.0
- dbt package Version: 0.15.0
Additional context
Problem is in this part of the query that gets fired.
from elementary_test_results
where lower(status) != 'pass'
and cast(detected_at as timestamp) >
datetime_add(
cast( current_timestamp as datetime),
interval -1 day
Timestamps and datetime are not the same in BQ, so they should be aligned.
FULL LOG:
(.venv) ➜ dbt_project git:(update-elementary) ✗ edr monitor --slack-token=$ELEMENTARY_SLACK_TOKEN --slack-channel-name=$ELEMENTARY_SLACK_CHANNEL
________ __
/ ____/ /__ ____ ___ ___ ____ / /_____ ________ __
/ __/ / / _ \/ __ `__ \/ _ \/ __ \/ __/ __ `/ ___/ / / /
/ /___/ / __/ / / / / / __/ / / / /_/ /_/ / / / /_/ /
/_____/_/\___/_/ /_/ /_/\___/_/ /_/\__/\__,_/_/ \__, /
/____/
Any feedback and suggestions are welcomed! join our community here - https://bit.ly/slack-elementary
2024-05-07 10:39:46 — INFO — Running with edr=0.15.0
2024-05-07 10:39:53 — INFO — edr (0.15.0) and Elementary's dbt package (0.15.0) are compatible.
2024-05-07 10:39:56 — INFO — Elementary's database and schema: '"bigquery-project.dbt_project"'
2024-05-07 10:39:56 — INFO — Running internal dbt run to populate alerts
2024-05-07 10:39:56 — INFO — Running dbt run -m elementary_cli.alerts.alerts_v2 --project-dir /Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/elementary/monitor/dbt_project --vars {"days_back": 1}
08:39:56 Running with dbt=1.7.13
08:39:57 Registered adapter: bigquery=1.7.6
08:39:57 Unable to do partial parsing because config vars, config profile, or config target have changed
08:39:59 Found 41 models, 2 operations, 6 tests, 6 sources, 0 exposures, 0 metrics, 1440 macros, 0 groups, 0 semantic models
08:39:59
08:40:00
08:40:00 Running 1 on-run-start hook
08:40:00 1 of 1 START hook: elementary.on-run-start.0 ................................... [RUN]
08:40:00 1 of 1 OK hook: elementary.on-run-start.0 ...................................... [OK in 0.00s]
08:40:00
08:40:00 Concurrency: 4 threads (target='dev')
08:40:00
08:40:00 1 of 1 START sql incremental model dbt_project.alerts_v2 ........... [RUN]
08:40:06 BigQuery adapter: <gone>
08:40:07 1 of 1 ERROR creating sql incremental model dbt_project.alerts_v2 .. [ERROR in 6.38s]
08:40:07
08:40:07 Running 1 on-run-end hook
08:40:07 1 of 1 START hook: elementary.on-run-end.0 ..................................... [RUN]
08:40:07 1 of 1 OK hook: elementary.on-run-end.0 ........................................ [OK in 0.00s]
08:40:07
08:40:07
08:40:07 Finished running 1 incremental model, 2 hooks in 0 hours 0 minutes and 7.22 seconds (7.22s).
08:40:07
08:40:07 Completed with 1 error and 0 warnings:
08:40:07
08:40:07 Database Error in model alerts_v2 (models/alerts/alerts_v2.sql)
No matching signature for operator > for argument types: TIMESTAMP, DATETIME. Supported signature: ANY > ANY at [53:13]
compiled Code at target/run/elementary_cli/models/alerts/alerts_v2.sql
08:40:07
08:40:07 Done. PASS=0 WARN=0 ERROR=1 SKIP=0 TOTAL=1
Traceback (most recent call last):
File "/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/elementary/clients/dbt/dbt_runner.py", line 88, in _run_command
result = subprocess.run(
^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/subprocess.py", line 571, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['dbt', 'run', '-m', 'elementary_cli.alerts.alerts_v2', '--project-dir', '/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/elementary/monitor/dbt_project', '--vars', '{"days_back": 1}']' returned non-zero exit status 1.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/user_name/Repos/dbt_project/.venv/bin/edr", line 8, in <module>
sys.exit(cli())
^^^^^
File "/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/click/core.py", line 1130, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/elementary/cli/cli.py", line 67, in invoke
return super().invoke(ctx)
^^^^^^^^^^^^^^^^^^^
File "/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/click/core.py", line 1635, in invoke
rv = super().invoke(ctx)
^^^^^^^^^^^^^^^^^^^
File "/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/elementary/monitor/cli.py", line 364, in monitor
success = data_monitoring.run_alerts(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/elementary/monitor/data_monitoring/alerts/data_monitoring_alerts.py", line 294, in run_alerts
popopulated_data_successfully = self._populate_data(
^^^^^^^^^^^^^^^^^^^^
File "/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/elementary/monitor/data_monitoring/alerts/data_monitoring_alerts.py", line 78, in _populate_data
success = self.internal_dbt_runner.run(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/elementary/clients/dbt/dbt_runner.py", line 202, in run
success, _ = self._run_command(
^^^^^^^^^^^^^^^^^^
File "/Users/user_name/Repos/dbt_project/.venv/lib/python3.11/site-packages/elementary/clients/dbt/dbt_runner.py", line 99, in _run_command
raise DbtCommandError(err, command_args, logs=logs)
elementary.exceptions.exceptions.DbtCommandError: Failed to run dbt command.