Skip to content
Snippets Groups Projects
Unverified Commit e4d88495 authored by metamben's avatar metamben Committed by GitHub
Browse files

Fix handling explicit joins in metrics (#46798)

parent a7e59b98
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,7 @@
;; run a query with debugging enabled
(binding [metabase.query-processor.debug/*debug* true]
(metabase.query-processor/process-query query)"
(metabase.query-processor/process-query query))"
(:require
[clojure.java.io :as io]
[clojure.string :as str]
......
......@@ -108,7 +108,7 @@
(map (juxt :fk-field-id :alias))
(lib/joins query agg-stage-index))
new-joins (remove (comp existing-joins (juxt :fk-field-id :alias)) metric-joins)
source-field->join-alias (into {} (map (juxt :fk-field-id :alias)) new-joins)
source-field->join-alias (dissoc (into {} (map (juxt :fk-field-id :alias)) new-joins) nil)
query-with-joins (reduce #(lib/join %1 agg-stage-index %2)
query
new-joins)]
......
......@@ -652,3 +652,20 @@
(lib/aggregate $q (lib/count)))]
(is (=? (mt/rows (qp/process-query etalon-query))
(mt/rows (qp/process-query metric-query))))))))
(deftest ^:parallel metric-with-explicit-join-test
(let [mp (lib.metadata.jvm/application-database-metadata-provider (mt/id))
metric-query (-> (lib/query mp (lib.metadata/table mp (mt/id :orders)))
(lib/join (-> (lib/join-clause (lib.metadata/table mp (mt/id :people))
[(lib/=
(lib.metadata/field mp (mt/id :orders :user_id))
(lib.metadata/field mp (mt/id :people :id)))])))
(lib/aggregate (lib/sum (lib.metadata/field mp (mt/id :orders :total))))
(lib/breakout (lib.metadata/field mp (mt/id :orders :created_at))))]
(mt/with-temp [:model/Card metric {:dataset_query (lib.convert/->legacy-MBQL metric-query)
:database_id (mt/id)
:name "Orders Total Sum metric"
:type :metric}]
(let [query (lib/query mp (lib.metadata/card mp (:id metric)))]
(is (=? (mt/rows (qp/process-query metric-query))
(mt/rows (qp/process-query query))))))))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment