Вы можете использовать strtok_split_to_table
, чтобы это осуществить.
Что-то вроде следующего:
SELECT d.token, SUM(d.outkey)
FROM TABLE (strtok_split_to_table(1, <yourtable>.<yourcommentsfield>, ' ')
RETURNS (outkey integer, tokennum integer, token varchar(20)character set unicode)) as d
GROUP BY 1
Это разделит каждое слово в поле для комментариев в отдельные записи, то он считает возникновение каждого слова. Просто прикрепите свой собственный <yourtable>.<yourcommentsfield>
, и вам должно быть хорошо идти.
Более подробная информация о strtok_split_to_table: http://www.info.teradata.com/HTMLPubs/DB_TTU_14_00/index.html#page/SQL_Reference/B035_1145_111A/String_Ops_Funcs.084.242.html
Вот в SQL и результаты для теста на моей системе:
CREATE SET TABLE db.testcloud ,NO FALLBACK ,
NO BEFORE JOURNAL,
NO AFTER JOURNAL,
CHECKSUM = DEFAULT,
DEFAULT MERGEBLOCKRATIO
(
customer VARCHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC,
comments VARCHAR(1000) CHARACTER SET LATIN NOT CASESPECIFIC)
PRIMARY INDEX (customer);
INSERT INTO testcloud (1, 'This is a test comment');
INSERT INTO testcloud (2, 'This is also comment of something');
SELECT d.token, SUM(d.outkey)
FROM TABLE (TD_SYSFNLIB.strtok_split_to_table(1, testcloud.comments, ' -/')
RETURNS (outkey integer, tokennum integer, token varchar(20)character set unicode)) as d
GROUP BY 1
--token Sum(outkey)
--is 2
--also 1
--This 2
--of 1
--test 1
--a 1
--comment 2
--something 1
Конечный результат представляет собой слово облако, которое имеет размер слова на основе частоты , – user2525645