This is an automated email from the ASF dual-hosted git repository.

cwylie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new 82ac48786b9 document arrayContainsElement filter (#15455)
82ac48786b9 is described below

commit 82ac48786b9289e0a17fcdd28204042ff9677938
Author: Clint Wylie <[email protected]>
AuthorDate: Thu Dec 7 00:14:00 2023 -0800

    document arrayContainsElement filter (#15455)
---
 docs/querying/filters.md | 74 ++++++++++++++++++++++++++++++++++++++++--------
 website/.spelling        |  1 +
 2 files changed, 63 insertions(+), 12 deletions(-)

diff --git a/docs/querying/filters.md b/docs/querying/filters.md
index 9ded2455167..ee50b370f12 100644
--- a/docs/querying/filters.md
+++ b/docs/querying/filters.md
@@ -44,7 +44,7 @@ The simplest filter is a selector filter. The selector filter 
matches a specific
 | Property | Description | Required |
 | -------- | ----------- | -------- |
 | `type` | Must be "selector".| Yes |
-| `dimension` | Input column or virtual column name to filter. | Yes |
+| `dimension` | Input column or virtual column name to filter on. | Yes |
 | `value` | String value to match. | No. If not specified the filter matches 
NULL values. |
 | `extractionFn` | [Extraction 
function](./dimensionspecs.md#extraction-functions) to apply to `dimension` 
prior to value matching. See [filtering with extraction 
functions](#filtering-with-extraction-functions) for details. | No |
 
@@ -75,7 +75,7 @@ Druid's SQL planner uses the equality filter by default 
instead of selector filt
 | Property | Description | Required |
 | -------- | ----------- | -------- |
 | `type` | Must be "equality".| Yes |
-| `column` | Input column or virtual column name to filter. | Yes |
+| `column` | Input column or virtual column name to filter on. | Yes |
 | `matchValueType` | String specifying the type of value to match. For example 
`STRING`, `LONG`, `DOUBLE`, `FLOAT`, `ARRAY<STRING>`, `ARRAY<LONG>`, or any 
other Druid type. The `matchValueType` determines how Druid interprets the 
`matchValue` to assist in converting to the type of the matched `column`. | Yes 
|
 | `matchValue` | Value to match, must not be null. | Yes |
 
@@ -107,7 +107,7 @@ Druid's SQL planner uses the null filter by default instead 
of selector filter w
 | Property | Description | Required |
 | -------- | ----------- | -------- |
 | `type` | Must be "null".| Yes |
-| `column` | Input column or virtual column name to filter. | Yes |
+| `column` | Input column or virtual column name to filter on. | Yes |
 
 ### Example: equivalent of `WHERE someColumn IS NULL`
 
@@ -209,7 +209,7 @@ The in filter can match input rows against a set of values, 
where a match occurs
 | Property | Description | Required |
 | -------- | ----------- | -------- |
 | `type` | Must be "in".| Yes |
-| `dimension` | Input column or virtual column name to filter. | Yes |
+| `dimension` | Input column or virtual column name to filter on. | Yes |
 | `values` | List of string value to match. | Yes |
 | `extractionFn` | [Extraction 
function](./dimensionspecs.md#extraction-functions) to apply to `dimension` 
prior to value matching. See [filtering with extraction 
functions](#filtering-with-extraction-functions) for details. | No |
 
@@ -239,7 +239,7 @@ greater than, less than, greater than or equal to, less 
than or equal to, and "b
 | Property | Description | Required |
 | -------- | ----------- | -------- |
 | `type` | Must be "bound". | Yes |
-| `dimension` | Input column or virtual column name to filter. | Yes |
+| `dimension` | Input column or virtual column name to filter on. | Yes |
 | `lower` | The lower bound string match value for the filter. | No |
 | `upper`| The upper bound string match value for the filter. | No |
 | `lowerStrict` | Boolean indicating whether to perform strict comparison on 
the `lower` bound (">" instead of ">="). | No, default: `false` |
@@ -323,7 +323,7 @@ Druid's SQL planner uses the range filter by default 
instead of bound filter whe
 | Property | Description | Required |
 | -------- | ----------- | -------- |
 | `type` | Must be "range".| Yes |
-| `column` | Input column or virtual column name to filter. | Yes |
+| `column` | Input column or virtual column name to filter on. | Yes |
 | `matchValueType` | String specifying the type of bounds to match. For 
example `STRING`, `LONG`, `DOUBLE`, `FLOAT`, `ARRAY<STRING>`, `ARRAY<LONG>`, or 
any other Druid type. The `matchValueType` determines how Druid interprets the 
`matchValue` to assist in converting to the type of the matched `column` and 
also defines the type of comparison used when matching values. | Yes |
 | `lower` | Lower bound value to match. | No. At least one of `lower` or 
`upper` must not be null. |
 | `upper` | Upper bound value to match. | No. At least one of `lower` or 
`upper` must not be null. |
@@ -414,7 +414,7 @@ supported are "%" (matches any number of characters) and 
"\_" (matches any one c
 | Property | Description | Required |
 | -------- | ----------- | -------- |
 | `type` | Must be "like".| Yes |
-| `dimension` | Input column or virtual column name to filter. | Yes |
+| `dimension` | Input column or virtual column name to filter on. | Yes |
 | `pattern` | String LIKE pattern, such as "foo%" or "___bar".| Yes |
 | `escape`| A string escape character that can be used to escape special 
characters. | No |
 | `extractionFn` | [Extraction 
function](./dimensionspecs.md#extraction-functions) to apply to `dimension` 
prior to value matching. See [filtering with extraction 
functions](#filtering-with-extraction-functions) for details. | No |
@@ -438,7 +438,7 @@ The regular expression filter is similar to the selector 
filter, but using regul
 | Property | Description | Required |
 | -------- | ----------- | -------- |
 | `type` | Must be "regex".| Yes |
-| `dimension` | Input column or virtual column name to filter. | Yes |
+| `dimension` | Input column or virtual column name to filter on. | Yes |
 | `pattern` | String pattern to match - any standard [Java regular 
expression](http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html).
 | Yes |
 | `extractionFn` | [Extraction 
function](./dimensionspecs.md#extraction-functions) to apply to `dimension` 
prior to value matching. See [filtering with extraction 
functions](#filtering-with-extraction-functions) for details. | No |
 
@@ -450,6 +450,56 @@ Note that it is often more optimal to use a like filter 
instead of a regex for s
 { "type": "regex", "dimension": "someColumn", "pattern": ^50.* }
 ```
 
+## Array contains element filter
+
+The `arrayContainsElement` filter checks if an `ARRAY` contains a specific 
element but can also match against any type of column. When matching against 
scalar columns, scalar columns are treated as single-element arrays.
+
+| Property | Description | Required |
+| -------- | ----------- | -------- |
+| `type` | Must be "arrayContainsElement".| Yes |
+| `column` | Input column or virtual column name to filter on. | Yes |
+| `elementMatchValueType` | String specifying the type of element value to 
match. For example `STRING`, `LONG`, `DOUBLE`, `FLOAT`, `ARRAY<STRING>`, 
`ARRAY<LONG>`, or any other Druid type. The `elementMatchValueType` determines 
how Druid interprets the `elementMatchValue` to assist in converting to the 
type of elements contained in the matched `column`. | Yes |
+| `elementMatchValue` | Array element value to match. This value can be null. 
| Yes |
+
+### Example: equivalent of `WHERE ARRAY_CONTAINS(someArrayColumn, 'hello')`
+
+```json
+{ "type": "arrayContainsElement", "column": "someArrayColumn", 
"elementMatchValueType": "STRING", "elementMatchValue": "hello" }
+```
+
+### Example: equivalent of `WHERE ARRAY_CONTAINS(someNumericArrayColumn, 1.23)`
+
+```json
+{ "type": "arrayContainsElement", "column": "someNumericArrayColumn", 
"elementMatchValueType": "DOUBLE", "elementMatchValue": 1.23 }
+```
+
+### Example: equivalent of `WHERE ARRAY_CONTAINS(someNumericArrayColumn, 
ARRAY[1, 2, 3])`
+
+```json
+{
+  "type": "and",
+  "fields": [
+    { "type": "arrayContainsElement", "column": "someNumericArrayColumn", 
"elementMatchValueType": "LONG", "elementMatchValue": 1 },
+    { "type": "arrayContainsElement", "column": "someNumericArrayColumn", 
"elementMatchValueType": "LONG", "elementMatchValue": 2 },
+    { "type": "arrayContainsElement", "column": "someNumericArrayColumn", 
"elementMatchValueType": "LONG", "elementMatchValue": 3 }
+  ]
+}
+
+```
+
+### Example: equivalent of `WHERE ARRAY_OVERLAPS(someNumericArrayColumn, 
ARRAY[1, 2, 3])`
+
+```json
+{
+ "type": "or",
+ "fields": [
+  { "type": "arrayContainsElement", "column": "someNumericArrayColumn", 
"elementMatchValueType": "LONG", "elementMatchValue": 1 },
+  { "type": "arrayContainsElement", "column": "someNumericArrayColumn", 
"elementMatchValueType": "LONG", "elementMatchValue": 2 },
+  { "type": "arrayContainsElement", "column": "someNumericArrayColumn", 
"elementMatchValueType": "LONG", "elementMatchValue": 3 }
+ ]
+}
+```
+
 ## Interval filter
 
 The Interval filter enables range filtering on columns that contain long 
millisecond values, with the boundaries specified as ISO 8601 time intervals. 
It is suitable for the `__time` column, long metric columns, and dimensions 
with values that can be parsed as long milliseconds.
@@ -459,7 +509,7 @@ This filter converts the ISO 8601 intervals to long 
millisecond start/end ranges
 | Property | Description | Required |
 | -------- | ----------- | -------- |
 | `type` | Must be "interval". | Yes |
-| `dimension` | Input column or virtual column name to filter. | Yes |
+| `dimension` | Input column or virtual column name to filter on. | Yes |
 | `intervals` | A JSON array containing ISO-8601 interval strings that defines 
the time ranges to filter on. | Yes |
 | `extractionFn` | [Extraction 
function](./dimensionspecs.md#extraction-functions) to apply to `dimension` 
prior to value matching. See [filtering with extraction 
functions](#filtering-with-extraction-functions) for details. | No |
 
@@ -544,7 +594,7 @@ You can use search filters to filter on partial string 
matches.
 | Property | Description | Required |
 | -------- | ----------- | -------- |
 | `type` | Must be "search". | Yes |
-| `dimension` | Input column or virtual column name to filter. | Yes |
+| `dimension` | Input column or virtual column name to filter on. | Yes |
 | `query`| A JSON object for the type of search. See [search query 
spec](#search-query-spec) for more information. | Yes |
 | `extractionFn` | [Extraction 
function](./dimensionspecs.md#extraction-functions) to apply to `dimension` 
prior to value matching. See [filtering with extraction 
functions](#filtering-with-extraction-functions) for details. | No |
 
@@ -604,7 +654,7 @@ The JavaScript filter matches a dimension against the 
specified JavaScript funct
 | Property | Description | Required |
 | -------- | ----------- | -------- |
 | `type` | Must be "javascript" | Yes |
-| `dimension` | Input column or virtual column name to filter. | Yes |
+| `dimension` | Input column or virtual column name to filter on. | Yes |
 | `function` | JavaScript function which accepts the dimension value as a 
single argument, and returns either true or false. | Yes |
 | `extractionFn` | [Extraction 
function](./dimensionspecs.md#extraction-functions) to apply to `dimension` 
prior to value matching. See [filtering with extraction 
functions](#filtering-with-extraction-functions) for details. | No |
 
@@ -636,7 +686,7 @@ The following filter matches the values for which the 
extraction function has a
 | Property | Description | Required |
 | -------- | ----------- | -------- |
 | `type` | Must be "extraction" | Yes |
-| `dimension` | Input column or virtual column name to filter. | Yes |
+| `dimension` | Input column or virtual column name to filter on. | Yes |
 | `value` | String value to match. | No. If not specified the filter will 
match NULL values. |
 | `extractionFn` | [Extraction 
function](./dimensionspecs.md#extraction-functions) to apply to `dimension` 
prior to value matching. See [filtering with extraction 
functions](#filtering-with-extraction-functions) for details. | No |
 
diff --git a/website/.spelling b/website/.spelling
index 14233798fef..b7e7bc74e50 100644
--- a/website/.spelling
+++ b/website/.spelling
@@ -246,6 +246,7 @@ aggregators
 ambari
 analytics
 arrayElement
+arrayContainsElement
 assumeNewlineDelimited
 assumeRoleArn
 assumeRoleExternalId


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to