Skip to content
Snippets Groups Projects
Unverified Commit c279053a authored by Case Nelson's avatar Case Nelson Committed by GitHub
Browse files

[MLv2] Support invisible columns with expression-parts (#34371)

parent ea17aa78
No related branches found
No related tags found
No related merge requests found
(ns metabase.lib.fe-util
(:require
[metabase.lib.common :as lib.common]
[metabase.lib.equality :as lib.equality]
[metabase.lib.field :as lib.field]
[metabase.lib.filter :as lib.filter]
[metabase.lib.hierarchy :as lib.hierarchy]
......@@ -30,12 +29,12 @@
stage-number :- :int
expression-clause :- ::lib.schema.expression/expression]
(let [[op options & args] expression-clause
stage (lib.util/query-stage query stage-number)
columns (lib.metadata.calculation/visible-columns query stage-number stage)
->maybe-col #(when (lib.hierarchy/isa? (first %) ::ref/ref)
(when-let [col (lib.equality/find-matching-column % columns)]
(lib.filter/add-column-operators
(lib.field/extend-column-metadata-from-ref query stage-number col %))))]
->maybe-col #(when (lib.hierarchy/isa? (first %) ::ref/ref)
(lib.filter/add-column-operators
(lib.field/extend-column-metadata-from-ref
query stage-number
(lib.metadata.calculation/metadata query stage-number %)
%)))]
{:lib/type :mbql/expression-parts
:operator op
:options options
......
......@@ -4,6 +4,7 @@
[medley.core :as m]
[metabase.lib.core :as lib]
[metabase.lib.test-metadata :as meta]
[metabase.lib.test-util :as lib.tu]
[metabase.lib.types.isa :as lib.types.isa]))
(deftest ^:parallel basic-filter-parts-test
......@@ -55,18 +56,15 @@
:operator :=
:args
[{:lib/type :metadata/column
:lib/source :source/joins
:lib/source-uuid string?
:effective-type :type/Integer
:metabase.lib.field/binning {:strategy :default}
:operators (comp vector? not-empty)
:active true
:id (:id checkins-user-id-col)
:source-alias "Checkins"
:lib/desired-column-alias "Checkins__USER_ID"
:display-name "User ID: Auto binned"
:metabase.lib.join/join-alias "Checkins"}
(assoc user-id-col :display-name "ID: Auto binned")]}
(assoc (meta/field-metadata :users :id) :display-name "ID: Auto binned")]}
(lib/expression-parts query (lib/= (lib/with-binning checkins-user-id-col {:strategy :default})
(lib/with-binning user-id-col {:strategy :default}))))))
(testing "bucketing"
......@@ -74,17 +72,14 @@
:operator :=
:args
[{:lib/type :metadata/column
:lib/source :source/joins
:lib/source-uuid string?
:effective-type :type/Date
:operators (comp vector? not-empty)
:id (:id checkins-date-col)
:source-alias "Checkins"
:lib/desired-column-alias "Checkins__DATE"
:metabase.lib.field/temporal-unit :day
:display-name "Date: Day"
:metabase.lib.join/join-alias "Checkins"}
(assoc user-last-login-col :display-name "Last Login: Day")]}
(assoc (meta/field-metadata :users :last-login) :display-name "Last Login: Day")]}
(lib/expression-parts query (lib/= (lib/with-temporal-bucket checkins-date-col :day)
(lib/with-temporal-bucket user-last-login-col :day))))))))
......@@ -110,3 +105,13 @@
(lib/expression-clause := [(meta/field-metadata :products :id) 1] {})))
(is (=? [:= {:lib/uuid string?} [:+ {} [:field {:lib/uuid string?} (meta/id :products :id)] 2] 1]
(lib/expression-clause := [(lib/expression-clause :+ [(meta/field-metadata :products :id) 2] {}) 1] {}))))
(deftest ^:parallel invisible-expression-parts-test
(is (=? {:lib/type :mbql/expression-parts
:operator :=
:args [{:lib/type :metadata/column
:name "ID"
:display-name "ID"}
1]}
(lib/expression-parts lib.tu/venues-query -1 (lib/= (lib/ref (meta/field-metadata :products :id))
1)))))
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