Expressions: filter expressions, case statements, string extracts, and share aggregations (#11868)
* Upgrade Chevrotain to v6.5.0 * Switch from embedded actions to visitor * rename tokens to lexer, remove no-longer needed Chevrotain hack from webpack.config.js * get tests passing again * progress converting syntax parser * got intermediate Sum(A) test passing * more progress on parsing expressions * get complex expression passing * prettier * linting * Add TokenizedExpression snapshot test * Add support to parser for recovering whitespace tokens * Add case clause [ci all] * fix test [ci all] * Harden test [ci all] * More tests [ci all] * Correctly infer case return type [ci all] * Fix test [ci all] * Fix tests [ci all] * Improved syntax parser * More parser cleanup + start adding filters and functions * Add CASE and partial filter support, cleanup tests * Add string extracts [ci all] * Typo [ci all] * Make linter happy [ci all] * Add regex-match-first [ci all] * Fix arglist [ci all] * Fix test [ci all] * Add sum-where count-where and share support. Refactor aggregation tokens * Fix tests [ci all] * Add ns prefixes [ci all] * Add ns qualifiers [ci all] * Fix trim [ci all] * Tests: ensure stable ordering of results [ci all] * Fix trim [ci all] * Support only 1-arg trim [ci all] * Fix ns prefixes [ci all] * Fix psql [ci all] * Fix redshift [ci redshift] * Refactor/simplify grammer to consolidate aggregation, expression, and filter functions * Add isCase to isExpression * Directly splice regex pattern for psql & redshift [ci all] * Fix schema [ci all] * Redshift: splice replace args [ci redshift] * Add ns prefix [ci redshift] * Typo [ci redshift] * Filter expressions * Add metrics and segments back in to expressions * Disable tokenized editing * Update tests to clojure.test [ci all] * Add concat to sqlite [ci all] * Add length [ci all] * Add missing ns [ci all] * Fix test [ci all] * Fix messed up multimethods [ci all] * Fix mssql [ci all] * Fix sqlite concat [ci all] * sqlite: correctly qoute literal strings [ci all] * Misc improvements to syntax highlighting etc * Cleanup tests [ci all] * Reoder defs [ci all] * Make linter happy [ci all] * Mongo: add case [ci mongo] * mongo: fix switch [ci mongo] * typo [ci mongo] * Improve syntax highlighter and suggestions * Mongo: always have default fallback in case [ci mongo] * Rearrange test to split out ones using expressions [ci mongo] * Remove uneeded merge [ci all] * misc * Much improved syntax highlighting using recovery mode and partial CST * Improved suggestions * try monospace font for expressions * Better typing in parser, various other fixes * Avoid parsing multiple times * Fix tests * Fix tests * More test fixes * Special case for UnderlyingRecords drill with sum-where/count-where/share * switch back to square brackets for identifiers * change extract to regexextract * Lift expressions to subselect [ci all] * Commit on enter * rename extract to substitute, fix tests * Refactor [ci all] * Fix normalization [ci all] * Correctly handle joins [ci all] Co-authored-by:Daniel Higginbotham <daniel@flyingmachinestudios.com> Co-authored-by:
Simon Belak <simon@metabase.com> Co-authored-by:
Maz Ameli <maz@metabase.com>
Showing
- backend/mbql/src/metabase/mbql/normalize.clj 48 additions, 42 deletionsbackend/mbql/src/metabase/mbql/normalize.clj
- backend/mbql/src/metabase/mbql/schema.clj 129 additions, 33 deletionsbackend/mbql/src/metabase/mbql/schema.clj
- backend/mbql/src/metabase/mbql/schema/helpers.clj 3 additions, 2 deletionsbackend/mbql/src/metabase/mbql/schema/helpers.clj
- backend/mbql/src/metabase/mbql/util.clj 1 addition, 1 deletionbackend/mbql/src/metabase/mbql/util.clj
- backend/mbql/test/metabase/mbql/normalize_test.clj 11 additions, 0 deletionsbackend/mbql/test/metabase/mbql/normalize_test.clj
- frontend/src/metabase-lib/lib/queries/StructuredQuery.js 17 additions, 5 deletionsfrontend/src/metabase-lib/lib/queries/StructuredQuery.js
- frontend/src/metabase-lib/lib/queries/structured/Aggregation.js 4 additions, 5 deletions...nd/src/metabase-lib/lib/queries/structured/Aggregation.js
- frontend/src/metabase-lib/lib/queries/structured/Filter.js 6 additions, 0 deletionsfrontend/src/metabase-lib/lib/queries/structured/Filter.js
- frontend/src/metabase-lib/lib/queries/structured/MBQLClause.js 6 additions, 1 deletion...end/src/metabase-lib/lib/queries/structured/MBQLClause.js
- frontend/src/metabase/lib/expressions/compile.js 201 additions, 0 deletionsfrontend/src/metabase/lib/expressions/compile.js
- frontend/src/metabase/lib/expressions/config.js 364 additions, 17 deletionsfrontend/src/metabase/lib/expressions/config.js
- frontend/src/metabase/lib/expressions/format.js 134 additions, 0 deletionsfrontend/src/metabase/lib/expressions/format.js
- frontend/src/metabase/lib/expressions/formatter.js 0 additions, 84 deletionsfrontend/src/metabase/lib/expressions/formatter.js
- frontend/src/metabase/lib/expressions/index.js 152 additions, 47 deletionsfrontend/src/metabase/lib/expressions/index.js
- frontend/src/metabase/lib/expressions/lexer.js 315 additions, 0 deletionsfrontend/src/metabase/lib/expressions/lexer.js
- frontend/src/metabase/lib/expressions/parser.js 392 additions, 460 deletionsfrontend/src/metabase/lib/expressions/parser.js
- frontend/src/metabase/lib/expressions/process.js 57 additions, 0 deletionsfrontend/src/metabase/lib/expressions/process.js
- frontend/src/metabase/lib/expressions/suggest.js 543 additions, 0 deletionsfrontend/src/metabase/lib/expressions/suggest.js
- frontend/src/metabase/lib/expressions/syntax.js 390 additions, 0 deletionsfrontend/src/metabase/lib/expressions/syntax.js
- frontend/src/metabase/lib/expressions/tokens.js 0 additions, 87 deletionsfrontend/src/metabase/lib/expressions/tokens.js
Loading
Please register or sign in to comment