7

これが私のBigQueryです

SELECT word,word_count,corpus_date FROM 
[publicdata:samples.shakespeare] 
WHERE word="the" ORDER BY word_count asc

これは次のように出力します

    Row word    word_count corpus_date   
    1   the       57       1609  
    2   the       106      0     
    3   the       287      1609  
    4   the       353      1594  
    5   the       363      0     
    6   the       399      1592  
    7   the       421      1611  

データをcorpus_dateでグループ化したい。corpus_dateでグループ化してみた

    SELECT word,word_count,corpus_date FROM 
   [publicdata:samples.shakespeare] 
    WHERE word="the" group by corpus_date 
    ORDER BY word_count asc

しかし、corpus_dateでグループ化することはできませんでした。corpus_dateでグループ化されたデータを取得する方法

4

1 に答える 1

7

クエリ内の集計されていないすべての値をGROUPBYする必要があります。ただし、単に1つの単語を探しているだけなので、結果セットにその単語を表示したり、GROUP BYしたりする必要はありません(word = "the"句を使用して暗黙的に選択されます)。

したがって、日付でグループ化された単語「the」の単語数の合計が必要な場合は、次のように実行できます。

SELECT
  SUM(word_count) as sum_for_the,
  corpus_date
FROM
  [publicdata:samples.shakespeare]
WHERE
  word="the"
GROUP BY
  corpus_date
ORDER BY
  sum_for_the ASC;

それだけではあまり役に立ちません...したがって、日付ごとのカウントがどのコーパスから来ているかを知るなど、より複雑なことをしたい場合は、単語のカウントを合計し、次のようなクエリを使用してコーパスをリストします。

SELECT
  SUM(word_count) AS sum_for_the, corpus, corpus_date
FROM
  [publicdata:samples.shakespeare]
WHERE
  word="the"
GROUP BY
  corpus_date, corpus
ORDER BY
  sum_for_the ASC;

単語が1年に出現するすべてのボリュームを一覧表示するには、GROUP_CONCAT関数を使用するのが好きです。「the」という単語はすべてに表示されるため、「swagger」のようなあまり一般的ではない単語ほど面白くないでしょう。(これはシェイクスピアによって発明された多くの単語の1つです)。

SELECT
  SUM(word_count) AS word_sum, GROUP_CONCAT(corpus) as corpora, corpus_date
FROM
  [publicdata:samples.shakespeare]
WHERE
  word="swagger"
GROUP BY
  corpus_date ORDER BY corpus_date ASC;

さらに楽しいのは、単語の接頭辞と、ボリュームおよび日付ごとの単語のGROUPBYバリエーションを確認することです。

SELECT
  word, SUM(word_count) AS word_sum, GROUP_CONCAT(corpus) as corpora, corpus_date
FROM
  [publicdata:samples.shakespeare]
WHERE
  word CONTAINS "swagger"
GROUP BY
  word, corpus_date
ORDER BY
  corpus_date ASC
IGNORE CASE;

その他の例については、BigQueryクエリ言語リファレンスとBigQueryクックブックをご覧ください。

于 2012-11-25T20:57:44.413 に答える