2016-08-01 3 views
0

bigquery UDFで文字列のリストと他の文字列のリストを比較する関数を記述しようとしています。 基本的に私は週に何人の新しいユーザーがいるのか、これらの新しいユーザーから、今後数週間にどれくらい多くのユーザーが当社のWebサイトを訪問し続けているのかを知りたいと思います。そのために私は週ごとに(group_concatで)すべての電子メールの文字列を与え、テーブルとして保存したクエリを作成しました。週ごとの電子メールの他のコレクションとそれぞれをどのように比較できるのかを知る必要があります。終わりに 、私はこのようなテーブルを持っているしたいと思います:bigqueryで文字列比較関数を書く

+----------------+-------+-------+--------+------+ 
|  | week 1 | week 2 | week 3| week 4 | ... | 
+----------------+-------+-------+--------+------+ 
| week1 | 17 | 7 | 5 | 9 | ... | 
+----------------+-------+-------+--------+------+ 
| week2 |  | 19 | 13 | 8 | ... | 
+-----------------+-------+-------+--------+-----+ 
| week3 |  |  | 24 | 15 | ... | 
+-----------------+-------+-------+--------+-----+ 

答えて

2

ただ、あなたに結果が
enter image description here

これ以下の通りである

SELECT 
    CONCAT('week', STRING(prev)) AS WEEK, 
    SUM(IF(next=19, authors, 0)) AS week19, 
    SUM(IF(next=20, authors, 0)) AS week20, 
    SUM(IF(next=21, authors, 0)) AS week21, 
    SUM(IF(next=22, authors, 0)) AS week22, 
    SUM(IF(next=23, authors, 0)) AS week23 
FROM (
    SELECT prev, next, COUNT(author) AS authors 
    FROM (
    SELECT 
     prev_week.week_created AS prev, 
     next_week.week_created AS next, 
     prev_week.author AS author 
    FROM (
     SELECT 
     WEEK(SEC_TO_TIMESTAMP(created_utc)) AS week_created, 
     author 
     FROM [fh-bigquery:reddit_posts.2016_05] 
     GROUP BY 1,2 
    ) next_week 
    LEFT JOIN (
     SELECT 
     WEEK(SEC_TO_TIMESTAMP(created_utc)) AS week_created, 
     author 
     FROM [fh-bigquery:reddit_posts.2016_05] 
     GROUP BY 1,2 
    ) AS prev_week 
    ON prev_week.author = next_week.author 
    HAVING prev <= next 
) 
    GROUP BY 1,2 
) 
GROUP BY 1 
ORDER BY 1 

と遊ぶアイデアを与えるためにあなたが私に考えていることに最も近いです。

重要なこと - BigQueryは少ないですむしろデータ処理のためのレポート設計のために使用されます。だから私は、BigQuery(外側の選択)内のマトリックス/ピボットを作成するのが最善の方法ではないと考えています。これはレポートツールで行うことができます。しかし、すべてのペアを計算すると、prev|next|count(内部選択)はBigQueryで間違いなく適しています

+0

これは本当に素晴らしい答えです!私は全く違った考えをしていた。私はすでにJavaでコードを書いています。私は週ごとにすべての電子メールを保存し、他の週と比較するためのユニークなコレクションを作成することを考えていたのです。UDFで読むことはできません。 – AnaHid