diff --git a/src/metabase/sync/analyze/fingerprint/insights.clj b/src/metabase/sync/analyze/fingerprint/insights.clj index 0ce11aebf10279ce5b7ce88d42ca9f5d91d5a716..8d8ac5da5aed52040adbe2817a40f746b1f01b35 100644 --- a/src/metabase/sync/analyze/fingerprint/insights.clj +++ b/src/metabase/sync/analyze/fingerprint/insights.clj @@ -32,7 +32,7 @@ (cond (every? neg? [x1 x2]) (change (- x1) (- x2)) (and (neg? x1) (pos? x2)) (- (change x1 x2)) - (neg? x1) (- (change x2 x1)) + (neg? x1) (- (change x2 (- x1))) :else (/ (- x2 x1) x1))))) (defn reservoir-sample diff --git a/test/metabase/sync/analyze/fingerprint/insights_test.clj b/test/metabase/sync/analyze/fingerprint/insights_test.clj index 2c4e4c8e162431b1de38306436d6c8d8a7a1cdb0..79f1cbbc34a31b517b00712255f29dbffd2701c8 100644 --- a/test/metabase/sync/analyze/fingerprint/insights_test.clj +++ b/test/metabase/sync/analyze/fingerprint/insights_test.clj @@ -117,3 +117,15 @@ (transduce identity (insights [{:base_type :type/DateTime} {:base_type :type/Number} {:base_type :type/Number}]) ts)) + +(deftest change-test + (is (= 0.0 (change 1 1))) + (is (= -0.5 (change 1 2))) + (is (= 1.0 (change 2 1))) + (is (= nil (change 1 0))) + (is (= -1.0 (change 0 1))) + (is (= 2.0 (change 1 -1))) + (is (= -2.0 (change -1 1))) + (is (= 1.0 (change -1 -2))) + (is (= nil (change -1 0))) + (is (= 1.0 (change 0 -1))))