完成イメージ↓
日付 | WAU | MAU |
---|---|---|
2018/09/09 | 200 | 500 |
2018/09/10 | 180 | 480 |
WAU・・・日付−7日間の間に一度でもログインしたユニークユーザー数
MAU・・・日付−30日間の間に一度でもログインしたユニークユーザー数
何を使ってどう集計すればいいのでしょうか?
ちなみにDAUは以下のように出しています。
standardsql
1with T as ( 2 select 3 parse_date("%Y%m%d", event_date) event_date 4 , user_id 5 , event_name 6 from 7 `sample*` 8 where( 9 _TABLE_SUFFIX BETWEEN 10 "20180707" AND 11 FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)) 12 ) 13 and 14 app_info.install_source = 'iTunes' 15 and 16 date(TIMESTAMP_ADD(timestamp_micros(user_first_touch_timestamp), interval device.time_zone_offset_seconds SECOND)) > "2018-07-06" 17 and 18 user_id is not null 19) 20 21,dau as ( 22 select 23 event_date 24 ,count(distinct(user_id)) as dau_count 25 from 26 T 27 group by 28 event_date 29)
user_idはイベント毎に計測されるため、元データでは重複があります。
<↓saziさんの回答を自分なりに解釈して書いたコード(コピペだとエラーで、saziさんの書き方が高度でどう変えればいいかわかりませんでした。。。)>
エラーはないのですが、dau、wau、mauの数字がほぼ同じになってしまいました。
standardsql
1with T as ( 2 select 3 parse_date("%Y%m%d", event_date) event_date 4 , user_id 5 , event_name 6 from 7 `sample*` 8 where( 9 _TABLE_SUFFIX BETWEEN 10 "20180707" AND 11 FORMAT_DATE("%Y%m%d", DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)) 12 ) 13 and 14 app_info.install_source = 'iTunes' 15 and 16 date(TIMESTAMP_ADD(timestamp_micros(user_first_touch_timestamp), interval device.time_zone_offset_seconds SECOND)) > "2018-07-06" 17 and 18 user_id is not null 19 limit 10000000 20) 21 22, dau as ( 23 select 24 event_date 25 ,count(distinct(user_id)) as dau_count 26 from 27 T 28 group by 29 event_date 30) 31 32, wau as ( 33 select 34 event_date 35 ,count(distinct(user_id)) as wau_count 36 from 37 T 38 where 39 event_date between t.event_date and date_add(t.event_date,interval 7 day) 40 group by event_date 41) 42 43, mau as ( 44 select 45 event_date 46 ,count(distinct(user_id)) as mau_count 47 from 48 T 49 where 50 event_date between t.event_date and date_add(t.event_date,interval 1 month) 51 group by event_date 52) 53 54, before_formating as ( 55 select 56 dau.event_date 57 ,dau_count 58 ,wau_count 59 ,mau_count 60 from 61 dau 62 left join 63 wau 64 on 65 dau.event_date = wau.event_date 66 left join 67 mau 68 on 69 dau.event_date = mau.event_date 70) 71select * 72from before_formating 73order by event_date asc
回答1件
あなたの回答
tips
プレビュー