如何从表列计算词频 GoogleSQL Bigquery

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从表列计算词频 GoogleSQL Bigquery相关的知识,希望对你有一定的参考价值。

例如,我有一个Table中的一列,其中有某些单词。

MyTable

 Name    device_Used
-----  ----------------  
 a       iphone, Ipad, laptop
 b       mobile, laptop, android, desktop
 c       android, desktop, washing machine

现在我想从该表中搜索一组单词,例如[Ipad,android,laptop],并计算其频率。

我试着通过阅读一些网上的解决方案,并为自己创建一个解决方案,但得到了错误。这是我试过的方法。

WITH words AS (
  SELECT word
  FROM UNNEST([Ipad,android,laptop,desktop]) word
),
listcolumn AS (
  SELECT device
  FROM UNNEST(MyTable.device_Used) device
)
SELECT device, COUNT(word) AS cnt
FROM listcolumn
JOIN words
ON (device <> "")
GROUP BY device
ORDER BY cnt DESC;

我想创建一个新的表,结果是这样的:-。

   device_Used      count
---------------   -----------
Ipad                1            
android             2
laptop              2
desktop             2

由于我是新来的,你可以建议一个新的代码,因为我使用的是通过阅读网上的建议来操作的。

答案

下面是BigQuery标准SQL

#standardSQL
SELECT TRIM(LOWER(device_Used)) AS device_Used, COUNT(1) `count`
FROM `project.dataset.table`,
UNNEST(SPLIT(device_Used)) device_Used
GROUP BY device_Used
HAVING LOWER(device_Used) IN ('ipad','android','laptop')

如果在你的问题中应用样本数据,如下面的例子。

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'a' Name, 'iphone, Ipad, laptop' device_Used UNION ALL
  SELECT 'b', 'mobile, laptop, android, desktop' UNION ALL
  SELECT 'c', 'android, desktop, washing machine' 
)
SELECT TRIM(LOWER(device_Used)) AS device_Used, COUNT(1) `count`
FROM `project.dataset.table`,
UNNEST(SPLIT(device_Used)) device_Used
GROUP BY device_Used
HAVING LOWER(device_Used) IN ('ipad','android','laptop')

结果是

Row device_Used count    
1   ipad        1    
2   laptop      2    
3   android     2     

如果你能提供评论什么行做什么,这将是很大的帮助。

SELECT TRIM(LOWER(device_Used)) AS device_Used, COUNT(1) `count` -- (4) 
FROM `project.dataset.table`, -- (1)
UNNEST(SPLIT(device_Used)) device_Used -- (2)  
GROUP BY device_Used -- (3) 
HAVING LOWER(device_Used) IN ('ipad','android','laptop') -- (5)    
  1. 择表
  2. 将逗号分隔的列表转换为数组并嵌套。
  3. 编组
  4. 去掉尾部的空格和小写,以解决大小写敏感问题。
  5. 只是将预定义列表中的设备留在输出中。

以上是关于如何从表列计算词频 GoogleSQL Bigquery的主要内容,如果未能解决你的问题,请参考以下文章

如何从表列中获取xml值

如何从表列中删除唯一约束?

如何使用来自另一个表列的值优化列的更新?

如何在表格上选择并计算出现的一些值

如何计算数据库表列中的值?

在 TfidfVectorizer 中如何计算词频?