如何计算 Teradata 中的词频
How to count words frequency in Teradata
例如,如果我有 1000 行数据,其中包含客户 ID(例如 123)和他们对我们产品的评论(例如,很棒的产品易于使用)
我如何使用 Teradata(版本 15)进行词频计数,以便输出有两列,一列是词,另一列是词频,例如(大:20,产品:10)?
谢谢
您可以使用 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
例如,如果我有 1000 行数据,其中包含客户 ID(例如 123)和他们对我们产品的评论(例如,很棒的产品易于使用)
我如何使用 Teradata(版本 15)进行词频计数,以便输出有两列,一列是词,另一列是词频,例如(大:20,产品:10)?
谢谢
您可以使用 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