質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
BigQuery

BigQueryは、Google Cloud Platformが提供しているビッグデータ解析サービス。数TB(テラバイト)またはPB(ペタバイト)の膨大なデータに対し、SQL風のクエリを実行し、高速で集計・分析を行うサービスです。

Presto

Prestoは、Facebook社がオープンソースで公開した分散処理基盤。Hive/Impalaと同じ分散SQLエンジンの一つです。それぞれのタスクが同時進行できる計算モデルを使用。中間データをメモリに持つため、タスク間のデータのやりとりが高速であることが特徴です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Hive

Hiveとは、Hadoop(オープンソースの大規模分散計算フレームワーク)の上で動作するDWH(Data Warehouse:データウエアハウス)向けのプロダクトです。HiveQLというSQLのような言語で、Hadoop上のデータを操作することができます。

Q&A

解決済

1回答

1012閲覧

presto,bigqueryなどでアクセスログから、特定のURLに訪れたか否かのフラグをつけたい

php_practitione

総合スコア12

BigQuery

BigQueryは、Google Cloud Platformが提供しているビッグデータ解析サービス。数TB(テラバイト)またはPB(ペタバイト)の膨大なデータに対し、SQL風のクエリを実行し、高速で集計・分析を行うサービスです。

Presto

Prestoは、Facebook社がオープンソースで公開した分散処理基盤。Hive/Impalaと同じ分散SQLエンジンの一つです。それぞれのタスクが同時進行できる計算モデルを使用。中間データをメモリに持つため、タスク間のデータのやりとりが高速であることが特徴です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Hive

Hiveとは、Hadoop(オープンソースの大規模分散計算フレームワーク)の上で動作するDWH(Data Warehouse:データウエアハウス)向けのプロダクトです。HiveQLというSQLのような言語で、Hadoop上のデータを操作することができます。

0グッド

0クリップ

投稿2021/10/03 11:59

分析をやっており単純だと思いますがわからないので質問させていただきます。

アクセスログがあり、

time | user_id | path | category

timeは時間が入っており
user_idはそのユーザーの識別子
pathはURLのドメイン以降(/thanks)
categoryは"biyou", "kaden"などのローマ字が入っております。(今回でいうとbiyouです)

というのを持つアクセスログが2020年01月01日から今日まであります。

質問

「先月(9月)にthanksページを見た人が、9月中に美容カテゴリページを見た人か見てない人かの内訳を出したいです。」

理想のアウトプットとしては
|month|thanks見たUU|カテゴリ見たUU|見てないUU|
|:--|:--:|--:|
|09|100|20|80|

のような感じです

できないこと

「thanksページを見た人」というのは

count(distinct user_id) from log where path = '/thanks' and time > '2021-09-01'

で出せるのですが、
カテゴリを見た人というフラグ?的なものの付け方がわかりません。
多分フラグがつけれれば
count(if())みたいなのでフラグありなしでかけるような気がしております。

よろしくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

先月(9月)にthanksページを見た人が、
9月中に美容カテゴリページを見た人か見てない人かの内訳を出したいです。

同一ユーザーが、同月に複数回thanksページを閲覧した場合
美容カテゴリを閲覧する日もあれば
異なるカテゴリを閲覧する日もあるでしょう。
混在していた場合は、どういった内訳になるのでしょうか。

「カテゴリ見たUU」   は 1 でカウントすると想像できますけど
「カテゴリ見てないUU」 は 1 にするのか、それとも 0 とするのか

以下は混在する場合に「見てないUU」を 0 とする例です。
(BigQuery 標準SQL)

SQL

1CREATE TEMP TABLE log 2( 3 time datetime not null 4 , user_id int64 not null 5 , path string not null 6 , category string not null 7); 8 9INSERT INTO log 10 ( time, user_id, path, category ) 11VALUES 12 ( '2021-09-20 10:05:11', 1, '/thanks', 'biyou' ) 13 , ( '2021-09-20 10:05:14', 2, '/thanks', 'kaden' ) 14 , ( '2021-09-24 14:48:19', 1, '/thanks', 'fashion' ) 15 , ( '2021-09-26 20:01:13', 1, '/thanks', 'kaden' ) 16 , ( '2021-09-26 21:41:09', 3, '/thanks', 'food' ) 17 , ( '2021-09-04 07:22:48', 4, '/question', 'biyou' ) 18 , ( '2021-09-26 21:02:11', 5, '/thanks', 'biyou' ) 19 , ( '2021-09-30 23:59:59', 5, '/thanks', 'biyou' ) 20 , ( '2021-10-01 00:01:03', 6, '/thanks', 'biyou' ) 21; 22 23SELECT min( ym ) ym 24 , count(1) uu 25 , sum( biyou ) biyou 26 , sum( etc ) etc 27FROM 28( 29 SELECT min( datetime_trunc( time, month ) ) ym 30 , user_id 31 , count( distinct case when category = 'biyou' then 1 end ) biyou 32 , 1 - max( case when category = 'biyou' then 1 else 0 end ) etc 33 FROM log 34 WHERE path = '/thanks' 35 AND time >= datetime_trunc( current_datetime() - interval 1 month, month ) 36 AND time < datetime_trunc( current_datetime(), month ) 37 GROUP BY user_id 38) q;

result

1  ym    uu   biyou  etc 2------------------------------------ 32021-09-01  4     2    2 4 5 6(インラインビュー) 7 8  ym   user_id  biyou   etc 9-------------------------------------- 102021-09-01   1     1    0 112021-09-01   2     0    1 122021-09-01   3     0    1 132021-09-01   5     1    0

投稿2021/10/03 22:29

mayu-

総合スコア335

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問