LoginSignup
11
4

More than 5 years have passed since last update.

【BigQuery】COUNT関数で出来る事をまとめてみた。

Last updated at Posted at 2019-03-29

概要

集計する際に使う、集約関数の一種であるCOUNT関数を、BigQueryで紹介します。

以下のことをまとめました。

  1. テーブルの全行数を出力する 
  2. 特定の列の行数を出力する
  3. 新しい列にテーブルの行数を表示させる(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

image.png

1:テーブルの全行数を出力する 

BigQueryで、COUNT(*)を実行してみます。 ※以降、標準SQLを使って実行しています。

BigQuery 1:テーブルの全行数を出力する 

SELECT
  COUNT(*) AS cnt
FROM
  test1.table1 ;

出力は以下です。
image.png

テーブルの全行数が表示されました。

2:特定の列の行数を出力する

COUNT関数でitem列を指定して、実行してみます。

BigQuery 2:特定の列の行数を出力する

SELECT
  COUNT(item) AS cnt
FROM
  test1.table1 ;

出力は以下になります。
該当件数は1件でした。

image.png

null(欠損した値)はカウントされません。

また、行のすべてがnullの列(null列)を指定した場合も実行してみます。

BigQuery 2:すべての行がnullの列を指定した場合

SELECT
  COUNT(null) AS cnt
FROM
  test1.table1 ;

実行結果は以下です。

image.png

すべての行がnullの場合、0を返します。

3:新しい列にテーブルの行数を表示させる(OVER句)

COUNT関数にOVER句を使うこともできます。OVER()を使うことで、新しい列にテーブルの行数を表示させることができます。

以下、ドキュメントより引用

OVER 句が空(OVER())の場合、すべての入力行を含む単一のパーティションに対して分析関数が計算されます。つまり、出力行ごとに同じ結果が生成されます。

BigQuery 3:新しい列にテーブルの行数を表示させる(OVER句)
SELECT
  *,
  COUNT(*) OVER() AS cnt
FROM
  test1.table1 ;

結果は以下になります。
赤枠部のカラムが追加されておりました。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3335323830312f35336464663234302d393262302d326430642d356434322d3239666632323239613739342e706e67.png

おまけ:無料でテーブルの全行数を確認する

BigQueryで、以下の様にCOUNT(*)の構文を書くと 0 B の処理と表示されます。
この実行は無料のようです。
参考記事:https://qiita.com/kamujun/items/ab3cd3e6f8934a01cbc8

image.png

まとめ

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

11
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
4