Day 177|Looker Studio:返品×T-sortを“1枚で状況がわかる”にする

こんにちは、こんです🦊
100日チャレンジ2回目のWeek 11 / Day 6(通算 Day 177)です。

Day 176までで「Box → BigQuery」定期転送(返品 ec_returns/T-sort稼働 tsort_logs)が毎朝まわる状態になりました。今日はこの生データを“見れば動ける1枚”に変換すべく、Looker Studioのプロトタイプを作成。関係者レビューに耐える初期UXを作り切りました。


🎯 今日のゴール

  • BigQueryの2テーブルをLooker Studioに接続(型・タイムゾーンを整備)

  • KPIカード+時系列+深掘りテーブルで1ページ完結ダッシュボードを構成

  • 共有テンプレ(期間・SKU・ライン・拠点フィルタ、比較軸、注記)を実装


🔧 実装ログ(Looker Studio)

1) データソース接続と型の最終調整

  • データソース:

    • box_raw_data.ec_returns(返品):return_date=日付、qty=数値

    • box_raw_data.tsort_logs(稼働):started_at=日時、duration_sec=数値

  • タイムゾーンは JST(Asia/Tokyo)。started_at はレポート側で日付抽出フィールドを追加(DATE(started_at))し、日別集計を安定化。

  • 派生フィールド(計算例)
    返品関連

    • 返品件数 = SUM(qty)

    • 前週比(%) = (SUM(qty) - SUM(qty)[比較期間]) / SUM(qty)[比較期間]
      T-sort関連(ステータスの語彙は当週データ準拠)

    • 稼働時間(時間) = SUM(CASE WHEN status = "running" THEN duration_sec ELSE 0 END) / 3600

    • 停止時間(時間) = SUM(CASE WHEN status IN ("down","error") THEN duration_sec ELSE 0 END) / 3600

    • 稼働率(%) = 稼働時間(時間) / NULLIF(稼働時間(時間) + 停止時間(時間), 0)

注:返品率の正式版は出荷母数の連携後に実装。今日は**暫定KPI(返品件数・前週比)**で運用開始し、出荷テーブル追加後に差し替えます(次週バックログ)。


2) ダッシュボード構成(ワンページ)

A. ヘッダー(共通フィルタ)

  • 期間(デフォルト:過去30日)/SKU/理由/拠点/ライン

  • 表示切替:日/週(Date granularity)

B. KPIカード(4つ)

  • 返品件数(期間内合計)|前週比バッジ

  • SKU最多返品(SKU・件数)

  • T-sort稼働率(全ライン平均)

  • エラー発生比率(error_code有の比率)

C. 可視化コンテナ

  1. 返品の時系列推移(折れ線):DATE(return_date) × SUM(qty)

  2. SKU別・理由別の構成(積み上げ棒):SKU Top20/その他

  3. T-sort時間帯稼働率(ヒートマップ):HOUR(started_at) × line の 稼働率(%)

  4. エラーコード構成(ドーナツ):error_code 別件数

  5. ドリルダウン表:選択SKU×日別の返品件数、選択ライン×時間帯の稼働/停止内訳

D. 注意・解釈(下部ノート)

  • データ更新:毎朝 8–9時台に自動更新(GASトリガー)

  • NULL/0の扱い:qty空値は暫定0(来週、NULL設計へ再検討)

  • 稼働率は暫定定義(running対down|error)。語彙追加時は自動反映


3) “共有してすぐ使える”テンプレ

  • ビュー切替:拠点→ライン→SKUの順にフィルタが連動(クロスフィルタON)

  • 比較ボタン:「前週」「前年同週」(Date range comparison をプリセット)

  • ワンクリック共有:権限は閲覧のみ、ダウンロードは管理者のみに限定

  • 注記スイッチ:運用メモ(DLQ件数/今朝の処理数)をフッターに表示・非表示


🧪 スモーク結果

  • 接続・描画とも体感1–2秒で反応(30日レンジ、数千行スケール)

  • フィルタ連動の齟齬なし(SKU→理由のドリルでもグラフ整合OK)

  • 稼働ヒートマップで**“早朝に特定ラインが薄い(稼働低下)”**を即発見。現場ヒアリングの良い叩き台に。


💡 作ってわかったこと

  • “1ページ完結”は正義:KPI→推移→構成→深掘りまで1画面で流れると、会議が早い。

  • 語彙の標準化が効く:T-sortのstatus語彙を先に決め、Looker側は式で吸収すると改修コストが小さい。

  • 暫定KPIでも前週比を置く“良い/悪い”を即言える。母数の連携後に精度を上げればよい。


🔭 明日の予定(Day 178|Week 11 最終日)

  • レビュー会(BNE/T-sort担当と30分):使い方レクチャ&“この1枚で足りる?”ヒアリング

  • 反映見込み(バックログ化)

    • ① 出荷母数の取り込み → 正式な返品率

    • ② ライン停止のトップ原因カード(error_code×時間帯)

    • ③ アラートしきい値(前週比↑↑/↓↓)→ Slack通知案

  • ダッシュボードの共有権限整備(チーム配布)


✍️ まとめ

Day 177は、“毎朝まわるデータ”を“毎朝読める1枚”に変換
KPI・推移・原因の最短ループをLooker Studioで実体化し、明日のレビューで運用の芯へ寄せていきます。


#100日チャレンジ #Week11 #Day177 #DX実験室
#BoxDataWeaver #BigQuery #LookerStudio #GoogleAppsScript
#データ可視化 #オペレーション最適化 #業務改善

いいなと思ったら応援しよう!