google-bigquery - 总结时间范围内的字数
问题描述
我有下表,它存储了响应文本和与之关联的关键字搜索。
创建表 nlp.search(response string, words string,inquiry_time timestamp);
insert into nlp.search values('如何重置密码','重置word密码',TIMESTAMP("2021-09-19 05:30:00+00")); 插入 nlp.search values('如何重置密码','重置密码',TIMESTAMP ("2021-09-20 07:30:00+00")); 插入 nlp.search values('如何重置密码','密码',TIMESTAMP ("2021-09-16 08:30:00+00")); 插入 nlp.search values('如何重置密码','reset',TIMESTAMP ("2021-09-14 08:30:00+00"));
我想以这种格式的响应提供一个摘要报告以及与之关联的每个单词的计数。
response individual_word_count
如何重设密码 reset(3) word(1) password(2) passphrase(1)
还可以传递时间戳列inquiry_time 以缩小日期范围,并且必须相应地计算汇总值
例如,时间范围过滤器 2021-09-19 到 2021-09-20
response individual_word_count
如何重设密码 reset(2) word(1) password(1) passphrase(1)
这可以使用视图来完成吗?
解决方案
下面使用
select response, word, count(1) ndividual_word_count
from `nlp.search`,
unnest(split(words, ' ')) word
where date(inquiry_time) between '2021-09-19' and '2021-09-20'
group by response, word
如果应用于您问题中的样本数据 - 输出是
我需要在 1 个单列中显示单词和计数
然后在下面使用
select response,
string_agg(format('%s (%i)', word, individual_word_count)) counts
from (
select response, word, count(1) individual_word_count
from `nlp.search`,
unnest(split(words, ' ')) word
where date(inquiry_time) between '2021-09-19' and '2021-09-20'
group by response, word
)
group by response
带输出
推荐阅读
- java - 变量在 post 函数之外不存在
- java - 在@Service注释的类中使用@Value注入时获取空值,但能够在@Controller注释的类中获取值
- java - leetcode 108 将排序数组转换为二叉搜索树
- php - 为什么字符串插值会抛出未定义的属性
- java - 我的 Android 应用程序中出现异常 Intent 或 Firebase 错误
- rabbitmq - Camel-rabbitmq 组件无法通过 SSL 进行通信
- python-3.x - 带有 Selenium Assertion Raises 或 Exception 的 Python 从未工作过
- tensorflow - Tensorflow:模型未加载
- marklogic - 在 Task Server 中执行期间中断的查询
- uiviewcontroller - 除导航栏 SWIFT 外出现黑屏