[ 
https://issues.apache.org/jira/browse/CALCITE-6120?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Julian Hyde reassigned CALCITE-6120:
------------------------------------

    Assignee: Julian Hyde

> Add MATCHES_FILTER function, to match on Looker-style filter expressions
> ------------------------------------------------------------------------
>
>                 Key: CALCITE-6120
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6120
>             Project: Calcite
>          Issue Type: Improvement
>            Reporter: Julian Hyde
>            Assignee: Julian Hyde
>            Priority: Major
>
> Add a MATCHES_FILTER function that returns whether an expression matches 
> Looker-style filter expression. It would be enabled in only the BigQuery 
> library (although it is not a function currently supported by BigQuery).
> Looker filters are strings that express ranges in a concise way that are easy 
> to humans to write and understand, and not as error-prone as traditional SQL 
> expressions. Think of them as a generalization of {{LIKE}} from strings to 
> other data types such as DATE and INTEGER.
> Here is an example:
> {code}
> SELECT *
> FROM Emp
> WHERE MATCHES_FILTER(hiredate, 'last 3 months')
> {code}
> See the [filter expressions 
> specification|https://cloud.google.com/looker/docs/filter-expressions].
> The implementation can be a wrapper around the 
> [filtex|https://github.com/julianhyde/filtex] library that expands 
> {{MATCHES_FILTER}} as a macro. The library parses filter expressions, and we 
> convert its AST into a tree of RexNode. For example 
> {{MATCHES_FILTER(hiredate, 'last 3 months')}} becomes a RexNode equivalent to 
> {{hiredate BETWEEN current_date - interval 3 month AND current_date}}.
> The initial implementation would require the filter expression to be a 
> constant (such as literal). This would ensure that filter expressions are 
> only ever parsed at prepare time, not during execution of the query.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to