グーグルのサイトを参考
(標準 SQL のタイムスタンプ関数のページを参考)
ーー以下引用部分ーー
TIMESTAMP_SECONDS
1970-01-01 00:00:00 UTC からの秒数
TIMESTAMP_MILLIS
1970-01-01 00:00:00 UTC からのミリ秒数
TIMESTAMP_MICROS
1970-01-01 00:00:00 UTC からのマイクロ秒数
データ分析に関する備忘録。主にR言語を使ったデータの前処理や統計、機械学習などの方法を記録。ビッククエリとトレジャーデータがお気に入り。オフラインとオンラインの連携が最近のマイブーム。
注目の投稿
【kepler.gl】コロナ対策による人流の変化も地図上に可視化(各種メディアで報道)
kepler.glのサイト画面 kepler.glを使ってコロナ対策の効果を分析したところ、テレビ、新聞、ネットのメディアから問い合わせや報道依頼が殺到。今も、土日返上で都内や全国の人流変化を分析しています。この記事では人流変化の可視化に便利なkepler.glにつ...
2020年6月12日金曜日
2020年5月21日木曜日
【BigQuery】時間と分を抜き出す
タイムスタンプから時間として扱るかたちで時間と分のみを抜き出す方法
--%R=%H:%M 形式の時刻
FORMAT_TIMESTAMP("%R",TIMESTAMP)
出力結果は、「02:30」というような形で出てくる。
もちろん、時間として扱えるので、
FORMAT_TIMESTAMP("%R",TIMESTAMP) > ''12:30"
とすれば、12時30分以降のデータを抽出できる。
--%R=%H:%M 形式の時刻
FORMAT_TIMESTAMP("%R",TIMESTAMP)
出力結果は、「02:30」というような形で出てくる。
もちろん、時間として扱えるので、
FORMAT_TIMESTAMP("%R",TIMESTAMP) > ''12:30"
とすれば、12時30分以降のデータを抽出できる。
◇参考サイト
2020年5月6日水曜日
【トレジャーデータ】JSタグでサイト訪問・購入ログを取得
JSタグを使ってWEBサイトの訪問・購入ログなどを取得する手順
- WEBサイト用のJS SDKを準備する
- 参考サイト:td-js-sdk
- JS SDKを実装する
- 参考サイト:Treasure Data JavaScript SDKの使い方
- 補足:データはJSを仕込んだページのみ取得するため、サイト全体のデータを取得したい場合は全ページにJSを仕込む必要がある。また、購入ページにJSを仕込めば、分析の際に、そのページのURLのみ抽出すれば購入ログとみなすこともできる。
- SDKによって収集できたアクセスログを確認
◇下記のサイトで具体的な実装例があります。
◇参考リンク
- JS SDK実装ガイド:https://support.treasuredata.com/hc/en-us/articles/360000701428
- Treasure Data JavaScript SDKの使い方:https://qiita.com/kzk9/items/15f4e01cafa30fb8e7a5
- JS SDKサンプル:https://github.com/treasure-data/td-js-sdk
- 解析事例(EC):https://support.treasuredata.com/hc/ja/articles/213659898
ラベル:
JavaScript
,
SDK
,
Treasure Data
,
トレジャーデータ
2020年5月1日金曜日
【BigQuery】特定の文字を含むものだけを集計する
フィールド「x」の先頭の文字が「Z」である場合に「y」の合計を集計するSQL
「LIKE」はあいまい検索、「%」はワイルドカードで「Z%」はZの後ろに何があってもよいことを示す。
SELECT
SUM(CASE
WHEN x LIKE "Z%" THEN y
END
) AS total
FROM
data
「LIKE」はあいまい検索、「%」はワイルドカードで「Z%」はZの後ろに何があってもよいことを示す。
SELECT
SUM(CASE
WHEN x LIKE "Z%" THEN y
END
) AS total
FROM
data
2020年4月24日金曜日
【Google】意外と知らないグーグルスプレッドシートなどのファイルが保存されている場所を開く方法
![]() |
| 矢印のところをクリックすることでファイルを保存している場所を開ける |
グーグルスプレッドシートなどのファイルがどこに保存されているか分からない場合、上記の画像内の矢印の箇所をクリックすることで保存されているフォルダを開くことができます。
自分も最近知りました。。。
ラベル:
Google
,
Google Spreadsheet
,
グーグルドライブ
,
スプレッドシート
2020年4月21日火曜日
【BigQuery】都内の各地点のUUを前後の期間で比較するデータを集計してケプラーで描画する
ケプラーを利用すると緯度経度のデータからグラフィカルなマップグラフを作成できるとを以前記事に書きました(【kepler.gl】コロナ対策による人流の変化も地図上に可視化(各種メディアで報道))。今回、ケプラーのH3というグラフ形式を使って、東京都内各地点内の異なる期間のUUの比率をマップグラフで描画するため必要なデータを集計すためのクエリを紹介します。また、集計データのケプラーでの描画については、下記のサイトが分かりやすいのでご参考にして下さい。
t1 AS (
SELECT
UDF.geoToH3(latitude,
longitude,
8) AS geoH3_1,
COUNT(DISTINCT uid) AS CntUU_1,
FROM
data
WHERE
AND TIMESTAMP(DATETIME(TIMESTAMP(detected_time),
'Asia/Tokyo')) >= TIMESTAMP('2020-02-02 00:00:00')
AND TIMESTAMP(DATETIME(TIMESTAMP(detected_time),
'Asia/Tokyo')) < TIMESTAMP('2020-02-03 00:00:00')
AND latitude BETWEEN 23
AND 46
AND longitude BETWEEN 123
AND 148
--
--東京都内
AND ST_COVERS(ST_GEOGFROMTEXT('POLYGON((139.868043 35.628718,139.887956 35.653272,139.885209 35.680048,139.911302 35.685068,139.918855 35.70347,139.896195 35.728001,139.899629 35.744164,139.879716 35.761996,139.878343 35.77481,139.86255 35.79542,139.771226 35.810456,139.732774 35.778152,139.650376 35.799875,139.616731 35.763667,139.54326 35.752523,139.421723 35.765896,139.371598 35.764782,139.277528 35.834953,139.170411 35.843153,139.016603 35.891563,138.955491 35.853728,139.044755 35.717259,139.219163 35.645868,139.411424 35.582232,139.454015 35.541781,139.471867 35.519988,139.482167 35.534517,139.459508 35.571946,139.476674 35.595958,139.443028 35.606008,139.453328 35.6328,139.492467 35.619963,139.528859 35.652889,139.658635 35.598192,139.715627 35.553513,139.750645 35.548765,139.796651 35.524738,139.809354 35.51384,139.868043 35.628718))'),
ST_GEOGPOINT(longitude,
latitude))
GROUP BY
geoH3_1 ),
t2 AS (
SELECT
UDF.geoToH3(latitude,
longitude,
8) AS geoH3_2,
COUNT(DISTINCT uid) AS CntUU_2,
FROM
data
WHERE
AND TIMESTAMP(DATETIME(TIMESTAMP(detected_time),
'Asia/Tokyo')) >= TIMESTAMP('2020-04-19 00:00:00')
AND TIMESTAMP(DATETIME(TIMESTAMP(detected_time),
'Asia/Tokyo')) < TIMESTAMP('2020-04-20 00:00:00')
AND latitude BETWEEN 23
AND 46
AND longitude BETWEEN 123
AND 148
--
--東京都内
AND ST_COVERS(ST_GEOGFROMTEXT('POLYGON((139.868043 35.628718,139.887956 35.653272,139.885209 35.680048,139.911302 35.685068,139.918855 35.70347,139.896195 35.728001,139.899629 35.744164,139.879716 35.761996,139.878343 35.77481,139.86255 35.79542,139.771226 35.810456,139.732774 35.778152,139.650376 35.799875,139.616731 35.763667,139.54326 35.752523,139.421723 35.765896,139.371598 35.764782,139.277528 35.834953,139.170411 35.843153,139.016603 35.891563,138.955491 35.853728,139.044755 35.717259,139.219163 35.645868,139.411424 35.582232,139.454015 35.541781,139.471867 35.519988,139.482167 35.534517,139.459508 35.571946,139.476674 35.595958,139.443028 35.606008,139.453328 35.6328,139.492467 35.619963,139.528859 35.652889,139.658635 35.598192,139.715627 35.553513,139.750645 35.548765,139.796651 35.524738,139.809354 35.51384,139.868043 35.628718))'),
ST_GEOGPOINT(longitude,
latitude))
GROUP BY
geoH3_2 ),
join_log AS (
SELECT
geoH3_1,
MAX(CntUU_1) AS CntUU_1,
MAX(CntUU_2) AS CntUU_2,
FROM
t1
LEFT JOIN
t2
ON
t1.geoH3_1 =t2.geoH3_2
WHERE
geoH3_1 IS NOT NULL
GROUP BY
geoH3_1 )
SELECT
*,
CntUU_2 / CntUU_1 AS rate
FROM
join_log
ORDER BY
CntUU_1 DESC
◇クエリ例
WITHt1 AS (
SELECT
UDF.geoToH3(latitude,
longitude,
8) AS geoH3_1,
COUNT(DISTINCT uid) AS CntUU_1,
FROM
data
WHERE
AND TIMESTAMP(DATETIME(TIMESTAMP(detected_time),
'Asia/Tokyo')) >= TIMESTAMP('2020-02-02 00:00:00')
AND TIMESTAMP(DATETIME(TIMESTAMP(detected_time),
'Asia/Tokyo')) < TIMESTAMP('2020-02-03 00:00:00')
AND latitude BETWEEN 23
AND 46
AND longitude BETWEEN 123
AND 148
--
--東京都内
AND ST_COVERS(ST_GEOGFROMTEXT('POLYGON((139.868043 35.628718,139.887956 35.653272,139.885209 35.680048,139.911302 35.685068,139.918855 35.70347,139.896195 35.728001,139.899629 35.744164,139.879716 35.761996,139.878343 35.77481,139.86255 35.79542,139.771226 35.810456,139.732774 35.778152,139.650376 35.799875,139.616731 35.763667,139.54326 35.752523,139.421723 35.765896,139.371598 35.764782,139.277528 35.834953,139.170411 35.843153,139.016603 35.891563,138.955491 35.853728,139.044755 35.717259,139.219163 35.645868,139.411424 35.582232,139.454015 35.541781,139.471867 35.519988,139.482167 35.534517,139.459508 35.571946,139.476674 35.595958,139.443028 35.606008,139.453328 35.6328,139.492467 35.619963,139.528859 35.652889,139.658635 35.598192,139.715627 35.553513,139.750645 35.548765,139.796651 35.524738,139.809354 35.51384,139.868043 35.628718))'),
ST_GEOGPOINT(longitude,
latitude))
GROUP BY
geoH3_1 ),
t2 AS (
SELECT
UDF.geoToH3(latitude,
longitude,
8) AS geoH3_2,
COUNT(DISTINCT uid) AS CntUU_2,
FROM
data
WHERE
AND TIMESTAMP(DATETIME(TIMESTAMP(detected_time),
'Asia/Tokyo')) >= TIMESTAMP('2020-04-19 00:00:00')
AND TIMESTAMP(DATETIME(TIMESTAMP(detected_time),
'Asia/Tokyo')) < TIMESTAMP('2020-04-20 00:00:00')
AND latitude BETWEEN 23
AND 46
AND longitude BETWEEN 123
AND 148
--
--東京都内
AND ST_COVERS(ST_GEOGFROMTEXT('POLYGON((139.868043 35.628718,139.887956 35.653272,139.885209 35.680048,139.911302 35.685068,139.918855 35.70347,139.896195 35.728001,139.899629 35.744164,139.879716 35.761996,139.878343 35.77481,139.86255 35.79542,139.771226 35.810456,139.732774 35.778152,139.650376 35.799875,139.616731 35.763667,139.54326 35.752523,139.421723 35.765896,139.371598 35.764782,139.277528 35.834953,139.170411 35.843153,139.016603 35.891563,138.955491 35.853728,139.044755 35.717259,139.219163 35.645868,139.411424 35.582232,139.454015 35.541781,139.471867 35.519988,139.482167 35.534517,139.459508 35.571946,139.476674 35.595958,139.443028 35.606008,139.453328 35.6328,139.492467 35.619963,139.528859 35.652889,139.658635 35.598192,139.715627 35.553513,139.750645 35.548765,139.796651 35.524738,139.809354 35.51384,139.868043 35.628718))'),
ST_GEOGPOINT(longitude,
latitude))
GROUP BY
geoH3_2 ),
join_log AS (
SELECT
geoH3_1,
MAX(CntUU_1) AS CntUU_1,
MAX(CntUU_2) AS CntUU_2,
FROM
t1
LEFT JOIN
t2
ON
t1.geoH3_1 =t2.geoH3_2
WHERE
geoH3_1 IS NOT NULL
GROUP BY
geoH3_1 )
SELECT
*,
CntUU_2 / CntUU_1 AS rate
FROM
join_log
ORDER BY
CntUU_1 DESC
◇参考サイト
- 【kepler.gl】コロナ対策による人流の変化も地図上に可視化(各種メディアで報道)
- BigQuery・Kepler.gl・Uber H3による空間情報分析の始め方
- BigQuery GISを用いた位置情報データ分析の入門
- Table of Cell Areas for H3 Resolutions
2020年4月19日日曜日
【BigQuery】1分毎に1レコード生成するクエリ
1分毎に1レコードを生成するクエリ。今回は、1分毎に北太平洋の任意の緯度経度を入れている。ケプラーで位置情報などを可視化する際に、複数のデータのグラフの高さを調整するために使うクエリ。1分毎でそのデータの最大値とならない場合は、1秒毎にしたり、同様のクエリを複数UNIONするなどで対応できる。
SELECT
DISTINCT FORMAT_DATETIME('%Y-%m-%d %H:%M',
DATETIME(TIMESTAMP(time),
'Asia/Tokyo') ) AS time_jpn,
--北太平洋 31.036119, 165.169956
31.036119 AS latitude,
165.169956 AS longitude
FROM
table
ORDER BY
time_jpn
SELECT
DISTINCT FORMAT_DATETIME('%Y-%m-%d %H:%M',
DATETIME(TIMESTAMP(time),
'Asia/Tokyo') ) AS time_jpn,
--北太平洋 31.036119, 165.169956
31.036119 AS latitude,
165.169956 AS longitude
FROM
table
ORDER BY
time_jpn
登録:
投稿
(
Atom
)
