diff --git a/e2e/test/scenarios/visualizations-tabular/pivot_tables.cy.spec.js b/e2e/test/scenarios/visualizations-tabular/pivot_tables.cy.spec.js index addd8ad31332c7b7aff2908d7ecccb9d7197ad66..1020ea3337487d57a2a2bf056219601d81f70a8c 100644 --- a/e2e/test/scenarios/visualizations-tabular/pivot_tables.cy.spec.js +++ b/e2e/test/scenarios/visualizations-tabular/pivot_tables.cy.spec.js @@ -1166,7 +1166,7 @@ describe("scenarios > visualizations > pivot tables", { tags: "@slow" }, () => { visualization_settings: { "pivot_table.column_split": { rows: ["CATEGORY", "EAN"], - columns: ["count"], + columns: [], values: ["count"], }, }, diff --git a/src/metabase/query_processor/pivot.clj b/src/metabase/query_processor/pivot.clj index 660e9c5bb80eebafe2ddf7aac81bfc4f9a22ff6c..3cbf5957c350b7032fd7839f102d7bbe8ad6a1eb 100644 --- a/src/metabase/query_processor/pivot.clj +++ b/src/metabase/query_processor/pivot.clj @@ -357,13 +357,14 @@ metadata-provider (or (:lib/metadata query) (lib.metadata.jvm/application-database-metadata-provider (:database query))) query (lib/query metadata-provider query) - index-in-breakouts (into {} - (comp (filter (comp #{:source/breakouts} :lib/source)) - (map-indexed (fn [i column] [(:name column) i]))) - (lib/returned-columns query)) + returned-columns (lib/returned-columns query) + {:source/keys [aggregations breakouts]} (group-by :lib/source returned-columns) + column-name->index (into {} + (map-indexed (fn [i column] [(:name column) i])) + (concat breakouts aggregations)) process-columns (fn process-columns [column-names] (when (seq column-names) - (into [] (keep index-in-breakouts) column-names))) + (into [] (keep column-name->index) column-names))) pivot-opts {:pivot-rows (process-columns rows) :pivot-cols (process-columns columns) :pivot-measures (process-columns values)}] diff --git a/test/metabase/api/downloads_exports_test.clj b/test/metabase/api/downloads_exports_test.clj index c54690639cc54179b5a767dddc67f45f0f31f885..4ddb1a7cf505e209b23e3c7a8c80247180877916 100644 --- a/test/metabase/api/downloads_exports_test.clj +++ b/test/metabase/api/downloads_exports_test.clj @@ -1096,11 +1096,9 @@ [:avg [:field (mt/id :products :rating) {:base-type :type/Float}]]] :breakout [[:field (mt/id :products :category) {:base-type :type/Text}]]}} :visualization_settings {:pivot_table.column_split - {:rows [[:field (mt/id :products :category) {:base-type :type/Text}]] + {:rows ["CATEGORY"] :columns [] - :values [[:aggregation 1] - [:aggregation 0] - [:aggregation 2]]} + :values ["sum" "count" "avg"]} :column_settings {"[\"name\",\"count\"]" {:column_title "Count Renamed"} "[\"name\",\"sum\"]" {:column_title "Sum Renamed"} @@ -1135,10 +1133,9 @@ :breakout [[:field (mt/id :products :category) {:base-type :type/Text}] [:field (mt/id :products :created_at) {:base-type :type/DateTime :temporal-unit :year}]]}} :visualization_settings {:pivot_table.column_split - {:rows [[:field (mt/id :products :created_at) {:base-type :type/DateTime :temporal-unit :year}] - [:field (mt/id :products :category) {:base-type :type/Text}]] + {:rows ["CREATED_AT" "CATEGORY"] :columns [] - :values [[:aggregation 0]]} + :values ["count"]} :column_settings {"[\"name\",\"count\"]" {:column_title "Count Renamed"}}}}] (let [expected-header ["Created At" "Category" "Count"]