diff --git a/frontend/src/metabase/lib/expressions/config.js b/frontend/src/metabase/lib/expressions/config.js index 6b06c47f8b254a7537ca33001dd0b7e3b99fc066..dd635594152947850f72ee6b6e82a82e3fe2d233 100644 --- a/frontend/src/metabase/lib/expressions/config.js +++ b/frontend/src/metabase/lib/expressions/config.js @@ -226,12 +226,22 @@ export const MBQL_CLAUSES = { type: "boolean", args: ["expression", "expression", "expression"], }, + interval: { + displayName: "timeSpan", + type: "number", + args: ["number", "string"], + }, "time-interval": { displayName: `interval`, type: "boolean", args: ["expression", "number", "string"], hasOptions: true, }, + "relative-datetime": { + displayName: "relativeDateTime", + type: "expression", + args: ["number", "string"], + }, "is-null": { displayName: `isnull`, type: "boolean", diff --git a/frontend/src/metabase/lib/expressions/helper_text_strings.js b/frontend/src/metabase/lib/expressions/helper_text_strings.js index 22fece8a64e7063cca8fc1940f2c7068a6a6bf5c..92b1c11cfd4157d2e29468b5a071de1a6d343c7c 100644 --- a/frontend/src/metabase/lib/expressions/helper_text_strings.js +++ b/frontend/src/metabase/lib/expressions/helper_text_strings.js @@ -440,6 +440,22 @@ const helperTextStrings = [ { name: t`end`, description: t`The end of the range.` }, ], }, + { + name: "interval", + structure: "timeSpan(" + t`number` + ", " + t`text` + ")", + description: t`Gets a time interval of specified length`, + example: 'timeSpan(7, "day")', + args: [ + { + name: t`number`, + description: t`Period of interval, where negative values are back in time.`, + }, + { + name: t`text`, + description: t`Type of interval like "day", "month", "year".`, + }, + ], + }, { name: "time-interval", structure: @@ -461,6 +477,22 @@ const helperTextStrings = [ }, ], }, + { + name: "relative-datetime", + structure: "relativeDateTime(" + t`number` + ", " + t`text` + ")", + description: t`Gets a timestamp relative to the current time`, + example: 'relativeDateTime(-30, "day")', + args: [ + { + name: t`number`, + description: t`Period of interval, where negative values are back in time.`, + }, + { + name: t`text`, + description: t`Type of interval like "day", "month", "year".`, + }, + ], + }, { name: "is-null", structure: "isnull(" + t`column` + ")", diff --git a/frontend/test/metabase/lib/expressions/suggest.unit.spec.js b/frontend/test/metabase/lib/expressions/suggest.unit.spec.js index 9c651efa9f3c640d323b763cf831b425b1c3bab7..2eed1aa01f4400675dc839ca85c78553e4b364b8 100644 --- a/frontend/test/metabase/lib/expressions/suggest.unit.spec.js +++ b/frontend/test/metabase/lib/expressions/suggest.unit.spec.js @@ -147,6 +147,7 @@ describe("metabase/lib/expression/suggest", () => { [ { text: "True", type: "literal" }, { text: "[Total] ", type: "fields" }, + { text: "timeSpan(", type: "functions" }, { text: "trim(", type: "functions" }, ].sort(suggestionSort), );