Как посчитать частоту появления некоторых конкретных слов из моих данных в улье? - PullRequest
1 голос
/ 06 апреля 2019

У меня есть таблица объектов Twitter (в формате json), n строк и 1 столбец в моем улье.Задача состоит в том, чтобы посчитать частоту встречаемости некоторых слов, таких как «hon», «han», в разных объектах (каждый объект имеет атрибут «text», который включает в себя несколько текстов (строковый тип)), что означает, что даже если словопроисходит в объекте более одного раза, но считается только один.Я пишу запрос, как показано ниже.

select count(*) from table_name
where regexp(get_json_object(col_name, '$.text'), 'han')
limit 10

и получить сообщение об ошибке типа

FAILED: строка ParseException 2: 6 не может распознать ввод рядом с 'regexp' '(' 'get_json_object' в спецификации выражения`

Как я могу выполнить эту задачу запроса? И я не знаю, как игнорировать регистр в регулярном выражении.

1 Ответ

0 голосов
/ 06 апреля 2019

Используйте (?i) модификатор для сравнения без учета регистра:

select 
      sum(case when text rlike '(?i)han' then 1 else 0 end) cnt_han,
      sum(case when text rlike '(?i)hon' then 1 else 0 end) cnt_hon
  from
(
select get_json_object(col_name, '$.text') as text 
  from table_name
)s;
...