Metabase® Enterprise Edition™ v1.49.0
Metabase 49 release announcement
Upgrading
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-enterprise:v1.49.0
Download the JAR here: https://downloads.metabase.com/enterprise/v1.49.0/metabase.jar
Notes
SHA-256 checksum for the v1.49.0 JAR:
126a449a2f301744bc542392fca360dc8a2c562faadf6831539cafc0e973db48
Changelog
Enhancements
Dashboard improvements
- Make dashboard filters global or tab specific (#31621)
- Add Sections (pre-defined layout of empty dash cards) to a dashboard (#38209, #38575)
- Let creators duplicate dashboards tabs and cards (#38208)
- Let creators swap out dashboard questions with a different question (#36497)
- Add "Replace question" action to dashboard cards (#36744)
- Let creators make dashboard and native query filters required (#36524, #18097, #39159, #5320, #37709)
- Default dashboards to a fixed width to give creators a more predictable canvas (#36358, #10364)
Trend charts improvements #33411
- Increase design control over Big Numbers (#31951)
- Smart Numbers: chose the unit of the lag displayed (#11200)
- Smart numbers: configurable lag (#9510)
- Smart Number visualization wording (#8919)
- Trend text not translated correctly depending on period (#25670)
- Support arbitrary date comparison (#35551)
Allow appending more data to CSV uploads (#35614, #38837, #37220, #36640, #13358)
Remove Models from Browse data (#40108, #40037)
Serialization API (#36843, #36240, #20632, #38359, #38804)
API Authentication method (#2699, #36593, #37607, #36347, #37051)
- Write a
GET /api/api-key
endpoint to list API keys (#37000) - Write a
PUT /api/api-key/:id/regenerate
endpoint to regenerate an existing API key (#36999) - Write a
PUT /api/api-key/:id
endpoint to update API key names/groups (#36998) - Remove API bits from ApiKey model (#37085)
- Return
group
instead of justgroup_name
for ApiKeys (#37061)- Add last_name to ApiKey users (#37234) - Avoid failing call to /api/model-index (#37284)
Add connection impersonation to Redshift (#38445, #32388)
Embedding improvements
- Setup flow for Static and Public embedding, and embedding feature discoverability (#35961, #36048, #36481, #36170)
- Modified setup flow for admins who want to start embedding (#38233)
- Fix public links refer to
null
when question is new (#39154) - Sticky filters on embedded and Public dashboards (#24726)
- Enable default public-sharing for new instances (#38609)
White-labeling
- Customize or hide “Help” link; hide links to metabase.com outside of admin settings (#35915, #36966)
- Fix white-labeled icon colors of official collections and verified models (#39238)
- Add anonymous usage tracking for relevant white-labeling (#37656)
Metabase Library v2 (#28689)
- Include implicit joins for breakout/order on models (#40027)
joinable-columns
on a Join sets source and alias (#39529)- Ensure
:name
is unique on returned columns in the FE (#39118) - Handle
Object.isFrozen()
legacy columns as input (#39032) - Custom columns testing plan (#37173, #36235)
- Migrate
setDefaultDisplay
to MLv2 (#37172) - Migrate
_syncStructuredQueryColumnsAndSettings
to MLv2 (#37171) - Migrate
sourceTableId
,sourceTable
to usesourceTableOrCardId
from MLv2 (#37170) - Migrate
databaseId
,database
to usedatabaseID
from MLv2 (#37169) - Add caching for the common case of visible-columns w/o options (#38409)
- Cache JS -> CLJS metadata conversion (#38375)
- Add tests and fix a special case for fk-filter drills (#38297)
- fk-details drill should preserve
:=
filters for other PKs (#38296) - Drill-thru coverage: Add a structured column and fix that case (#38295)
- Fix some edge cases and add more unit tests for zoom in drills (#38275)
- Add description and fingerprint to
displayInfo
for columns (#38476) - New "canned" queries and clicks for drill-thru testing (#38210)
- Add
isTemporalExtraction
flag todisplayInfo
(#37889) - Add
aggregation-column
andbreakout-column
(#37873) - Look up FK columns in
visible-columns
, not metadata (#37771) - Make
query=
treat missing:base-type
as matching (#37727) - findColumnIndexForColumnSetting and findColumnSettingIndexForColumn (#37677)
- Add
display-info
for queries (#37675) - Add
legacy-column->metadata
for convertingDatasetColumn
(#37648) - Migrate data reference (#37629)
- Migrate object detail (#37628)
- Add
compatible-type?
wrapper that handles JSDatasetColumn
s (#37609) - Remove aggregate, breakout, filter methods from Question (#37509)
- Migrate supportsImplicitActions (#37507)
- Migrate QuestionDataSource (#37396)
- Migrate initializeQB (#37391)
- Make displayInfo for column groups straightforward to use (#37369)
- Remove unused legacy MLv2 functions (#36988)
- Notebook steps (#36983, #36516)
- Add a flag to
displayInfo(query, stageIndex, temporalBucket)
indicating it's for an extraction temporal unit (#36978) - Drop redundant :fields clauses from stages and joins (#36959)
- Track drill-thru unit test coverage (#36601)
- Unskip FE integration tests for automatic-insights drills (#36529)
- Fix pivot drills integration with the FE (#36509)
- Implement
automatic-insights
drill (#36443) - Migrate
suggest.ts
to use MLv2 for computing columns (#36233) - Support changing expressions in the query w/o removing parts depending on the original (#36211)
View
- removeBreakoutPopover
usage (#36737)View
- removeAggregationPopover
usage (#36736)- Reorder column filter and distribution drills (#36700)
- Add support for segment and metric in legacyFieldRef (#36699)
- Add
sourceTableOrCardId(query)
(#36672) fk-filter
drills should not appear on native queries (#36660)- Fix an edge case where a join-alias is needed on a field ref (#36871)
- Add
breakoutColumn
andaggregationColumn
APIs to simply columns retrieval from these clauses (#37120) - Resolve a string
:fk-field-id
to a numeric ID if possible (#37079) - Migrate functions used in ExpressionEditorTextfield to MLv2 query (#36254)
- Convert ExpressionStep to MLv2 (#35982)
- Expressions in FilterPicker without legacy query (#35948)
- Expressions in AggregationPicker without legacy query (#35947)
Misc:
- Add
align-temporal-unit-with-param-type-and-value
multimethod (#37813) - Add the timestamp to the filename in the subscription attachment (#39120)
- Add intermittent test solver (#38159)
- Add BE for routing billing status (#38153)
- Add Creator Sentiment Email task (#38787)
- Add stress testing workflow for frontend unit tests (#38081)
- Add a banner to the top of
locales.clj
(#37877) - Allow toggling of the dashboard subscription sidebar from the icon (#36244)
- Bigquery: Sync required partition column (#36668, #36677, #36892)
- [chain filters] should not be using inactive fields for joins (#39635)
- Compute results of timestamp/current-date functions during query processing (#21518)
- Consistent Date and Time Formatting for
metabase.formatter.datetime
(#36559) - Count
:model/User
, not:core_user
(#36985) - Create a unified rendering pipeline for formatting (#36015)
- Delete all pruned persisted info records (#39219)
- Don't delete "off" persisted_info records (#39272)
- Download Updated Translations for v49 (#40086)
- Elevate selected filter field values (#40055)
- Ensure consistent percentage formatting across FE and pulses (#36327)
- Ensure results metadata is applied to standalone cards in pulse HTML output (#36323)
- Ensure results metadata is applied to csv files in pulse exports (#36320)
- Error if DB downgrades are required (#37239)
- Export to PDF should have the filter values that were used on the dashboard (#35475)
- Faster sync-fks for Redshift (#38970) (#40062)
- Filter picker search free input (#38907)
- Fix permissions graph performance (#36610, #36797, #36543)
- Fix confusion of expressions with the same name as columns (#39526, #39255)
- Fix isNavigationAllowed (#38703)
- Fix TableBrowser flex (#38324)
- Flaky QueryBuilder.unit.spec.tsx (#37184)
- Format SQL Query option in the Native Query Editor (#9142)
- Hitting enter doesn't save filter changes (#6552)
- Honey SQL 2 Migration (#28684, #28396, #28156, #28165, #28161)
- Introduce describeWithSnowplowEE (#39623)
- Join performance issues (#39633)
- Kondo lint to enforce naming convention for thread not safe defn/defmacro in tests (#37126)
- Load analytics only when changed using a checksum (#38280)
- Let admins disable user provision on SSO (#36371)
- Migrate the FieldInfo card to Mantine so it can be reused (#38432)
- Make dashboard subscription attachment behavior match the user's choice in-product (#36441)
- Merge viz settings correctly (#36154)
- Merge metadata correctly (#36153)
- Monger does not support Atlas Serverless (#27385)
- Make effective use of Snowflake's query result caching (#20988)
- No view logging for OSS (#39957)
- Only return helpText for supported features (#39766)
- Optimize autocomplete query (#38080)
- Port LastEditInfoLabel (#38109)
- Query metadata within comments leads to cache misses in AWS Athena (#29615)
- Remove unused global css (#39220, 39020, #39531)
- Remove normalization from legacyFieldRef method (#36717)
- Remove legacyQuery (#36639)
- Remove Pulses (#34147, #35841)
- Refactor drills unit tests structure, split huge file by drill type (#35883)
- Switch back to ring-jetty-adapter to addresses security issue (#39321)
- Sidebar loading state regression fix (#38875)
- Show more billing info on license and billing settings page (#38497)
- Specify one more guava explicitly (#38173)
- Sync column index information (#36452, #36624)
- Type routing in State (#38645)
- Test some modals more semantically (#37028)
- Tighten visual design of charts (#36991)
- Update required parameter reset icon (#39068)
- Uploads: 01/01/2012 is coerced to 1 (#38956)
- Update Metabase Analytics content (#38524, #38474)
- Update graalvm (#38218)
- Update deps with security issues (#39286, #37789)
- Update Enterprise readme to 2024 (#37207)
- Use the alias for unfolded JSON columns from previous stages (#39446)
- Unify type of timestamp columns (#33577)
- When querying a bare model with parameters, wrap an extra stage (#39963, #40047)
- Wrap literals around expression refs (#38886)
- When updating an alert, don't also update the question (#36866)
Bug fixes
- Apply Filters button cropped when a lot of values (#40071)
- "Add tab" button is covered with a right scroll button on dashboards with many tabs (#38641)
- Aurora Serverless v2 fails to verify CA due to RDS Combined CA Bundle not importing all certificate chains (#27790)
- Adding a description to a model column duplicates the description to other columns if they are null (#25884)
Admin > People
header "jumps" when switching from active and deselected users views (#37129)- Autosuggestion in native queries peaks the CPU on instances with > 1M fields (#30588)
- Action Button label cut off when editing click behavior (#35234)
Between
filter errors out with min > max (#16745)- Browse database page refreshes N seconds when a new DB is added that makes the page unusable (#39732)
- Bookmark icon should be correct size, and should be filled when an item is bookmarked (#34327)
- Custom columns that have same name as existing columns cause failure (#39059)
- Changing groups or dbs on data permissions, after saving a value causes the client to falsely believe that someone else edited the perm graph (#37811)
- Canceling editing a dashboard does not reset current tab (#38055)
- Cannot "filter by this column" (#38034)
- Cannot see Models as the data source in the data selector when opening a model (#39699)
- Click Behavior not working for Pivot Table (and Table pivoted) for the non-value columns (#25203)
- Custom columns to do filters for the past 1 day/month/year (#37165)
- “contains” and “does-not-contain” returned for the wrong fields (#36856)
column-filter
should come before other column drills (#36674)- Cancelled Queries are retried with Bigquery Driver (#36623)
- Custom Column in Models doesn't respect filtering when binning is applied (#26202)
- CSV exports of timestamps at midnight (00:00:00) is truncated to date (#14504)
- Dashboard ID filter does not work on models (#39940)
- Dashboard filters are slow (#37285)
- Dashcard text gets cut off (#36463)
- Data source is not properly highlighted for simple saved questions based on a table in a multi-schema database (#39807)
- Dashboard saves fails after adding the first tab then canceling the edit (#38278)
- Datetime filter not working correctly on mysql (#8762)
- Dashboard Email Subscription seems to cache incorrect settings (#30314)
- Date filter selection from the chart footer is glitchy and results in wrong selection (#22973)
- Date filtering on time-series viz is not available when the second grouping field is not a category type (#34690)
- Date filtering on time-series viz only works if time is added as a first grouping category (#34688)
- Description for calculated columns in model metadata editing page is incorrectly populated with description from other columns (#34349)
drill-thru/pk
drill should be returned for query that has multiple PKs on non-PK columns click (#35618)- Error calculating display info on filtering with a model (#36400)
- Exports should include formatting everywhere (#17753)
- Export formatting for Longitude & Latitude (#38419)
- Extreme slowness while editing parameters on a dashboard (#38225)
- Execute an Action on embedded Dashboard fails with 404 not found API call (#34395)
findMatchingColumn
does not find matching column (#37851)filter-args-display-name
doesn't handle exclude date filters (#37219)- Grouping by and summarizing on a custom column fails (#39081)
- Grid Map "Zoom In" broken for "Custom Questions" (#11210)
- Implicit joined fields are not available as breakouts in Models (#39657)
- Instance Analytics titles drop after page load (#38566)
- Issue with click Behavior and passing filters to custom destinations that are tabs of the same dashboard (#38455)
- "Is" filter in the header of the columns in a table context should be linked and allow free input (#37906)
- Interactive embedding dashboard with multiple tabs and parameter
header=false
will not load (#39002) - Joining on aggregated dates via the editor generates "No matching signature for function TIMESTAMP" (#27969)
- LDAP logging is non-existent (#39760)
- MongoDB nested fields not showing in v0.47.x (#35938)
- Make
query=
ignore absence ofbase-type
andeffective-type
in field references (#37659) - No option to hide/show tabs in Interactive embedding as a parameter. header=false will hide all tabs and go to tab 1 by default (#38429)
- On Date filter returns no results on a summarized question (#18769)
- PNG export of chart from a dashboard includes the menu ellipsis in the top right corner of the image (#36261)
- Pivot table with the filter on a date column breaks dashboard sending (#27941)
- Pie chart legend percentages are vertically not aligned with their label (#37635)
- Printed Dashboard is missing Color Indicators in the Legend (#6963)
- Preview results of intermediate stages are wrong in query builder (#39102)
- Question filters are not being updated if there are breakout clauses for the same column (#37463)
- removeClause throws "Cannot remove the final join condition" error (#36690)
- Redundant text card scrollbars shown in Firefox (#34537)
- Relative date filters don't work with custom date columns (#33528)
- Refreshing after setting a table to be sandboxed causes an error (#37774)
- Renamed columns in CSV/JSON exports (#18572)
- [
result_metadata
] Implicit binning on longitude from SQL question results in error (#16672) returnedColumns
does not handle columns with the same name (#37517)- SAML auth page is weird when set by env vars (#33264)
- Support constants in expressions (#37461)
- Show progress charts' current values on small dashboard cards (#5554)
- Seeing scrollbars in search and admin (#38673)
- Sorting Dashboard Tabs has a weird animation on drop (#38056)
- Top nav + New and Settings buttons lock up when a dashboard is loading (#39303)
- Toast/notification after custom dashboard has invisible text (#38722)
- Trend Chart font is incorrect in certain email clients (#38684)
- Unknown error in the revision history of a dashboard leads to a NullPointerException (#38910)
- Unsaved dashcards with mapped params error when switching tabs (#38245)
underlying-records
is not available for pivot table cell (#35394)underlying-records
should be returned for chart legend clicks (#35343)- "View details" (PK) drill thru on non-PK value for a row with multiple PKs only adds a filter for one of the PKs, nondeterminiate (#36426)
- Version info could have duplicate versions (#33803)
- Visual glitches when dragging a tab on another (#34966)
- When modifying the "fields" clause, remove the clause entirely if it becomes equivalent to not having the clause at all (#36574)
- Wrong field highlighted when editing model metadata if custom column added to left of column (#29943)
zoom-in.timeseries
isn't returned in all known cases (#36173)