#概要
集計する際に使う、集約関数の一種であるCOUNT関数を、BigQueryで紹介します。
以下のことをまとめました。
- テーブルの全行数を出力する
- 特定の列の行数を出力する
- 新しい列にテーブルの行数を表示させる(OVER句)
以下、ドキュメントのCOUNT関数より引用
count(*)
入力行の数
count( expression )
expressionが非NULL値を持つ入力行の個数
※expressionとは列名を指します。
#データ紹介
テーブル:table1
user_id | item | price | null |
---|---|---|---|
A | apple | 50 | null |
null | null | null | null |
null | null | 0 | null |
null | null | 100 | null |
1:テーブルの全行数を出力する
BigQueryで、COUNT(*)
を実行してみます。 ※以降、標準SQLを使って実行しています。
SELECT
COUNT(*) AS cnt
FROM
test1.table1 ;
テーブルの全行数が表示されました。
2:特定の列の行数を出力する
COUNT関数でitem列を指定して、実行してみます。
SELECT
COUNT(item) AS cnt
FROM
test1.table1 ;
出力は以下になります。
該当件数は1件でした。
null(欠損した値)はカウントされません。
また、行のすべてがnullの列(null列)を指定した場合も実行してみます。
SELECT
COUNT(null) AS cnt
FROM
test1.table1 ;
実行結果は以下です。
すべての行がnullの場合、0を返します。
##3:新しい列にテーブルの行数を表示させる(OVER句)
COUNT関数にOVER句を使うこともできます。OVER()を使うことで、新しい列にテーブルの行数を表示させることができます。
以下、ドキュメントより引用
OVER 句が空(OVER())の場合、すべての入力行を含む単一のパーティションに対して分析関数が計算されます。つまり、出力行ごとに同じ結果が生成されます。
SELECT
*,
COUNT(*) OVER() AS cnt
FROM
test1.table1 ;
結果は以下になります。
赤枠部のカラムが追加されておりました。
##おまけ:無料でテーブルの全行数を確認する
BigQueryで、以下の様にCOUNT(*)
の構文を書くと 0 B の処理と表示されます。
この実行は無料のようです。
参考記事:https://qiita.com/kamujun/items/ab3cd3e6f8934a01cbc8
#まとめ
COUNT関数を使うと、テーブルの行数または、カラム内の非NULL値を持つ入力行の個数を出力します。
欠損値がないか確認するために、非常に大事な関数の為、しっかり覚えておきます。
#参考サイト
https://cloud.google.com/bigquery/docs/reference/standard-sql/aggregate_functions?hl=ja#count
https://www.postgresql.jp/document/10/html/functions-aggregate.html
https://cloud.google.com/bigquery/pricing?hl=ja
https://qiita.com/kamujun/items/ab3cd3e6f8934a01cbc8