DBアワー出張編 Lv2の問題を解いてみる会 2023/9/21

概要

今日は最終回。解説 & Lv2の過去問を解きます
  • timezone
  • event_logs
  • パラメータ機能
  • その他(data source、visualization等について深掘り?)

録画データ

過去問

Lv2

データソースとschema

データソース

  • mysql
    • アプリケーションで使用するメインのデータが入っている
    • いわゆるデータベースのひとつ
  • redshift
    • データ分析に必要なものがいろいろはいっている
      • ログ系
        • event_logs
        • access_logs
      • mysqlのコピー
        • 最新ではない
        • 削除済みデータもある
      • schema経由で見られる色々(後述)
    • いわゆるデータウェアハウス(DWH、データの倉庫)のひとつ
→ 基本的に で事足りる
場合によっては を使う
試験では指定されている を使う。中身は と同じ

schema色々

    • これはデフォルトのやつで、実は勝手についている。普段は気にしない
  • ,
    • redshift_with_mysql で mysqlを見たいときに使う
    • テスト用のデータソースでも見える
    • DBTは集計したりログを残してくれるクン
    • SaaSやEC関連のデータが結構入っている

event_logs

  • timestamp
    • 時刻。絞ると早いのでまず絞る
  • name
    • イベント名。使わないことはほぼ無い
  • user_id
    • イベントを発生させたユーザーのID
    • 0なこともある(ユーザーが判別できないなど)
  • resource_id
    • ID
  • additional_info
    • 画面情報など
  • event_logsとevent_v2_logsの違い
    • event_v2_logs を使うべき
      • Androidの数字を含んでいる
      • 早い(かも)

投稿のタップ数を見てみよう

  • 9月1日に発生した投稿のタップ数合計
    • 9月1日に発生した投稿のタップ数、投稿別に、多い順で100件
      • 投稿IDとタップ数、投稿のcontentを並べる
    • 9月1日に投稿を最もタップしたユーザー10人
      • ユーザーIDとタップ数、ユーザー名( , )を並べる
      • 分解
          1. 9月1日に発生したタップの数をユーザーごとに数える
          1. タップ数の降順で10人に絞る
          1. ユーザー名をつけて表示

    プロフィール画面のPV数を見てみよう

    timezone

    • mysql
      • UTCになっているので変換が必要
    • event_logs系(evnt_logs, event_v2_logs, access_logsあたり)
      • JSTなのでそのままで良い
    特に組み合わせるときに注意

    最新の投稿を見てみる

    日本の時刻(JST)で作成日を指定した投稿を見てみる

    最新のイベントを見てみる

    パラメータ機能

    ユーザーのプロフィールを見る(ID指定)

    商品の投稿を内容を見る(商品ID指定)

    例えば:546003(= product_id)
    post_products, posts
     

    Q5

    PVが多いのに商品が紐付いていない投稿があったとき、もし紐付けるべき適切な商品があるなら紐付けたい。 そのため、商品が紐づいていない投稿を直近30日間の閲覧数の多い順に知りたい。 投稿IDと閲覧数がわかるようにし、PVが多い順に上位100件まで表示させる。また、投稿IDから投稿ページへ飛べるようにする。
     
     
    • 商品が紐づいていない投稿
    • 直近30日間
    • 閲覧数の多い順