Skip to content
Snippets Groups Projects
  • Romeo Van Snick's avatar
    0dc75042
    Combine columns (#42021) · 0dc75042
    Romeo Van Snick authored
    * [MLv2] Add `preview-expression` to eval an expression on sample data
    
    This is needed to show the previews in the UX for the combining columns
    epic #39977.
    
    Fixes #39979.
    
    * [MBQL lib] Add "Combine columns" drill-thru
    
    This is following the original plan of using a drill for this. It's hard
    to combine that with the "preview" functionality.
    
    See [thread](https://metaboat.slack.com/archives/C06P22KS4JH/p1712264174056569)
    for discussion of how we might approach that issue.
    
    Fixes #39978.
    
    * [MBQL lib] Add "Combine columns" drill-thru
    
    This is following the original plan of using a drill for this. It's hard
    to combine that with the "preview" functionality.
    
    See [thread](https://metaboat.slack.com/archives/C06P22KS4JH/p1712264174056569
    
    )
    for discussion of how we might approach that issue.
    
    Fixes #39978.
    
    * [MLv2] Add `preview-expression` to eval an expression on sample data
    
    This is needed to show the previews in the UX for the combining columns
    epic #39977.
    
    Fixes #39979.
    
    * [MLv2] Add `preview-expression` to eval an expression on sample data
    
    This is needed to show the previews in the UX for the combining columns
    epic #39977.
    
    Fixes #39979.
    
    * Revert "Merge branch 'mblib-preview-expressions' into combine-columns"
    
    This reverts commit dac17f84aaae09906a206106290f7f58dea659bd, reversing
    changes made to 2934fab19db495ca8104801d41bc8aba457e401f.
    
    * Revert "Merge branch 'mblib-preview-expressions' into combine-columns"
    
    This reverts commit 2934fab19db495ca8104801d41bc8aba457e401f, reversing
    changes made to 6a43c22e78fb616c7ac0b024811b2989a1ae0f20.
    
    * Revert "Merge branch 'mblib-preview-expressions' into combine-columns"
    
    This reverts commit 6a43c22e78fb616c7ac0b024811b2989a1ae0f20, reversing
    changes made to 2257333a8ae69f0c9a6f6fdf0c8f5d837263f97a.
    
    * [FE] "Combine columns" drill thru (#40082)
    
    * Type Section['icon'] properly, including the hack for summarize section
    
    * Add combine columns section
    
    * Add types for combine columns drill
    
    * Add combine columns drill component stub
    
    * Mock combine columns drill
    
    * Add component stub
    
    * Encapsulate typing hacks
    
    * Extract CombineColumnsDrill
    
    * Extract ColumnAndSeparatorRow
    
    * Improve naming, add button to edit separators
    
    * Translate string
    
    * Improve styling
    
    * Separator input
    
    * Handle removing columns
    
    * Rename lib.ts to utils.ts
    
    * Implement onSubmit
    
    * Add getNextColumnAndSeparator
    
    * Use form for a11y
    
    * Handle vertical overflow
    
    * Handle horizontal overflow
    
    * Extract formatSeparator
    
    * Use proper translations
    
    * Adjust min/max sizes
    
    * Fix scrollbar being unnecessarily shown
    
    * Display source column name
    
    * Avoid serializing the entire column and putting it into DOM
    
    * Use module.css extension
    
    * Format code
    
    * Improve a11y
    
    * Mock combineColumnsDrillExpression and previewExpression
    
    * Add Preview component
    
    * Move preview logic to Preview component
    
    * Style Preview
    
    * Format code
    
    * Move styles to CSS modules
    
    * Update UI to latest designs
    - move "Add another column" button
    - remove "Separated by X" button
    - always show separator inputs
    
    * Remove displayInfo mock
    
    * Add asReturned
    
    * Update CombineColumnsDrillThruInfo
    
    * Integrate new way of working with combine columns drill
    
    * Fix generating expression names
    
    * Integrate drill with click actions
    
    * Integrate new preview workflow
    
    * Revert "Update UI to latest designs"
    
    This reverts commit cda039dffe9d452c0866f63800e2e887a540fe67.
    
    * Use previewExpression interface correctly
    
    * Use new preview_expression API
    
    * Make sure columns are created with original query and stage index
    
    * Extract usePreview and handle preview errors
    
    * Update popover title
    
    * Move add column button
    
    * Fix outline being cut off
    
    * Style preview label as per design
    
    * Format empty separator
    
    * Make preview scrollable
    
    * Use project convention
    
    * Simplify ScrollArea usage
    
    * Use ScrollArea in CombineColumnsDrill
    
    * Update comment
    
    * Remove Lib.previewExpression
    
    * Clean up the preview after removing Lib.previewExpression
    
    * Implement getPreview
    
    * Change default column preview to 'text'
    
    * Remove usePreview hook which is no longer in use
    
    * Rename Preview to Example
    
    * Use different placeholder for separator input
    
    * Add whitespace placeholder
    
    * Add ColumnPicker boilerplate
    
    * Export Input
    
    * Use QueryColumnPicker for ColumnPicker
    
    * Pass width to AccordionList
    
    * Add sequences popover events with tippy
    
    * Remove unused ColumnOption helpers
    
    * Add testid to Example
    
    * Add e2e test for combine column in header
    
    * Select content of separator input on focus
    
    * Reduce padding on example
    
    * Add monospace variant to Text
    
    * Use monospace variant in Example
    
    * Use monospace font in textinput
    
    * Match faux-select label styles to our TextInput label styles
    
    * Add missing color
    
    * Remove !important
    
    * Use pre whitespace so consecutive spaces show up
    
    * Remove empty default
    
    * Add example for boolean
    
    * Remove !important
    
    * Use should.have text over contain
    
    ---------
    
    Co-authored-by: default avatarRomeo Van Snick <romeo@romeovansnick.be>
    
    * Remove duplicated code
    
    * Export useMantineTheme from metabase/ui
    
    * Use useMantineTheme instead of reading theme directly
    
    * Remove setTimeout in popover
    
    * Use plain t instead of jt
    
    * Move Popover dropdown sequence hack to metabase/ui
    
    ---------
    
    Co-authored-by: default avatarBraden Shepherdson <braden@metabase.com>
    Co-authored-by: default avatarKamil Mielnik <kamil@kamilmielnik.com>
    Combine columns (#42021)
    Romeo Van Snick authored
    * [MLv2] Add `preview-expression` to eval an expression on sample data
    
    This is needed to show the previews in the UX for the combining columns
    epic #39977.
    
    Fixes #39979.
    
    * [MBQL lib] Add "Combine columns" drill-thru
    
    This is following the original plan of using a drill for this. It's hard
    to combine that with the "preview" functionality.
    
    See [thread](https://metaboat.slack.com/archives/C06P22KS4JH/p1712264174056569)
    for discussion of how we might approach that issue.
    
    Fixes #39978.
    
    * [MBQL lib] Add "Combine columns" drill-thru
    
    This is following the original plan of using a drill for this. It's hard
    to combine that with the "preview" functionality.
    
    See [thread](https://metaboat.slack.com/archives/C06P22KS4JH/p1712264174056569
    
    )
    for discussion of how we might approach that issue.
    
    Fixes #39978.
    
    * [MLv2] Add `preview-expression` to eval an expression on sample data
    
    This is needed to show the previews in the UX for the combining columns
    epic #39977.
    
    Fixes #39979.
    
    * [MLv2] Add `preview-expression` to eval an expression on sample data
    
    This is needed to show the previews in the UX for the combining columns
    epic #39977.
    
    Fixes #39979.
    
    * Revert "Merge branch 'mblib-preview-expressions' into combine-columns"
    
    This reverts commit dac17f84aaae09906a206106290f7f58dea659bd, reversing
    changes made to 2934fab19db495ca8104801d41bc8aba457e401f.
    
    * Revert "Merge branch 'mblib-preview-expressions' into combine-columns"
    
    This reverts commit 2934fab19db495ca8104801d41bc8aba457e401f, reversing
    changes made to 6a43c22e78fb616c7ac0b024811b2989a1ae0f20.
    
    * Revert "Merge branch 'mblib-preview-expressions' into combine-columns"
    
    This reverts commit 6a43c22e78fb616c7ac0b024811b2989a1ae0f20, reversing
    changes made to 2257333a8ae69f0c9a6f6fdf0c8f5d837263f97a.
    
    * [FE] "Combine columns" drill thru (#40082)
    
    * Type Section['icon'] properly, including the hack for summarize section
    
    * Add combine columns section
    
    * Add types for combine columns drill
    
    * Add combine columns drill component stub
    
    * Mock combine columns drill
    
    * Add component stub
    
    * Encapsulate typing hacks
    
    * Extract CombineColumnsDrill
    
    * Extract ColumnAndSeparatorRow
    
    * Improve naming, add button to edit separators
    
    * Translate string
    
    * Improve styling
    
    * Separator input
    
    * Handle removing columns
    
    * Rename lib.ts to utils.ts
    
    * Implement onSubmit
    
    * Add getNextColumnAndSeparator
    
    * Use form for a11y
    
    * Handle vertical overflow
    
    * Handle horizontal overflow
    
    * Extract formatSeparator
    
    * Use proper translations
    
    * Adjust min/max sizes
    
    * Fix scrollbar being unnecessarily shown
    
    * Display source column name
    
    * Avoid serializing the entire column and putting it into DOM
    
    * Use module.css extension
    
    * Format code
    
    * Improve a11y
    
    * Mock combineColumnsDrillExpression and previewExpression
    
    * Add Preview component
    
    * Move preview logic to Preview component
    
    * Style Preview
    
    * Format code
    
    * Move styles to CSS modules
    
    * Update UI to latest designs
    - move "Add another column" button
    - remove "Separated by X" button
    - always show separator inputs
    
    * Remove displayInfo mock
    
    * Add asReturned
    
    * Update CombineColumnsDrillThruInfo
    
    * Integrate new way of working with combine columns drill
    
    * Fix generating expression names
    
    * Integrate drill with click actions
    
    * Integrate new preview workflow
    
    * Revert "Update UI to latest designs"
    
    This reverts commit cda039dffe9d452c0866f63800e2e887a540fe67.
    
    * Use previewExpression interface correctly
    
    * Use new preview_expression API
    
    * Make sure columns are created with original query and stage index
    
    * Extract usePreview and handle preview errors
    
    * Update popover title
    
    * Move add column button
    
    * Fix outline being cut off
    
    * Style preview label as per design
    
    * Format empty separator
    
    * Make preview scrollable
    
    * Use project convention
    
    * Simplify ScrollArea usage
    
    * Use ScrollArea in CombineColumnsDrill
    
    * Update comment
    
    * Remove Lib.previewExpression
    
    * Clean up the preview after removing Lib.previewExpression
    
    * Implement getPreview
    
    * Change default column preview to 'text'
    
    * Remove usePreview hook which is no longer in use
    
    * Rename Preview to Example
    
    * Use different placeholder for separator input
    
    * Add whitespace placeholder
    
    * Add ColumnPicker boilerplate
    
    * Export Input
    
    * Use QueryColumnPicker for ColumnPicker
    
    * Pass width to AccordionList
    
    * Add sequences popover events with tippy
    
    * Remove unused ColumnOption helpers
    
    * Add testid to Example
    
    * Add e2e test for combine column in header
    
    * Select content of separator input on focus
    
    * Reduce padding on example
    
    * Add monospace variant to Text
    
    * Use monospace variant in Example
    
    * Use monospace font in textinput
    
    * Match faux-select label styles to our TextInput label styles
    
    * Add missing color
    
    * Remove !important
    
    * Use pre whitespace so consecutive spaces show up
    
    * Remove empty default
    
    * Add example for boolean
    
    * Remove !important
    
    * Use should.have text over contain
    
    ---------
    
    Co-authored-by: default avatarRomeo Van Snick <romeo@romeovansnick.be>
    
    * Remove duplicated code
    
    * Export useMantineTheme from metabase/ui
    
    * Use useMantineTheme instead of reading theme directly
    
    * Remove setTimeout in popover
    
    * Use plain t instead of jt
    
    * Move Popover dropdown sequence hack to metabase/ui
    
    ---------
    
    Co-authored-by: default avatarBraden Shepherdson <braden@metabase.com>
    Co-authored-by: default avatarKamil Mielnik <kamil@kamilmielnik.com>
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
mbql-library-changelog.md 1.63 KiB
title: MBQL Library changelog

MBQL Library Changelog

Changes made to the library API for manipulating MBQL queries, found in metabase.lib.js. The latest API documentation can be found here.

This library is mainly used by Metabase's own frontend, but it is treated as a proper API surface which is versioned and documented in this changelog.

Metabase 0.50.0

  • Created this file and began versioning this API.

  • New function as-returned has been added. It handles a tricky case when adding filters or expressions to a query with aggregations.

    Suppose we have a query with aggregations in its last stage. When adding a filter or expression to that stage, it's applied before the aggregations. That may be the desired behavior, but if we want a filter or custom expression based on the aggregations and breakouts in the last stage, there was no good support in this API.

    as-returned looks at the query and stage, and shifts to a later stage if necessary. If a later stage is needed but we were already on the last stage, a new empty stage is appended.

  • New functions column-extractions, extract, and extraction-expression have been added.

    • column-extractions returns a list of extractions, which are possible custom expressions we can derive from a given column. For example, getting the host or base domain name from a URL or email address, or the day of the week from a date or datetime.
    • extract applies an extraction to the query.
    • extraction-expression returns the expression for the extraction, allowing further editing.