REPEATED_CONTAINS

REPEATED CONTAINS searches for a keyword in an array.

Syntax

REPEATED_CONTAINS(array_name, keyword)
  • array_name is a simple array, such as topping:

    {
    . . .
        "topping":
            [
                "None",
                "Glazed",
                "Sugar",
                "Powdered Sugar",
                "Chocolate with Sprinkles",
                "Chocolate",
                "Maple"
            ]
    }
    
  • keyword is a value in the array, such as 'Glazed'.

Usage Notes

REPEATED_CONTAINS returns true if Drill finds a match; otherwise, the function returns false. The function supports regular expression wildcards, but not at the beginning of the keyword:

  • Asterisk (*)
  • Period (.)
  • Question mark (?)
  • Square bracketed ranges [a-z]
  • Square bracketed characters [ch]
  • Negated square bracketed ranges or characters [!ch].

Enclose keyword string values in single quotation marks. Do not enclose numerical keyword values in single quotation marks.

Examples

The examples in this section use testRepeatedWrite.json. To download this file, go to Drill test resources page, locate testRepeatedWrite.json in the list of files, and download it.

Which donuts have glazed or glaze toppings?

    SELECT name, REPEATED_CONTAINS(topping, 'Glaze?') AS `Glazed?` FROM  dfs.`/Users/drilluser/testRepeatedWrite.json` WHERE type='donut';

    +------------+------------+
    |    name    |  Glazed?   |
    +------------+------------+
    | Cake       | true       |
    | Raised     | true       |
    | Old Fashioned | true       |
    | Filled     | true       |
    | Apple Fritter | true       |
    +------------+------------+
    5 rows selected (0.072 seconds)

Which objects have powdered sugar toppings? Use the asterisk wildcard instead of typing the entire keyword pair.

SELECT name, REPEATED_CONTAINS(topping, 'P*r') AS `Powdered Sugar?` FROM  dfs.`/Users/drilluser/testRepeatedWrite.json` WHERE type='donut';

+------------+-----------------+
|    name    | Powdered Sugar? |
+------------+-----------------+
| Cake       | true            |
| Raised     | true            |
| Old Fashioned | false           |
| Filled     | true            |
| Apple Fritter | false           |
+------------+-----------------+
5 rows selected (0.089 seconds)

Which donuts have toppings beginning with the letters "Map" and ending in any two letters?

SELECT name, REPEATED_CONTAINS(topping, 'Map..') AS `Maple?` FROM  dfs.`/Users/drilluser/testRepeatedWrite.json` WHERE type='donut';

+------------+------------+
|    name    |   Maple?   |
+------------+------------+
| Cake       | true       |
| Raised     | true       |
| Old Fashioned | true       |
| Filled     | true       |
| Apple Fritter | false      |
+------------+------------+
5 rows selected (0.085 seconds)