Я пытаюсь выполнить задачу в Google BigQuery, которая может потребовать логики. Я не уверен, что SQL может обрабатывать ее изначально.
У меня есть 2 таблицы:
- Первая таблица имеет один столбец, где каждая строка представляет собой одно слово в нижнем регистре.
- Вторая таблица представляет собой базу данных комментариев (с такими данными, как автор комментария, сам комментарий, отметка времени и т. д.).
Я хочу отсортировать комментарии во второй таблице по количеству вхождений слов в первой таблице.
Вот базовый пример того, что я хочу сделать, используя python, используя буквы вместо слов... но вы поняли идею:
words = ['a','b','c','d','e']
comments = ['this is the first sentence', 'this is another comment', 'look another sentence, which is also a comment', 'nope', 'no', 'run']
wordcount = {}
for comment in comments:
for word in words:
if word in comment:
if comment in wordcount:
wordcount[comment] += 1
else:
wordcount[comment] = 1
print(sorted(wordcount.items(), key = lambda k: k[1], reverse=True))
Выход:
[('look another sentence, which is also a comment', 3), ('this is another comment', 3), ('this is the first sentence', 2), ('nope', 1)]
Лучшее, что я видел до сих пор для создания SQL-запроса, это делать что-то вроде следующего:
SELECT
COUNT(*)
FROM
table
WHERE
comment_col like '%word1%'
OR comment_col like '%word2%'
OR ...
Но там более 2000 слов... как-то не по себе. Какие-нибудь советы?