8. Cloud OnAir
クエリエディタ
● クエリを入力 : 実行
● 2 億行からコミットの件名で
多いものをランキング
一般公開データセットを利用してみる
https://cloud.google.com/bigquery/public-data/
SELECT subject AS subject,
COUNT(*) AS num_duplicates
FROM
`bigquery-public-data.github_repos.co
mmits`
GROUP BY subject
ORDER BY num_duplicates DESC
LIMIT 100
11. Cloud OnAir
カラム指向ストレージ
● BigQuery の内部はカラム指向ストレージ (Capacitor)
● 指定されたカラムは上から下までフルスキャンされる
● パフォーマンス、コストの観点から必要なカラムのみクエリをする
id name cost date
SELECT id, cost FROM table
BigQuery ホワイトペーパー“Inside Look at Google BigQuery”
12. Cloud OnAir
デモ : カラム指向を確認する
クエリエディタ
● 同じデータセットをクエリする
SELECT * FROM
`bigquery-public-data.samples.wiki
pedia`
すべてのカラム
SELECT title, id FROM
`bigquery-public-data.samples.wiki
pedia`
必要なカラムのみ 処理コスト、
及びスピードが
改善
17. Cloud OnAir
分割テーブル - データ ポータルでの利用 (2)
BigQuery ドキュメント- 分割テーブルの概要
グラフ設定
● 期間のディメンジョン
● 時間のディメンジョン
フィルタ
● 期間
SELECT FORMAT_TIMESTAMP('%Y%m%d',
t0.partition_timestamp) AS t0_qt_5713rb7kvb,
COUNT(1.000000000000000) AS t0_qt_z99vgb7kvb FROM
`dataset.table` AS t0 WHERE
(FORMAT_TIMESTAMP('%Y%m%d',
t0.partition_timestamp) >= '20060101' AND
FORMAT_TIMESTAMP('%Y%m%d', t0.partition_timestamp)
<= '20110519') GROUP BY t0_qt_5713rb7kvb ORDER BY
t0_qt_5713rb7kvb ASC;
データポータルの発行したクエリ
18. Cloud OnAir
クラスタ化テーブル
2018-01-01
c1 userId c3 eventDate c5
2018-01-02
2018-01-03
2018-01-04
2018-01-05
SELECT c1, c3 FROM ... WHERE userId BETWEEN 52 and 63
AND eventDate BETWEEN “2018-01-03” AND “2018-01-05”
● 1 つ以上の列の内容に基づき
データを編成
● 関連したデータが同じ場所へ
● 不要なデータのスキャンが省略
https://cloud.google.com/bigquery/docs/clustered-
22. Cloud OnAir
BigQuery GIS とは
{
"type": "Polygon",
"coordinates": [
[
[139.7483,35.6996],
[139.7493,35.6998],
...
[139.7518,35.6999]
]
]
}
SELECT
city_name AS ‘地区名’,
COUNT(car_id) AS ‘台数’
FROM
city, car
WHERE
ST_Intersects(car.geo,
city.geo)
...
GROUP BY city_name
地区名 台数
港区 六本木 58
港区 南青山 40
港区 芝公園 20
BigQuery
安価なフルマネージドのストレージ
領域に行政界や道路情報等を格納
サーバーレスの
DWH で膨大なデータを瞬時に解析
ビジネスに新たな知見をもたらす
23. Cloud OnAir
ユーザーから 500 メートル以内の店舗を抽出
BigQuery GIS の利用例
SELECT store_name
FROM stores
WHERE
ST_DWITHIN(store_loc,
ST_GeogPoint(@lon, @lat),
500)
24. Cloud OnAir
店舗から 500 メートル以内にいるユーザーを数える
BigQuery GIS の利用例
SELECT store_name, COUNT(1) users
FROM stores s JOIN users u
ON ST_DISTANCE(s.loc, u.loc) < 500
GROUP BY 1
25. Cloud OnAir
郵便番号の中の区画にいるユーザー数の算出
BigQuery GIS の利用例
SELECT zipcode, COUNT(1) users
FROM users u
JOIN
(select zipcode,
st_geogfromtext(zipcode_geom) loc
from
`bigquery-public-data.utility_us.zipcode_
area`) z
ON ST_COVERS(z.loc, use.loc)
GROUP BY 1
26. Cloud OnAir
BigQuery GIS / Geo Viz の利用
BigQuery Geo Viz
https://bigquerygeoviz.appspot.com/
● BigQuery 上でクエリを発行し
可視化できるツール
● 手軽な位置情報のプロットに
27. Cloud OnAir
Geo Viz の利用
BigQuery Geo Viz
https://bigquerygeoviz.appspot.com/
● 初回のみ “Authorize” を押して
BigQuery の API を許可
● Project ID を入力
● SQL を入力
● “Run” で実行
● “See results” ボタンで次へ
https://cloud.google.com/bigquery/docs/gis-tutorial-hurrican
e
28. Cloud OnAir
Geo Viz の利用 (2) - プロット
BigQuery Geo Viz
https://bigquerygeoviz.appspot.com/
● WKT 形式の位置情報を含む
カラムを選択する
● 右側地図にプロットされる
https://cloud.google.com/bigquery/docs/gis-tutorial-hurrican
e
29. Cloud OnAir
Geo Viz の利用 (3) - スタイル調整
データをもとにスタイルを変更
● fillColor (塗る色) : 風速を可視化
○ Data Driven
(数字をもとに塗り分け)
○ “Function” : “linear”
○ “Field” : “usa_wind”
○ Domain : “0”, “150”
○ Range : “0006ff”, “#ff0000”
https://cloud.google.com/bigquery/docs/gis-tutorial-hurrican
e
30. Cloud OnAir
Geo Viz の利用 (3) - スタイル調整
データをもとにスタイルを変更
● circleRadius (半径) : ハリケーンの
半径
○ Data Driven
(数字をもとに塗り分け)
○ “Function” : “linear”
○ “Field” : “radius_50kt”
○ Domain : “0”, “135”
○ Range : “5”, “15”
https://cloud.google.com/bigquery/docs/gis-tutorial-hurrican
e
33. Cloud OnAir
BigQuery 上で、 SQL クエリを
ベースに機械学習モデルを
作成、利用
BigQuery ML とは
BigQuery
BigQuery ML を
活用した機械学習
Google アナリティクス 360
にあるデータ、収益
メール マーケティング
および、
広告システムと連携
BI プラットフォームを介して
レポート
データ ポータル、Looker など
予測
モデルを
再トレー二ング
34. Cloud OnAir
デモ : BigQuery ML でユーザーあたり購入数を予測
#standardSQL
CREATE MODEL `bqml_tutorial.sample_model`
OPTIONS(model_type='logistic_reg') AS
SELECT
IF(totals.transactions IS NULL, 0, 1) AS label,
IFNULL(device.operatingSystem, "") AS os,
device.isMobile AS is_mobile,
IFNULL(geoNetwork.country, "") AS country,
IFNULL(totals.pageviews, 0) AS pageviews
FROM
`bigquery-public-data.google_analytics_sample.ga_sessi
ons_*`
WHERE
_TABLE_SUFFIX BETWEEN '20160801' AND '20170630'
1. モデルを作成
BigQuery ML で
ロジスティック回帰モデルを
作る
BigQuery に入っているデータを
教師データとする
( label は totals.transactions を
ベースに作成 )
https://cloud.google.com/bigquery/docs/bigquery
ml-analyst-start
35. Cloud OnAir
デモ : BigQuery ML でユーザーあたり購入数を予測
#standardSQL
SELECT *
FROM
ML.EVALUATE(MODEL `bqml_tutorial.sample_model`, (
SELECT
IF(totals.transactions IS NULL, 0, 1) AS label,
IFNULL(device.operatingSystem, "") AS os,
device.isMobile AS is_mobile,
IFNULL(geoNetwork.country, "") AS country,
IFNULL(totals.pageviews, 0) AS pageviews
FROM
`bigquery-public-data.google_analytics_sample.ga_sessi
ons_*`
WHERE
_TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
2. モデルを評価
BigQuery ML でモデルを評価
(その他: Confusion Matrix, Roc
curve なども確認可能 )
BigQuery に入っているデータを
評価するデータとする
( label は totals.transactions を
ベースに作成 )
https://cloud.google.com/bigquery/docs/bigquery
ml-analyst-start
36. Cloud OnAir
デモ : BigQuery ML でユーザーあたり購入数を予測
SELECT
fullVisitorId,
SUM(predicted_label) as total_predicted_purchases
FROM
ML.PREDICT(MODEL `bqml_tutorial.sample_model`, (
SELECT
IFNULL(device.operatingSystem, "") AS os,
device.isMobile AS is_mobile,
IFNULL(totals.pageviews, 0) AS pageviews,
IFNULL(geoNetwork.country, "") AS country,
fullVisitorId
FROM
`bigquery-public-data.google_analytics_sample.ga_sessi
ons_*`
WHERE
_TABLE_SUFFIX BETWEEN '20170701' AND '20170801'))
GROUP BY fullVisitorId
ORDER BY total_predicted_purchases DESC
LIMIT 10
3. モデルを利用する
作成されたモデルから
predicted_label の合計を取得
(購入予測数)
PREDICT 対象となるデータを
BigQuery から SELECT する
https://cloud.google.com/bigquery/docs/bigquery
ml-analyst-start