2017-01-22 11 views
2

私はamazonブックレビューデータセットを分析するためにgoogle bigQueryを使用しています。データセットには「有用な」列があります。「参考」:[0、0]最初の要素は「はい」、2番目は「合計」です。Google bigQuery分割カラム

データinn bigQueryをアップロードすると、配列形式をサポートしていないため、列は2つの行に分割されます。 bigQuery screenshot。 私は2つのcolumns-「人が役に立ったと言って」と「総投票」に有用列を分割することができますPythonのパンダに「適用シリーズ」メソッドを使用して:私はBQで同じことを行うには、このクエリを記述する場合 jupyter notebook screenshot

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):式 'TA1.helpfulは、' GROUP BYリストに存在しません。

同じクエリが自分のsqlite3で機能します。私はBQで何が間違っていますか?

おかげで、以下

+0

、あなたがそれを共有することができるだろうがどのように機能するかについての詳細を読みますか? –

+0

@Felipe [link](http://jmcauley.ucsd.edu/data/amazon/) – biswajit

+0

ありがとう! BigQueryで読み込んだデータが公開されている場合は、そのデータセットを公開することができます。このような質問にもっと簡単に答えることもできます:)。 https://twitter.com/felipehoffa/status/761635507080081408 –

答えて

2

#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 

がでAccessing Array Elements

のためのより多くを参照してください以下のようBigQueryの標準SQL

#standardSQL 
SELECT 
    reviewerID, 
    helpful[OFFSET(0)] AS helpfulVote, 
    helpful[OFFSET(1)] AS totalVote 
FROM table_name 

のためにあなたがダミーデータでそれをテストすることができていますいくつかのrの場合イーソンあなたはまだあなたがあなたの元のクエリをしたい場合は、(これは使用する優先バージョンであるとして、それまでの間、標準SQLにMigrating from legacy SQLを参照)バージョンの下

#legacydSQL 
SELECT 
    reviewerID, 
    MIN(helpful) WITHIN RECORD AS helpfulVote, 
    MAX(helpful) WITHIN RECORD AS totalVote 
FROM table_name 

The same query works in my sqlite3. What am I doing wrong in BQ?

そして最後を使用することができ、BigQueryのレガシーSQLを使用しています仕事/固定 - 以下を参照して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 
関連する問題