2015-04-01 3 views
0

Например, если у меня есть 1000 строк данных, которые имеют идентификатор клиента (например, 123) и их комментарии на нашем продукте (например, большой продукт легко использовать)Как считать слова частоты в Teradata

Как использовать Teradata (версия 15), чтобы выполнить подсчет частоты слов, чтобы выход имел два столбца один со словом, а другой с частотой, например (Отлично: 20, продукт: 10)?

Спасибо

+0

Конечный результат представляет собой слово облако, которое имеет размер слова на основе частоты , – user2525645

ответ

2

Вы можете использовать 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 
+0

SELECT d.token, SUM (d.outkey) FROM TABLE (strtok_split_to_table (1, . , '') RETURNS (целое целое, целочисленное число tokennum, маркер символов varchar (20) unicode)) как d GROUP BY 1 Большое спасибо, но я получил ошибку 3707, ожидая чего-то вроде «.». между словом strtok_split .. .and ( – user2525645

+0

На самом деле не помещайте свое имя таблицы и поля в эти символы '<' and '>'. Я просто их маркировал. Кроме того, если вы столкнулись с большим количеством проблем, используйте 'TD_SYSFNLIB.strtok_split_to_table' как имя функции, если она по-прежнему не работает. Наконец, я добавил бит из своей собственной системы, которую я использовал для быстрого тестирования. – JNevill

+0

Спасибо, человек, спасибо за вашу помощь – user2525645

Смежные вопросы