メモ:BigQueryで2点間の距離を計算する
この記事は
BigQueryで距離系の関数使ったのでメモです。
やりたかったこと
- ownersというテーブルと、shopsというテーブルがそれぞれ緯度・経度を持っているとします
- イメージは店舗の場所と、オーナー自宅の場所の距離を出す感じ
- BigQueryで2点間の距離を取得したかったです
やり方
- id=100のオーナーの情報を出すとしたらこんな感じです
- パラメータがlatlngではなく、lnglatの順なのだけ注意
select
owners.name as owner_name,
shops.name as shop_name,
st_distance(
st_geogpoint(owners.longitude, owners.latitude),
st_geogpoint(shops.longitude, shops.latitude)
) as distance
from
owners inner join places on owners.id = shops.owner_id
where
owners.id = 100
実行結果
- こんな表になります。距離はm。
- イメージは店舗の場所と、オーナー自宅の場所の距離を出す感じ
- id=100のオーナーの情報を出すとしたらこんな感じです
- パラメータがlatlngではなく、lnglatの順なのだけ注意
select
owners.name as owner_name,
shops.name as shop_name,
st_distance(
st_geogpoint(owners.longitude, owners.latitude),
st_geogpoint(shops.longitude, shops.latitude)
) as distance
from
owners inner join places on owners.id = shops.owner_id
where
owners.id = 100
実行結果
- こんな表になります。距離はm。
owner_name | shop_name | distance |
---|---|---|
山田オーナー | 江戸川支店 | 123 |
山田オーナー | 世田谷支店 | 456 |
山田オーナー | 東京支店 | 789 |
終わりに
- この値で集計関数で平均とか出せるので便利です
- BQひいてはSQLってすごいな(今更)
Author And Source
この問題について(メモ:BigQueryで2点間の距離を計算する), 我々は、より多くの情報をここで見つけました https://qiita.com/shouta-dev/items/f7797665e325da35daf1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .