2016-04-17 12 views
2

イム使用BigQueryの例イムについては が持っているデータを作り直す表Iは、このテーブルを取得できますか? (コラムイベント{インデックス}カウント合計に)能力のみを使用してビッグクエリやSQLは、ストレージデータの

userId|event |count 
------------- | 
1  |event1 |1 
1  |event2 |2 
2  |event1 |2 
2  |event2 |1 
2  |event3 |4 
3  |event1 |3 
4  |event3 |5 
4  |event4 |5 

BigQueryの(またはSQL)

userId|event1 |event2|event3|event4 
---------------------------------- 
1  |1  |2  |0  |0 | 
2  |2  |1  |4  |0 | 
3  |0  |0  |0  |0 | 
4  |0  |0  |5  |5 | 
+1

可能な複製を使用することができます
に名前を付ける[旋回させる方法Big Queryのテーブル](http://stackoverflow.com/questions/26272514/how-to-pivot-table-in-big-query) – JRLambert

+0

たとえば、50のユニークなイベントがあります。どのようにクエリを検索することができますか? – ivan

答えて

1

イベントが少なければ、次のようなイベントがあります - 異なるイベントを持つ行をいくつでも作成する必要があります。予想されるイベントの数が一定であれば - あなたはいつも簡単に一度、このようなクエリを構築し、あなたがよりダイナミックな何かが必要な場合

SELECT 
    userID, 
    SUM(CASE WHEN event = 'event1' THEN [count] ELSE 0 END) AS event1, 
    SUM(CASE WHEN event = 'event2' THEN [count] ELSE 0 END) AS event2, 
    SUM(CASE WHEN event = 'event3' THEN [count] ELSE 0 END) AS event3, 
    SUM(CASE WHEN event = 'event4' THEN [count] ELSE 0 END) AS event4 
FROM YourTable 
GROUP BY userId 

それを使用することができます - 構築するために照会し、あなたの場合には非常によく似た例を見てhttps://stackoverflow.com/a/36623258/5221944

を動的SQLは

SELECT 'SELECT userId, ' + 
    GROUP_CONCAT_UNQUOTED(
     'SUM(IF(event="'+event+'",[count],0)) as [d_'+REPLACE(event,'/','_')+']' 
    ) 
    + ' FROM YourTable GROUP BY userId ORDER BY userId' 
FROM (
    SELECT event FROM YourTable GROUP BY event ORDER BY event 
) 

線の下の注

 'SUM(IF(event="'+event+'",[count],0)) as [d_'+REPLACE(event,'/','_')+']' 
以下のようになります。

それはあなたにも名前がフィールド/列の要件に準拠していますを確認しますが、あなた追いついたが、いつもなどイベント1、イベント2、のようになります場合は、この行を簡素化し、の

 'SUM(IF(event = "' + event + '", [count], 0)) as ' + event 
+0

私は読むが、その非常に異なる方法です。これを行うにはどのような簡単な方法ですか?たとえば、R言語では、関数cast()があります。しかし、Rやpythonのパンダなしでこれを行うにはどうすればいいですか?上記の – ivan

+0

は、スクリプトを使わずにWeb UIでこれをやりたい場合には最高です。任意のクライアントを使用する場合は、最初に動的クエリを作成してから実行するのと同じ方法を使用する必要があります。注:BigQueryの現在の実装 - これが唯一の方法です。これをサポートするPIVOT固有の機能はありません。 –

+0

今後のアップデート予定 - SQL Dialectの今後のアップデートには多くの改善がありますが、PIVOTとUNPIVOTはそれに含まれていないことを念頭に置いてください。 –

関連する問題