MENU
  • HOME
  • 取引実績
  • 会社概要
  • 資料DL
  • お問い合わせ
  • FAQ
  • BigQuery記事
  • Struccle記事
データ流通、検索エンジン開発のプロフェッショナル
DataStructor
  • HOME
  • 取引実績
  • 会社概要
  • 資料DL
  • お問い合わせ
  • FAQ
  • BigQuery記事
  • Struccle記事
DataStructor
  • HOME
  • 取引実績
  • 会社概要
  • 資料DL
  • お問い合わせ
  • FAQ
  • BigQuery記事
  • Struccle記事
  1. ホーム
  2. BigQuery
  3. BigQuery学習教材
  4. BigQuery入門!無料データでSQLの基本数学関数をマスター

BigQuery入門!無料データでSQLの基本数学関数をマスター

2024 11/28
BigQuery BigQuery学習教材
2024年9月14日2024年11月28日
目次

記事の対象者と解消できるお悩み

【対象者】

プログラミング未経験のビジネス職

【興味関心】

  1. 数値データの分析
  2. SQLスキルアップ
  3. BigQueryの関数活用
  4. 売上分析
  5. 顧客分析
  6. KPI設定と分析

【解消できるお悩み】

  1. 売上データや顧客データを分析したいけど、計算式をSQLで書く方法がわからない…
  2. 平均値や合計値を簡単に計算したい
  3. BigQueryで数値データを効率的に扱う方法を知りたい
  4. データ分析で、もっと業務を効率化したい
  5. 売上や顧客に関するKPIを設定し、分析したい

記事作成者

【人物】株式会社志庵 代表取締役 佐藤 光 起業6年目

【経歴】株式会社光通信➜光通信同期と起業➜データアナリスト転職➜SaaSで2度目起業

【会社実績】

SaaS 資金調達無しARR2億円

SaaS GMV200億円

【内容】自社AaaSであるStruccle、webスクレイピング、BigQueryに関する記事を作成

各種用語

  • ARR(Annual Recurring Revenue)
    • サブスクリプションサービスの年間売上※当社はSaaS売上
  • Struccle(ストラクル)
    • 株式会社志庵が独自開発しているAaaS
  • AaaS(アース)
    • Data Analytics as a Serviceの意
  • SaaS(サース)
    • Software as a Serviceの意
  • GoogleCloudPlatform
    • Googleが提供するクラウドプラットフォーム。この中に様々なサービスが存在する。
  • GCP(ジーシーピー)
    • GoogleCloudPlatformの略
  • BigQuery(ビッグクエリ)
    • 上記GCPの中に含まれるデータ分析基盤サービス
  • SQL(エスキューエル)
    • データベースを操作するプログラミング言語
  • クエリ
    • SQLで記述した命令文
    • クエリ例)
      • SQL構文のクエリ⬇
        • SELECT item_name, price FROM sales_table where price >= 1000;
        • 上記クエリ(命令文)の意味としては「売上テーブル(sales_table)から価格(price)が1000円以上の商品名(item_name)と価格(price)を抽出する」
  • ペタバイト
    • データの単位 ペタバイト=1000テラバイト=約100兆行のデータ

概要

データ分析では、数値データを扱うことは非常に一般的です。売上データ、顧客の年齢、商品の価格など、多くのデータが数値で表されます。Google CloudのBigQueryは、数値データを操作するための豊富な数学関数を備えています。これらの関数を使いこなすことで、数値データの計算、変換、分析を効率的に行うことができます。

この記事では、BigQueryで利用できる基本的な数学関数を、分かりやすい例とともに紹介します。BigQueryの無料公開データセットを使って、実際に手を動かしながら数学関数をマスターしましょう!

目次

  1. BigQueryの数学関数とは?
  2. BigQueryの基本数学関数一覧
    1. ABS
    2. SIGN
    3. IS_INF
    4. IS_NAN
    5. IEEE_DIVIDE
    6. RAND
    7. SQRT
    8. POW
    9. EXP
    10. LN
    11. LOG
    12. LOG10
    13. GREATEST
    14. LEAST
    15. DIV
    16. SAFE_DIVIDE
    17. MOD
    18. ROUND
    19. TRUNC
    20. CEIL
    21. FLOOR
    22. COS
    23. COSH
    24. ACOS
    25. ACOSH
    26. SIN
    27. SINH
    28. ASIN
    29. ASINH
    30. TAN
    31. TANH
    32. ATAN
    33. ATANH
    34. ATAN2
  3. BigQuery公開データで実践!数学関数を使った分析例
  4. FAQ:BigQueryに関するよくある質問
  5. まとめ:BigQueryの数学関数をマスターして、データ分析スキルを向上させよう!

1. BigQueryの数学関数とは?

BigQueryの数学関数は、数値データに対して様々な数学的操作を行うための関数です。これらの関数を活用することで、数値データの計算、変換、分析を効率的に行うことができます。BigQueryは、標準SQLで定義されている多くの数学関数をサポートしており、加算、減算、乗算、除算などの基本的な演算から、三角関数、指数関数、対数関数などの高度な関数まで、幅広い計算に対応できます。

2. BigQueryの基本数学関数一覧

BigQueryで利用できる基本的な数学関数を、例とともに紹介します。

2.1 ABS

数値の絶対値を返します。

構文:

ABS(numeric_expression)

例: -10 の絶対値を取得する

SELECT ABS(-10) AS absolute_value;

2.2 SIGN

数値の符号を返します。正の数値の場合は 1、負の数値の場合は -1、0 の場合は 0 を返します。

構文:

SIGN(numeric_expression)

例: 10 の符号を取得する

SELECT SIGN(10) AS sign_int

2.3 IS_INF

数値が正または負の無限大かどうかを判定します。無限大の場合は TRUE、そうでない場合は FALSE を返します。

構文:

IS_INF(numeric_expression)

例: 数値が無限大かどうかを判定する

SELECT num, IS_INF(num) AS is_infinity
from (
  select 1 num union all
  select cast('inf' as float64) num
)

2.4 IS_NAN

数値が NaN(非数)かどうかを判定します。NaN の場合は TRUE、そうでない場合は FALSE を返します。

構文:

IS_NAN(numeric_expression)

例: valが NaN かどうかを判定する

SELECT val, IS_NAN(val) AS is_nan_
from (
  select 1 val union all select cast("NaN" as float64) val
)

2.5 IEEE_DIVIDE

2 つの数値の除算を行い、IEEE 754 標準に従って結果を返します。0 で除算した場合は、無限大または NaN を返します。

構文:

IEEE_DIVIDE(dividend, divisor)

例: val で除算する

SELECT val, IEEE_DIVIDE(val, 2) AS result, IEEE_DIVIDE(val, 0) zero_div
from (
  select 10 val union all select 0 val
)

2.6 RAND

0 以上 1 未満の乱数を返します。オプションでシード値を指定できます。

構文:

RAND()

RAND(int64_expression)

例: 乱数を生成する

SELECT RAND() AS random_number;

2.7 SQRT

数値の平方根を返します。

構文:

SQRT(numeric_expression)

例: 16 の平方根を計算する

SELECT SQRT(16) AS square_root;

2.8 POW

数値のべき乗を返します。

構文:

POW(base, exponent)

例: 2 の 3 乗を計算する

SELECT POW(2, 3) AS power;

2.9 EXP

数値の指数関数を返します。

構文:

EXP(numeric_expression)

例: 2 の指数関数を計算する

SELECT EXP(2) AS exponential;

2.10 LN

数値の自然対数を返します。

構文:

LN(numeric_expression)

例: 10 の自然対数を計算する

SELECT LN(10) AS natural_logarithm;

2.11 LOG

指定された底に対する数値の対数を返します。底を省略した場合は、底は 10 となります。

構文:

LOG(base, numeric_expression)

LOG(numeric_expression)

例: 100 の 10 を底とする対数を計算する

SELECT LOG(100, 10) AS logarithm;

2.12 LOG10

数値の 10 を底とする対数を返します。

構文:

LOG10(numeric_expression)

例: 100 の 10 を底とする対数を計算する

SELECT LOG10(100) AS logarithm;

2.13 GREATEST

引数の中で最大の値を返します。

構文:

GREATEST(expression[, ...])

例: 10, 20, 30 の中で最大の値を取得する

SELECT GREATEST(num_1, num_2, num_3) AS greatest_value
from (
  select 10 num_1, 20 num_2, 30 num_3
)

2.14 LEAST

引数の中で最小の値を返します。

構文:

LEAST(expression[, ...])

例: 10, 20, 30 の中で最小の値を取得する

SELECT LEAST(num_1, num_2, num_3) AS least_value
from (
  select 10 num_1, 20 num_2, 30 num_3
)

2.15 DIV

被除数を除数で割った商の整数部分を返します。

構文:

DIV(dividend, divisor)

例: 10 を 3 で割った商の整数部分を取得する

SELECT DIV(10, 3) AS quotient;

2.16 SAFE_DIVIDE

被除数を除数で割った商を返します。除数が 0 の場合は、NULL を返します。

構文:

SAFE_DIVIDE(dividend, divisor)

例: 10 を 0 で割った商を取得する(NULLが返る)

SELECT SAFE_DIVIDE(10, 0) AS quotient;

2.17 MOD

被除数を除数で割った余りを返します。

構文:

MOD(dividend, divisor)

例: 10 を 3 で割った余りを取得する

SELECT MOD(10, 3) AS remainder;

2.18 ROUND

数値を指定された桁数に丸めます。桁数を省略した場合は、0 桁に丸めます。

構文:

ROUND(numeric_expression[, digits])

例: 3.14159 を小数点以下第2位に丸める

SELECT ROUND(3.14159, 2) AS rounded_value;

2.19 TRUNC

数値を指定された桁数に切り捨てます。桁数を省略した場合は、0 桁に切り捨てます。

構文:

TRUNC(numeric_expression[, digits])

例: 3.14159 を小数点以下第1位に切り捨てる

SELECT TRUNC(3.14159, 1) AS truncated_value;

2.20 CEIL

数値以上の最小の整数を返します。

構文:

CEIL(numeric_expression)

例: 3.14159 以上の最小の整数を取得する

SELECT CEIL(3.14159) AS ceiling_value;

2.21 FLOOR

数値以下の最大の整数を返します。

構文:

FLOOR(numeric_expression)

例: 3.14159 以下の最大の整数を取得する

SELECT FLOOR(3.14159) AS floor_value;

2.22 COS

数値のコサインを返します。

構文:

COS(numeric_expression)

例: 0 のコサインを計算する

SELECT COS(0) AS cosine;

2.23 COSH

数値のハイパボリックコサインを返します。

構文:

COSH(numeric_expression)

例: 1 のハイパボリックコサインを計算する

SELECT COSH(1) AS hyperbolic_cosine;

2.24 ACOS

数値のアークコサインを返します。

構文:

ACOS(numeric_expression)

例: 1 のアークコサインを計算する

SELECT ACOS(1) AS arc_cosine;

2.25 ACOSH

数値のハイパボリックアークコサインを返します。

構文:

ACOSH(numeric_expression)

例: 2 のハイパボリックアークコサインを計算する

SELECT ACOSH(2) AS hyperbolic_arc_cosine;

2.26 SIN

数値のサインを返します。

構文:

SIN(numeric_expression)

例: 0 のサインを計算する

SELECT SIN(0) AS sine;

2.27 SINH

数値のハイパボリックサインを返します。

構文:

SINH(numeric_expression)

例: 1 のハイパボリックサインを計算する

SELECT SINH(1) AS hyperbolic_sine;

2.28 ASIN

数値のアークサインを返します。

構文:

ASIN(numeric_expression)

例: 1 のアークサインを計算する

SELECT ASIN(1) AS arc_sine;

2.29 ASINH

数値のハイパボリックアークサインを返します。

構文:

ASINH(numeric_expression)

例: 2 のハイパボリックアークサインを計算する

SELECT ASINH(2) AS hyperbolic_arc_sine;

2.30 TAN

数値のタンジェントを返します。

構文:

TAN(numeric_expression)

例: 0 のタンジェントを計算する

SELECT TAN(0) AS tangent;

2.31 TANH

数値のハイパボリックタンジェントを返します。

構文:

TANH(numeric_expression)

例: 1 のハイパボリックタンジェントを計算する

SELECT TANH(1) AS hyperbolic_tangent;

2.32 ATAN

数値のアークタンジェントを返します。

構文:

ATAN(numeric_expression)

例: 1 のアークタンジェントを計算する

SELECT ATAN(1) AS arc_tangent;

2.33 ATANH

数値のハイパボリックアークタンジェントを返します。

構文:

ATANH(numeric_expression)

例: 0.5 のハイパボリックアークタンジェントを計算する

SELECT ATANH(0.5) AS hyperbolic_arc_tangent;

2.34 ATAN2

2 つの数値の反正接を返します。結果は、-π から π の範囲のラジアンで表されます。

構文:

ATAN2(y, x)

例: y = 1、x = 1 の反正接を計算する

SELECT ATAN2(1, 1) AS arc_tangent2;

3. BigQuery公開データで実践!数学関数を使った分析例

ここでは、BigQueryの公開データセット「NYC Taxi Trips」を使って、数学関数を使った簡単なSQL分析例を紹介します。このデータセットには、ニューヨーク市のタクシー乗車に関する情報が格納されています。

例:乗車距離をキロメートルに変換し、チップ金額の降順TOP10を取得

NYC Taxi Tripsデータセットの`trips`テーブルには、乗車距離がマイル単位で格納されています。これをキロメートルに変換するには、以下のクエリを実行します。

SELECT 
  trip_distance,  -- 乗車距離(マイル)
  ROUND(trip_distance * 1.60934, 2) AS trip_distance_km,  -- 乗車距離をキロメートルに変換し、小数点以下第2位に丸める
  tip_amount,  -- チップの金額
  CEIL(tip_amount) AS tip_amount_ceil,  -- チップの金額以上の最小の整数を取得
  FLOOR(tip_amount) AS tip_amount_floor  -- チップの金額以下の最大の整数を取得
FROM bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2015 
where tip_amount > 0
order by tip_amount desc
LIMIT 10

このクエリでは、`trip_distance`カラム(数値型)に1.60934を掛けて、キロメートルに変換しています。`LIMIT 10`句は、結果を10件に制限するために使用しています。

4. FAQ:BigQueryに関するよくある質問

faq

Q1. BigQueryの無料枠を超えて利用すると、どのくらい費用がかかりますか?

A1. 無料枠を超えた場合、従量課金制で料金が発生します。料金は、処理したデータ量やストレージ容量などによって異なります。詳しくは、BigQueryの料金ページをご確認ください。

Q2. BigQueryで使えるSQLは、他のデータベースと同じですか?

A2. BigQueryは標準SQLをサポートしており、他のデータベースで学んだSQLの知識を活かすことができます。ただし、BigQuery独自の関数や構文も存在するため、BigQueryのドキュメントで詳細を確認することをおすすめします。

Q3. SQLの学習には、どのような教材がありますか?

A3. SQLの学習には、オンライン学習サイト、書籍、動画教材など、様々な教材があります。初心者向けの教材から、上級者向けの教材まで、レベルに合わせて選ぶことができます。Googleが提供するBigQueryのチュートリアルもSQLの学習に役立ちます。

5. まとめ:BigQueryの数学関数をマスターして、データ分析スキルを向上させよう!

BigQueryの数学関数は、数値データを扱う分析に非常に役立ちます。この記事で紹介した関数以外にも、様々な数学関数が用意されています。BigQueryの公式リファレンスなどを参考に、数学関数をマスターし、データ分析スキルを向上させましょう!

BigQuery導入サポート、転職検討中の方はお問い合わせフォームからご相談くださいませ。

誠心誠意精一杯対応いたします。

【参考URL】

GoogleCloudPlatform:https://console.cloud.google.com/welcome/new

BigQuery:https://cloud.google.com/bigquery?hl=ja

BigQueryリリース情報:https://cloud.google.com/bigquery/docs/release-notes

BigQuery料金:https://cloud.google.com/bigquery/pricing

BigQuery料金無料枠:https://cloud.google.com/bigquery/pricing?hl=ja#free-tier

Google Cloud活用事例:https://cloud.google.com/customers/index.html?hl=ja#

Looker Studio:https://cloud.google.com/looker-studio?hl=ja

Looker Studioサンプル:https://cloud.google.com/bigquery/docs/visualize-looker-studio?hl=ja

人気記事

  • BigQueryの無料枠を活用しよう!制限と注意点、活用方法を解説
  • BigQueryでエラー解決!よくあるエラーと対処法
  • BigQueryのレベル別学習リソースまとめ!初心者から上級者まで役立つ情報源
  • 【SUUMOスクレイピング】Struccleで物件データを全件収集
  • BigQuery入門!無料データでSQLの基本文字列関数をマスター
BigQuery BigQuery学習教材
BigQuery 初心者
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次
カテゴリー
  • AI_Agent (92)
    • Agent開発 (92)
  • BigQuery (100)
    • BigQueryTips (11)
    • BigQueryでデータ分析 (49)
    • BigQueryのFAQ (1)
    • BigQuery入門 (8)
    • BigQuery学習教材 (22)
    • BigQuery導入ガイド (3)
    • BigQuery最新情報 (3)
    • BigQuery活用事例 (4)
  • Struccle (145)
    • Struccleでスクレイピング (10)
      • suumoの物件データを収集&分析 (1)
      • アニマルジョブの電話番号、メールアドレスを全件収集 (1)
      • データ集計 (6)
      • ホットペッパービューティーのヘアサロンデータを収集&分析 (1)
      • 食べログの飲食店データを収集&分析 (1)
    • Struccleデータ料金事例 (134)
      • 商品分析 (15)
      • 営業リスト (80)
      • 競合分析&市場調査 (58)
      • 自動車 (11)
      • 自社活用 (7)
    • Struccle活用企業様の紹介 (1)
  • 当ブログのコーディング実行環境設定 (1)
目次