diff --git a/src/metabase/query_processor/middleware/metrics.clj b/src/metabase/query_processor/middleware/metrics.clj index c9ea89c100ca50818b9f59addb6a1a7d63b34f6f..00a7932e5cb75d8383b54c45e2d7f8fcf3632f1e 100644 --- a/src/metabase/query_processor/middleware/metrics.clj +++ b/src/metabase/query_processor/middleware/metrics.clj @@ -251,7 +251,7 @@ 2. Metric source cards can reference themselves. A query built from a `:source-card` of `:type :metric` can reference itself." [query] - (if-not (find-first-metric query) + (if-not (find-first-metric (:stages query)) query (do (prometheus/inc! :metabase-query-processor/metrics-adjust) @@ -263,7 +263,7 @@ (update stage-or-join :stages #(adjust-metric-stages query path %)))))] (u/prog1 (update query :stages #(adjust-metric-stages query nil %)) - (when-let [metric (find-first-metric <>)] + (when-let [metric (find-first-metric (:stages <>))] (throw (ex-info "Failed to replace metric" {:metric metric}))))) (catch Throwable e (prometheus/inc! :metabase-query-processor/metrics-adjust-errors) diff --git a/test/metabase/query_processor/middleware/metrics_test.clj b/test/metabase/query_processor/middleware/metrics_test.clj index 4b97c95ac52c8eb531c2ef5cf9f996f65ca7bb36..76d15e29370f682551c2d98f56924cb414f09574 100644 --- a/test/metabase/query_processor/middleware/metrics_test.clj +++ b/test/metabase/query_processor/middleware/metrics_test.clj @@ -59,8 +59,13 @@ (lib.tu/mock-metadata-provider {:cards [metric]}))]))) -(def adjust - (comp #'metrics/adjust #'fetch-source-query/resolve-source-cards)) +(defn- adjust + [query] + (-> query + (assoc-in [:info :pivot/original-query] query) + (#'fetch-source-query/resolve-source-cards) + (#'metrics/adjust) + (dissoc :info))) (defn- check-prometheus-metrics! [& {expected-metrics-count :metabase-query-processor/metrics-adjust