Metabase - v0.48.0-RC1

Revamped auditing tools: Metabase analytics collection

The new Metabase analytics collection is only available for the Enterprise Edition. Including a summary here just as an FYI.

  • Get a comprehensive audit log of what’s been going on in your Metabase, with investigative tools to take action when you need to. The expanded set of internal data points includes configuration data: no more mornings lost asking around to find out who turned off SSO, when, and why. You can trace it back in your usage analytics and see who you need to follow up with.
  • Set up alerts on auditing questions
  • See exactly who’s using Metabase, when they’re using it, how often they’re using it, what people are looking at most, and more.
  • Make the most valuable dashboards, questions, and models more accessible (on the Metabase home page, in official collections, or with subscriptions) so your data team isn’t tied up with ad hoc requests.
  • Check your usage analytics for the slowest questions and dashboards, and see where you can speed things up by caching results, or retire something that’s not in use anyway.
  • Better overviews for deactivating users, seeing where entity dependencies exist, and managing data migrations.
  • Initially available only to Admins, you can grant permissions to view the Metabase analytics collection to other groups.
  • Customize reports based on a set of models in the Metabase analytics collection.

Other improvements

  • Auto-connecting dashboard filters. Connect one card to a filter, and Metabase will connect all other dashboard cards to that filter on the same field (if the field is present).
  • Move cards between dashboard tabs.
  • Filter search results by collection type, person who edited, and more. Find stuff that’s been recently created or touched so you know it’s trustworthy.
  • Add and remove columns in bulk in table settings.
  • Auto-assign Primary Key to CSV uploads.
  • If you have basic actions enabled on the model, update and delete items directly via their object detail.
  • X-ray indexed records in a table or model.
  • New admin setting for SameSite session cookies for authenticating embedding users across domains.

Breaking changes and other notes

Metabase analytics

  • With the launch of new Metabase analytics, we’ll no longer write activity and view logs to Metabase Starter and Open Source; these logs will only be available on Metabase Pro and Enterprise.
  • Query execution tables will be truncated for queries over two years old.

API changes

We’ve renamed a couple of Dashboard entities:
- ordered_tabs key is now tabs.
- ordered_cards key is now dashcards.

Pulses will be removed from Metabase 49

Pulses gave way to dashboard subscriptions way back in Metabase 38. They’ve been chilling out in the background since then. We’ll remove them in the next major release (49).

Audit v1 will be removed in a future release

For the Enterprise Edition only: We’ll remove the previous audit logs in the Admin settings in a later release, as the new Metabase analytics collection replaces them. For now, you can still view and edit subscriptions and alerts in the Audit admin section, and we’ll let you know when and where we move these tools.

Changes to database user roles

We’ve made some performance optimizations to our database driver code and will no longer enforce read-only connections as much as before (although, it was never a given). You may not be affected, but we recommend checking out our guidance on managing database user roles and privileges in Metabase.


You can download a .jar of the release, or get the latest on Docker. Make sure to back up your Metabase
database before you upgrade! Need help? Check out our upgrading instructions.

Docker image: metabase/metabase:v0.48.0-RC1
Download the JAR here:


SHA-256 checksum for the v0.48.0-RC1 JAR:



Enhancements - Introduce Metabase analytics Collection (#35434) - Allow spaces in datetime strings for CSV uploads (#35648) - Check if inactive tables are being used by questions before deleting them (#35615) - Make `SESSION_COOKIE_SAMESITE` a setting (#35021) - Optimize global search 20% (#35367) - Auto-wire up dashboard field filters (#35147) - Add percentage type to metadata (#35124) - Make `MB_AUDIT_MAX_RETENTION_DAYS` truncate data from the `view_log` or `audit_log` table and enforce new rules (#34985) - Explain why linked filters don't work and prevent accidentally disabling them (#34604) - Prevent users from adding questions from personal collections to dashboards in public collections (#34733) - Let people move cards between dashboard tabs (#34367) - Allow Linking dashcards to dashboard tabs (#34779) - Update dashboard performance 48 (#34721) - Allow users to link dashcard to dashboard tab in Click Behavior sidebar (#34781) - Add custom warning message when leaving creating a model (#34430) - Add custom warning message when leaving creating an SQL question (#34429) - Add custom warning message when leaving editing a notebook question (chill mode only) (#34428) - Show custom warning message when leaving editing model via Cancel button (#34366) - Show custom warning message when leaving editing dashboard via Cancel button (#34074) - Prevent users from losing their changes via “Back” and in-app navigation (#33749) - Add custom warning message when leaving changing Data Model (segments and metrics) (#33795) - Add custom warning message when leaving creating/editing a DB connection (#33794) - Add custom warning message when leaving editing a model (query definition or metadata) (#33793) - Add custom warning message when leaving editing an existing SQL (#33792) - Add custom warning message when leaving creating/editing a query action in model details page (#33791) - Add custom warning message when leaving editing dashboard (#33790) - Prevent users from losing their changes via “Back” and in-app navigation (#33749) - Auto-generate primary keys for CSV uploads (#33713) - Enable “Add all” / “Remove all” behavior in table settings (#33472) - Provide column ordering / hiding options from table header dropdown (#12494) - Add "Create new Collection" option to collection picker when duplicating (#32638) - Allow basic deletes and updates on object detail views (#32320)
Bug fixes - Support loading audit content from arbitrary plugin directory MB_PLUGINS_DIR (#35620) - Migrate New User and Edit User forms to Formik (#35605) - Deprecate PUT /api/dashboard/:id/cards endpoint (#35577) - Add more tests that v2 serdes is comprehensive, so new models are not forgotten (#35540) - Editing existing click behavior after target dashboard tab has been removed (#35524) - Includes dbms_version for database_connection_successful snoplow event (#35403) - GET /api/dashboard is removed from our API (#35365) - Improve card_read event for audit_log and view_log (#35302) - Add a note in `/admin/audit/` that Audit is being replaced by the Metabase analytics collection (#35295) - Support downgrading Metabase after adding Audit v2 (#35287) - Auditv2- FE: hide the archive and move button for the custom reports (#35212) - Convert click-behavior utils to TypeScript (#35200) - Snowplow: Add new event for search results filtered (#35146) - Snowplow: Add a property for `pk_generated` to `csv_upload_successful` event (#35121) - Add test coverage for Dashboard Click Behavior - Table & Full app embedding (#35035) - Add test coverage for Dashboard Click Behavior - Line Chart (#35034) - Rework auto-generated PKs for CSV uploads (#36268) - Install clojure before running clj-kondo (#36222) - Alert/Dashboard subscription: render question title as tag (#36220) - [Mlv2] Make ambiguous matches a warning in `lib.equality` (#36197) - Housekeeping: remove default exports from dashboard/* (#36191) - Fix deadlock when running api tests in the repl (#36190) - Refactor - Rename "Aggregatable" to "Aggregable" (#36165) - Adding Percent Metadata Type (#36145) - FE - rename query to legacyQuery in expressions (#35988) - update next.jdbc (release with the fix is out already) and honeysql (#35941) - Add expression-clause-for-legacy-expression (#35936) - Add expression-name and with-expression-name (#35932) - [MLv2] Disambiguate columns: `:field` ref(:filter drill-thru))))s shouldn't match expressions (#35872) - Remove POST ee/serialization/serialize/data-model (#35849) - [MLv2] Add `stage-count` method (#35719) - Fix broken Root Collection permissions (#35716) - [MLv2] BE - Expose findMatchingColumn (#35675) - auto-adding filter targets on dashboards breaks dashboard (#36275) - expressionClauseForLegacyExpression returns raw mbql instead of ExpressionClause (#36075) - Labels in new Add Remove columns are not properly alligned (#35930) - viz settings break on questions with custom columns (#35839) - [AuditV2] All items in custom reports collection are read only (#35836) - Saving a SQL question will change the location to the filter value (#35785) - Can see move and archive buttons for metabase analytics collection in the root collection (#35700) - Search Results sending a bunch of `/user/recipient` queries when search is loaded (#35601) - No method in multimethod 'temporal-value-lower-bound' (#35582) - "Don't bin" is not selected on the picker in temporal bucketing (#35550) - Adding a tab to a dashboard makes the dashboard shows double in collection view (#35351) - Attribute input teleports when adding user attributes (#35316) - hide/show columns in a table view takes more than 4 seconds (#35296) - Don't show formatting options in table header when viewing raw table (#35244) - Switching between dashboard tabs takes more than 10 seconds (#35206) - breakoutableColumns from MLv2 takes more than 600ms to execute for some questions (#35205) - [MLv2] - findColumnIndexesFromLegacyRefs can't match Dataset columns to implicit breakouts (#35152) - Can't choose recently viewed link with the mouse when editing dashboard link card (#35037) - Unsaved changes warning shown when going back to notebook after visualizing the question (#35000) - Negative number of cards loaded in page title (#34767) - [MLv2] - A question joined on itself can cause FK columns to be displayed twice (#34742) - In nested questions fields can be added multiple times to the grouping (#34662) - "Add a time" filter in dashboard filters not working (#34615) - No explanation why linked filters do not work with native variables (#34570) - User needs to refresh the page 3 times to get field values (#34414) - Invalid identifier when joining tables that have the same column name (#34227) - Composite join keys aren't auto-populated when joining in notebook editor (#34184) - Multiple relationships to the same table in "Table Metadata", only one is available as a "group by" (#34159) - Linked Dashboard Filters Connected to the Same Field Don't Respect `Is Not` Setting (#34039) - Linked filters are not working with "Custom List" or "From another model or question" (#33892) - Entering a token with the wrong schema will make the properties endpoint fail (#33858) - Missing border-radius in collection table (#33744) - Uploaded CSVs including numbers greater than integer max are truncated (#33735) - Negative number is shown in browser tab during loading cards (#33692) - Questions or dashboards with lots of metadata take a lot of time to dismiss the spinner (#33499) - Group By drop-down only shows first relationship between Table A and Table B (#33451) - Can't subsequently run actions for different objects from dashboards (#33084) - Save button for SMTP settings form is in middle of page (#32818) - Update Modal flickers on initial load (#32667) - Compare to the Rest generates dashboard with failing questions (#32557) - Unable to add joined columns in table settings after removing through notebook editor on nested Question (#32373) - Underlying records drill-thru is confused by negative values (#32108) - [MLv2] [Bug] `replace-clause` is broken with joins (#32026) - CSV uploads use a lot of memory (#31992) - Duplicate requests to /api/card from Query Builder (#31905) - If initial data for a question doesn't contain numeric fields number summaries (sum, avg, etc.) don't become available after data is joined (#31384) - Referencing a Segment in another Segment filter breaks Questions when used (#30866) - No method in multimethod 'humanize-filter-value' for dispatch value: :>= (#30350) - Broken UI when adding multiple user attributes if keys start with the same string (#30196) - "$regex has to be a string" when using text filters on dashboards on MongoDB (#30136) - Unable to add text dashboard filter to native question (#30104) - Model loses temporal "group by" info (#28599) - When adding a db, immediately updating `database-enable-actions` prevents the db from finishing initial sync (#27877) - Having multiple `unnamed` dashboard filters drops all set filters except the last one (#27653) - Joining Models that isn't linked in the Data Model causes no metadata inferrence (#27323) - A question opened from a dashboard may look broken (#26849) - Pinning a card to a collection results in many views in "view_log" table (#25848) - Description can be searched for Question and Database but not Table (#25792) - "One of your alerts has stopped working" email should provide more detail (#25693) - Trend line not visible when using Stacking 100% (#25614) - Automatic explorations `compare to the rest` option fails for questions with joined table data present in the result (#25278) - "Enter a default valu" on required filter values in SQL questions (#24988) - Can't aggregate if the source question is an aggregated question (#24839) - Cannot remove filter defaults on Subscriptions (#24223) - Do not offer "bulk" selection from the archive page to readonly users (#24018) - `More options...` button in a boolean filter is not aligned with the previous options (#22253) - Serialization: order of keys is not consistent (#22196) - Incorrect query when choosing a temporal bucket for time column (type/Time) (#21269) - It's not possible to group by a temporal column WITHOUT using bucketing (#19684) - Log filled with warnings about deprecated sematic type "Number" (#18754) - Record metadata, when queries are using cache (#16517) - Add support for conditional formatting on boolean fields (#14939) - Native questions with filters with default values cannot be cleared (#13961) - Data Model and Object Details shows non-active columns as Foreign Key targets and can cause query breakage if remapped to foreign key (#13130) - Dashboard filter dropdown/search not shown for nested questions (Saved Questions and aggregated) (#12985) - Changing columns via visualization Settings makes Notebook column list inconsistent (#12044) - Tables are slow to render in Firefox when scrolling (#10339) - Cancel Database Analyze & Sync and Add DB connection check before start (#7526) - There is no difference in URL, ImageUrl, AvatarImageUrl fields displaying (#6265) - Postgres 'DATE' field off by 1 day (#3914) - Support unicode (emoji, Chinese characters, etc.) in pulses (#2342) - Migrate `activity` into `audit_log` (#34984) - Undo logic for moving dashboards between tabs (#34961) - Fix entities fetch caching (#34661) - Support string PKs in CSV files (#34595) - Detect string PKs in uploaded CSV files (#34592) - Update Trend chart design and fix copy (#34587) - Refactor - reduce duplication in QueryBuilder unit tests (#34490) - [MLv2] [FE] Add sort drill (#34458) - Split migration (#34400) - Do not run frontend workflow when label is added or removed (#34307) - Uploaded CSVs can't contain zoned datetimes (#34137) - Add custom warning message when leaving editing an implicit action (parameters) (#34081) - Use bigints instead of normal ints for CSV uploads (#34080) - Switch (#33993) - Update copy in the custom leave confirmation modal (#33788) - Detect if a CSV has an integer column named `id` or `pk`; set it as the auto-incrementing PK (#33714) - Don't log a full exception when fetching a dashboard that has a stray param (#33613) - [Epic] Enable “Add all” / “Remove all” behavior in table settings (#33472) - [AuditV2] Allow loading instance analytics into h2 (#33280) - Show form-field-specific errors coming from execute action endpoints (#33238) - Remove unsafe-eval from script-src (#33188) - [MLv2] Selected LHS/RHS column is missing bucket info in `join-condition-columns` methods (#33082) - Tests for various number of PKs in a model (#32783) - [MLv2] Join conditions should sync temporal units (#32759) - [MLv2] [Bug] Error when joining a saved question (#32758) - Improve FK violation error messages when running basic model actions (#32694) - Rework `migrate-click-through` to use `metabase.db.custom-migrations/define-migration` (#32612) - Rework `migrate-remove-admin-from-group-mapping-if-needed` to use `metabase.db.custom-migrations/define-migration` (#32611) - Remove unsafe-inline from style-src (#32526) - [MLv2] [Bug] Error when using `replace-clause` with joins (#32454) - BE: add an endpoint to fetch default values for an implicit action (#32435) - Testing plan for basic deletes and updates on object detail views (#32350) - Add default delete action to actions dropdown in object detail modal (#32323) - Add default update action to actions dropdown in object detail modal (#32322) - Add actions dropdown to object detail modal (#32321) - [MLv2] Enable access to field IDs from column metadata (#32160) - [MLv2] [Bug] Error when calling `available-join-strategies` (#32081) - [MLv2] Add `filterOperator()` function to get operator from a filter clause (#32058) - [MLv2] [Bug] `replace-clause` doesn't handle metrics (#32049) - Add test to ensure new driver methods are mentioned in driver changelog (#31736) - [Epic] Add test coverage for Dashboard Click Behavior (#31498) - [MLv2] Need functions like "expressionableColumns" (name?) (#31155) - [MLv2] Use MLv2 to display drill-thru controls (#31007) - [MLv2] Native query manipulation functions (#31006) - Investigate and solidify differences between `metabase_database` fields `options` and `settings` (#30468) - Add Metabase version to revision history (#29167) - [MLv2] Implement functions for available filters (#28703) - Add ability to remove columns from column header settings (#28608) - Add Metabase version to card definition (#28387) - [Epic] Support filtering in global search results (#27982) - [Epic] Audit v2 (#27792) - Improved `card-view` event (#27782) - We should display joined Saved Question in Query Builder rather than `Question ` (#21646) - Compute results of timestamp/current-date functions during query processing (#21518) - Provide column ordering / hiding options from table header dropdown (#12494) - Custom expression function Median() fails against SQL Server (#12222) - Standardize MBQL clause "options" (#11953) - Use fipp/puget/pp for pretty printing (#1684)

Register or login to:
  • 🔍View and search all Metabase releases.
  • 🛠️Create and share lists to track your tools.
  • 🚨Setup notifications for major, security, feature or patch updates.
  • 🚀Much more coming soon!
Continue with GitHub
Continue with Google