[英]Google bigQuery split column
我正在使用 google bigQuery 来分析亚马逊书评数据集。 数据集有一个 'helpful' 列,如下所示: 'helpful' :[0, 0] 其中第一个元素是“yes”投票,第二个元素是“total”投票。
当我上传数据 inn bigQuery 时,它将列拆分为两行,因为它不支持数组格式。 bigQuery 屏幕截图。 使用 python pandas 中的“应用系列”方法,我可以将有用的列分成两列-“有用的投票”和“总投票”: jupyter notebook screenshot
如果我写这个查询在 BQ 中做同样的事情:
SELECT TA1.reviewerID, TA1.helpful AS yes, TA2.helpful AS total
FROM table_name as TA1
LEFT JOIN table_name as TA2
ON TA1.reviewerID = TA2.reviewerID and TA2.helpful != TA1.helpful
GROUP BY TA1.reviewerID
我收到以下错误:错误:(L1:27):GROUP BY 列表中不存在表达式“TA1.helpful”。
同样的查询适用于我的 sqlite3。 我在 BQ 中做错了什么?
谢谢,
下面是 BigQuery 标准 SQL
#standardSQL
SELECT
reviewerID,
helpful[OFFSET(0)] AS helpfulVote,
helpful[OFFSET(1)] AS totalVote
FROM table_name
您可以使用虚拟数据进行测试,如下所示
#standardSQL
WITH table_name AS (
SELECT 'A' AS reviewerID, [0,0] AS helpful UNION ALL
SELECT 'B' AS reviewerID, [0,2] AS helpful
)
SELECT
reviewerID,
helpful[OFFSET(0)] AS helpfulVote,
helpful[OFFSET(1)] AS totalVote
FROM table_name
查看更多关于访问数组元素
如果出于某种原因您仍在使用 BigQuery Legacy SQL,您可以使用以下版本(同时请参阅从旧版 SQL 迁移到标准 SQL,因为这是首选版本)
#legacydSQL
SELECT
reviewerID,
MIN(helpful) WITHIN RECORD AS helpfulVote,
MAX(helpful) WITHIN RECORD AS totalVote
FROM table_name
同样的查询适用于我的 sqlite3。 我在 BQ 中做错了什么?
最后,如果您希望您的原始查询工作/修复 - 请参阅下文并阅读有关GROUP BY工作原理的更多信息
#legacydSQL
SELECT
TA1.reviewerID as reviewerID,
MIN(TA1.helpful) AS yes,
MAX(TA2.helpful) AS total
FROM table_name as TA1
LEFT JOIN table_name as TA2
ON TA1.reviewerID = TA2.reviewerID -- and TA2.helpful != TA1.helpful
GROUP BY TA1.reviewerID
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.