diff --git a/dev/src/dev/debug_qp.clj b/dev/src/dev/debug_qp.clj
index 99f9748271b4a55595d599e11a76c46a0f7560e1..65f64936bb9b0e6459ecb66ee2c97832585b286b 100644
--- a/dev/src/dev/debug_qp.clj
+++ b/dev/src/dev/debug_qp.clj
@@ -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]
diff --git a/src/metabase/query_processor/middleware/metrics.clj b/src/metabase/query_processor/middleware/metrics.clj
index d84a9cde8ee320d17fde4f151c031e80eddfa483..c5afc27bc24dec8509f64a1f26ecd9fe1bf288da 100644
--- a/src/metabase/query_processor/middleware/metrics.clj
+++ b/src/metabase/query_processor/middleware/metrics.clj
@@ -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)]
diff --git a/test/metabase/query_processor/middleware/metrics_test.clj b/test/metabase/query_processor/middleware/metrics_test.clj
index e1b256606a69fed17c7ceee5b05486119ec9d5cf..c8f43ba00e0a709872e75a29d3fc5d0f0dd1c689 100644
--- a/test/metabase/query_processor/middleware/metrics_test.clj
+++ b/test/metabase/query_processor/middleware/metrics_test.clj
@@ -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))))))))