diff --git a/src/metabase/driver/druid.clj b/src/metabase/driver/druid.clj index 6f652e66cf5b1a5e6bcb642b4b3c152275923c38..1cfe762537c4f60b095724370b24c44a2de2a3ef 100644 --- a/src/metabase/driver/druid.clj +++ b/src/metabase/driver/druid.clj @@ -7,6 +7,7 @@ [metabase.driver.druid.query-processor :as qp] (metabase.models [field :as field] [table :as table]) + [metabase.sync-database.analyze :as analyze] [metabase.util :as u])) ;;; ### Request helper fns @@ -138,6 +139,15 @@ (field-values-lazy-seq details table-name field-name total-items-fetched paging-identifiers))))))) +(defn- analyze-table + "Implementation of `analyze-table` for Druid driver." + [driver table new-table-ids] + ((analyze/make-analyze-table driver + :field-avg-length-fn (constantly 0) ; TODO implement this? + :field-percent-urls-fn (constantly 0) + :calculate-row-count? false) driver table new-table-ids)) + + ;;; ### DruidrDriver Class Definition (defrecord DruidDriver [] @@ -148,6 +158,7 @@ driver/IDriver (merge driver/IDriverDefaultsMixin {:can-connect? (u/drop-first-arg can-connect?) + :analyze-table analyze-table :describe-database (u/drop-first-arg describe-database) :describe-table (u/drop-first-arg describe-table) :details-fields (constantly [{:name "host" diff --git a/src/metabase/sync_database/analyze.clj b/src/metabase/sync_database/analyze.clj index c21efd882d27f4931166737435daaf35cc22655a..bad37a0c7a53b7e267668e923e7fc08daa921f1b 100644 --- a/src/metabase/sync_database/analyze.clj +++ b/src/metabase/sync_database/analyze.clj @@ -186,12 +186,13 @@ (defn make-analyze-table "Make a generic implementation of `analyze-table`." {:style/indent 1} - [driver & {:keys [field-avg-length-fn field-percent-urls-fn] + [driver & {:keys [field-avg-length-fn field-percent-urls-fn calculate-row-count?] :or {field-avg-length-fn (partial driver/default-field-avg-length driver) - field-percent-urls-fn (partial driver/default-field-percent-urls driver)}}] + field-percent-urls-fn (partial driver/default-field-percent-urls driver) + calculate-row-count? true}}] (fn [driver table new-field-ids] (let [driver (assoc driver :field-avg-length field-avg-length-fn, :field-percent-urls field-percent-urls-fn)] - {:row_count (u/try-apply table-row-count table) + {:row_count (when calculate-row-count? (u/try-apply table-row-count table)) :fields (for [{:keys [id] :as field} (table/fields table)] (let [new-field? (contains? new-field-ids id)] (cond->> {:id id}