本記事は以下 @pokoyakazanさんの記事とのコラボとなります。
具体的な連携方法については上記記事をご覧ください!
1.初めに
こんにちは!
AI・アナリティクス本部 ビジネスアナリティクス部データサイエンスブロックの橘です。
普段は物流・カスタマーサポート・決済周り・EC施策周りの効果検証や事前シミュレーションを通してビジネス判断のサポートをしています。
昨年から、niaulab TV by ZOZOの分析周りに携わっており、手始めとして分析用にBQ連携を行いデータを蓄積できるように整備を進めています。その中で色々触って分かったことを共有します。
※事業的な話や分析をして何が分かったか?というのは今回割愛し、データをBQ連携して分かったことについて記載します。
※連携の具体的なジョブについては今後のAdvent Calendar内で公開予定です!
※最近、大人の似合うラボTVbyZOZOとして2つ目のチャンネルを公開しました!(宣伝)
2.YouTube Studioでできること
おさらいとして、YouTube Studio単体で何ができるのか?をさらっとご紹介します。
以下は代表的なものです。
- 動画ごとの基本指標の閲覧
- 視聴者数
- 再生回数 etc.
- 時間軸分析
- 日別・週別・月別の推移
- 主要なトラフィックソースの分析
- どこから見られているか?
- 視聴者属性の分析
- 誰がどのように見ているか
- 視聴行動の分析
- どこで離脱するか?
YouTube Studioダッシュボードのイメージです。
※niaulab TV by ZOZOのものは出せないので、趣味の個人チャンネルの画像を貼ります。

また、Advanced Mode(詳細モード)も用意されており、動画別の比較や複数軸での比較も可能です。

3.YouTube Studioの課題
YouTube Studio単体でも、日々の運用に必要な指標は一通りそろっています。
しかし、実際に動画コンテンツの成果を評価・分析しようとすると、次のような点が課題になりました。
①動画公開日からの経過日数別の評価ができない
固定期間(直近7日・28日・カスタム期間など)の実績は取得できますが、
各動画の公開日がバラバラなため、「公開後◯日目時点」でそろえた比較 ができません。
なので、本来は次のような評価も含めて判断したいところができない状態となっていました。
- 公開後1日・7日・30日で、どの動画がどれくらい伸びているか比較したい
- 動画ごとの「成長カーブ(どのくらいのスピードで伸びるか)」を比較したい
②見るタイミングによって値が変わり、同じ数字を再現しづらい
YouTube Studioでは、常に「その時点の最新値」が反映されるため、ざっくりした傾向をウォッチするには適していますが、レポーティングには不向きです。
例えば以下の場合にYouTube Studio単体だと対応しきれません。
- 月次報告時点で見ていた数字を、後からもう一度正確に確認したい
- 「あのタイミング(◯月◯日時点)ではどうだったか?」を再現したい
結果として、
- 月次報告用の数値を、ダッシュボード担当者が都度手作業やCSVエクスポートで控える必要がある
- 数字の把握が担当者に依存しやすく、レポーティングが属人的になりやすい
という運用上の課題にもつながります。
これらの課題を解決するために、YouTubeデータのBQ連携をすることにしました。
4.BQ連携してできるテーブル紹介
前置きが長くなったのですが、ここからが本題です。
BQ連携してできるテーブルの概要は以下にもあるのですが、実際によく使うテーブルについてご紹介します。
https://docs.cloud.google.com/bigquery/docs/youtube-channel-transformation?hl=ja
a.基本情報
- channnelとPlaylistのデータが連携される
- テーブルとビューができる
- 命名規則
- テーブルは:p_hoge_fuga_ax_suffix
- ビューは:hoge_fuga_ax_suffix
- 日×video_id単位のテーブル
- テーブルによって追加のディメンジョンがある
- demographics
- device_os
- traffic_source etc.
b.主要テーブル
以下、ビューの命名規則ベースで記載します。
テーブルの場合はp_をつけてください。
| テーブル名 | 代表的な指標 | コメント |
|---|---|---|
| channel_basic_a3_suffix | 再生数、視聴時間、コメント数、高評価、低評価、共有数、チャンネル登録者数 etc. | 基本指標はこのテーブルを使うことがほとんど |
| channel_traffic_source_a3_suffix | 再生数、視聴時間 | basicテーブルの一部をtraffic_sourceのディメンジョンで切ったもの |
| channel_demographics_a1_suffix | 視聴者割合 | basicテーブルの一部をdemographicsのディメンジョンで切ったもの |
3つ上げましたが、下の二つはbasicのテーブルから派生したものです。
分析時はbasicテーブルを使い、追加のディメンジョンで見たい場合に別のテーブルを補足的に見ることが多いです。
ただし、basicテーブルの全ての指標について追加のディメンジョンで切れるわけではないので、そこは当初の期待から下ぶれた部分になります。
5.ハマりポイントと小技紹介
実際に連携データを眺めてみてのハマりポイントと解決策についてご紹介します。
ハマりポイントは、主に動画に関するマスタテーブルがBQ連携テーブルとして存在しないことに起因するものでした。
①video_idと動画名の紐づけができない
BQ連携したテーブル内にはvideo_idしかなく、人が分かるようにするにはvideo_idと動画名のマスタテーブルを別で作る必要がありました。
解決策:YouTube oEmbed APIを使ってvideo_idから動画名を取得するGASを書いてスプシ上にマスタ作成
②動画ごとの公開日の紐づけができない
元々の集計モチベである「公開日からの経過日数」を取得するにあたって、テーブル内に動画の公開日時のカラムがありませんでした。
解決策:YouTube Data API v3を使ってvideo_idから公開日時を取得するGASを書いてスプシ上にマスタ作成
※API Keyが必要なので注意
③動画種別を判別できない
分析にあたり、Long動画・Short動画の判別を行う必要がありましたが、テーブル側には該当カラムがありませんでした。
解決策:engaged_views = viewsの動画がLong動画であることを実データから突き止めて、クエリ側で判定した。
解説:
Long動画の views は「ある程度視聴された場合にのみカウントされる」ため、
エンゲージメントを伴う視聴であるengaged_views と値が一致しやすいです。
一方、Short動画の views は Shorts フィードのスクロールなど「軽いトリガー」でも増えるため、engaged_views より viewsが大きくなりやすく、niaulab TV by ZOZOのコンテンツでは分類に利用できました。
※2025年12月15日現在、niaulab TV by ZOZOの動画コンテンツの範囲内において確認したものになります。
※views/engaged_views の関係はYouTubeの計測仕様が改訂されるたびに変わる可能性があります。そのため、他チャンネルで運用する場合は、一度データ分布を確認した上で分類ロジックを決めることをおすすめします。
5.さいごに
ZOZOではビジネスの意思決定にかかわる分析や、事業と並走して改善や提案を日々行っています。アナリティクス・データサイエンスチームの今後の情報発信にもご期待ください!
参考:これまでの情報発信