This is an automated email from the ASF dual-hosted git repository.
bkyryliuk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push:
new 801fb40 Allow empty observations in alerting (#10939)
801fb40 is described below
commit 801fb4063c65cab13ceb7550d10f8911810c2a9f
Author: Bogdan <[email protected]>
AuthorDate: Mon Sep 21 08:48:02 2020 -0700
Allow empty observations in alerting (#10939)
Co-authored-by: bogdan kyryliuk <[email protected]>
---
superset/tasks/alerts/observer.py | 8 ++++----
tests/alerts_tests.py | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/superset/tasks/alerts/observer.py
b/superset/tasks/alerts/observer.py
index 34ff668..482faed 100644
--- a/superset/tasks/alerts/observer.py
+++ b/superset/tasks/alerts/observer.py
@@ -48,7 +48,7 @@ def observe(alert_id: int, session: Session) -> Optional[str]:
error_msg = validate_observer_result(df, alert.id, alert.label)
- if not error_msg and df.to_records()[0][1] is not None:
+ if not error_msg and not df.empty and df.to_records()[0][1] is not None:
value = float(df.to_records()[0][1])
observation = SQLObservation(
@@ -74,9 +74,9 @@ def validate_observer_result(
Returns an error message if the result is invalid.
"""
try:
- assert (
- not sql_result.empty
- ), f"Observer for alert <{alert_id}:{alert_label}> returned no rows"
+ if sql_result.empty:
+ # empty results are used for the not null validator
+ return None
rows = sql_result.to_records()
diff --git a/tests/alerts_tests.py b/tests/alerts_tests.py
index 81c94b0..b09ac93 100644
--- a/tests/alerts_tests.py
+++ b/tests/alerts_tests.py
@@ -128,11 +128,11 @@ def test_alert_observer(setup_database):
assert alert3.sql_observer[0].observations[-1].value is None
assert alert3.sql_observer[0].observations[-1].error_msg is None
- # Test SQLObserver with empty SQL return
+ # Test SQLObserver with empty SQL return, expected
alert4 = create_alert(dbsession, "SELECT first FROM test_table WHERE first
= -1")
observe(alert4.id, dbsession)
assert alert4.sql_observer[0].observations[-1].value is None
- assert alert4.sql_observer[0].observations[-1].error_msg is not None
+ assert alert4.sql_observer[0].observations[-1].error_msg is None
# Test SQLObserver with str result
alert5 = create_alert(dbsession, "SELECT 'test_string' as string_value")