YouTube チャンネルのデータを BigQuery に読み込む
YouTube チャンネル用 BigQuery Data Transfer Service コネクタを使用して、YouTube チャンネルから BigQuery にデータを読み込むことができます。BigQuery Data Transfer Service を使用すると、YouTube チャンネルから BigQuery に最新のデータを追加する定期的な転送ジョブのスケジュールを設定できます。
コネクタの概要
YouTube チャンネル用 BigQuery Data Transfer Service コネクタでは、データ転送に次のオプションがサポートされています。
データ転送オプション | サポート |
---|---|
サポートされるレポート | YouTube チャンネル コネクタは、チャンネル レポートからのデータ転送をサポートしています。 YouTube チャンネル コネクタは、2018 年 6 月 18 日の API バージョンをサポートしています。 YouTube チャンネル レポートが BigQuery のテーブルとビューに変換される仕組みについては、YouTube チャンネル レポートの変換をご覧ください。 |
繰り返しの頻度 | YouTube チャンネル コネクタは、毎日のデータ転送をサポートしています。 デフォルトでは、データ転送はデータ転送の作成時にスケジュールされます。データ転送の時間は、データ転送を設定するときに構成できます。 |
更新ウィンドウ | YouTube チャンネル コネクタは、データ転送の実行時に最大 1 日分の YouTube チャンネル データを取得します。 詳しくは、ウィンドウを更新するをご覧ください。 |
バックフィル データの可用性 | データ バックフィルを実行して、スケジュールされたデータ転送以外のデータを取得します。データソースのデータ保持ポリシーで許可されている限り、データを取得できます。 過去のデータを含む YouTube レポートは、生成後 30 日間利用できます。(履歴データ以外のデータを含むレポートは、60 日間利用できます)。詳細については、履歴データをご覧ください。 |
YouTube チャンネル転送によるデータ取り込み
YouTube チャンネルから BigQuery にデータを転送すると、データは日付でパーティション分割された BigQuery テーブルに読み込まれます。データが読み込まれるテーブル パーティションは、データソースの日付に対応します。同じ日付の複数の転送をスケジュールすると、BigQuery Data Transfer Service により、対象の日付のパーティションが最新のデータで上書きされます。同じ日に複数回の転送やバックフィルを実行しても、データは重複せず、他の日付のパーティションに対する影響はありません。更新ウィンドウ
更新ウィンドウとは、データ転送が行われたときにデータ転送でデータが取得される日数です。たとえば、更新ウィンドウが 3 日であり、毎日転送が行われる場合、BigQuery Data Transfer Service は過去 3 日間のソーステーブルからすべてのデータを取得します。この例では、毎日転送が発生すると、BigQuery Data Transfer Service は、当日のソーステーブルのデータのコピーを含む新しい BigQuery 宛先テーブル パーティションを作成し、バックフィル実行を自動的にトリガーして、過去 2 日間のソーステーブルのデータで BigQuery 宛先テーブル パーティションを更新します。自動トリガーされたバックフィル実行は、BigQuery Data Transfer Service コネクタで増分更新がサポートされているかどうかに応じて、BigQuery の宛先テーブルを上書きするか、増分更新します。
データ転送を初めて実行する際に、更新ウィンドウ内で利用可能なすべてのソースデータを取得します。たとえば、更新ウィンドウが 3 日で、データ転送を初めて実行する際は、BigQuery Data Transfer Service によって 3 日以内のすべてのソースデータが取得されます。
更新ウィンドウの期間外のデータ(過去のデータなど)を取得する場合や、転送の停止やギャップからデータを復元する場合は、バックフィル実行を開始またはスケジュールできます。
制限事項
- 各レポートでサポートされている最大ファイルサイズは 1,710 GB です。
- データ転送をスケジュールできる最短の頻度は 24 時間に 1 回です。デフォルトでは、転送を作成したときにデータ転送が開始されます。ただし、転送を構成するときに、データ転送の開始時間を構成できます。
- BigQuery Data Transfer Service は、YouTube コンテンツ所有者の転送中の増分データの転送をサポートしていません。データ移転の日付を指定すると、その日付で使用できるすべてのデータが転送されます。
- フェデレーション ID でログインしている場合は、YouTube チャンネル データ転送を作成できません。YouTube チャンネル転送を作成できるのは、Google アカウントでログインしている場合のみです。
始める前に
YouTube チャンネル データ転送を作成する前に、以下を行います。
- BigQuery Data Transfer Service を有効にするために必要なすべての操作が完了していることを確認します。
- YouTube データを格納する BigQuery データセットを作成します。
必要な権限
次の権限が付与されていることを確認します。
必要な BigQuery のロール
BigQuery Data Transfer Service データ転送の作成に必要な権限を取得するには、プロジェクトに対する BigQuery 管理者 (roles/bigquery.admin
)IAM ロールを付与するよう管理者に依頼します。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
この事前定義ロールには、BigQuery Data Transfer Service のデータ転送の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
BigQuery Data Transfer Service データ転送を作成するには、次の権限が必要です。
-
BigQuery Data Transfer Service の権限:
-
bigquery.transfers.update
-
bigquery.transfers.get
-
-
BigQuery の権限:
-
bigquery.datasets.get
-
bigquery.datasets.getIamPolicy
-
bigquery.datasets.update
-
bigquery.datasets.setIamPolicy
-
bigquery.jobs.create
-
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
詳細については、bigquery.admin
へのアクセス権を付与するをご覧ください。
必要な YouTube チャンネルのロール
YouTube チャンネルの所有権を持っている必要があります。
YouTube チャンネル転送を設定する
YouTube チャンネル データ転送を設定するには以下が必要です。
- テーブル サフィックス: データ転送を設定するときにユーザーが指定するユーザー フレンドリーなチャンネル名です。サフィックスがジョブ ID に追加され、テーブル名が作成されます(例: reportTypeId_suffix)。このサフィックスは、別の転送によって同じテーブルへの書き込みが行われないようにするために使用されます。テーブル サフィックスは、同じデータセットにデータを読み込むすべての転送で一意にする必要があり、また、生成されるテーブル名の長さを抑えるために短くする必要があります。
YouTube Reporting API を使用しており、既存のレポート作成ジョブが存在する場合は、BigQuery Data Transfer Service によってユーザーのレポートデータが読み込まれます。既存のレポート作成ジョブがない場合は、転送を設定すると、YouTube レポート作成ジョブが自動的に有効になります。
YouTube チャンネル データ転送を作成するには:
コンソール
Google Cloud コンソールの [データ転送] ページに移動します。
[
転送を作成] をクリックします。[転送の作成] ページで、次の操作を行います。
[ソースタイプ] セクションの [ソース] で、[YouTube チャンネル] を選択します。
[転送構成名] セクションの [表示名] に、データ転送の名前(例:
My Transfer
)を入力します。転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。[スケジュール オプション] セクションで:
- [繰り返しの頻度] で、データ転送を実行する頻度のオプションを選択します。[日数] を選択した場合は、有効な時刻を UTC で入力します。
- 必要に応じて、[すぐに開始] を選択するか、[設定した時刻に開始] を選択して開始日と実行時間を指定します。
[転送先の設定] セクションの [宛先データセット] で、データを保存するために作成したデータセットを選択します。
[データソースの詳細] セクションで、次の操作を行います。
- [テーブル サフィックス] に、サフィックス(例:
MT
)を入力します。 - BigQuery に YouTube レポート作成ジョブの管理を許可するには、[ジョブを構成する] チェックボックスをオンにします。まだアカウントに存在しない YouTube レポートがある場合は、新しいレポート作成ジョブが作成されて対象のレポートが有効になります。
- [テーブル サフィックス] に、サフィックス(例:
(省略可)[通知オプション] セクションで、次の操作を行います。
[保存] をクリックします。
bq
bq mk
コマンドを入力して、転送作成フラグ --transfer_config
を構成します。次のフラグも必要です。
--data_source
--target_dataset
--display_name
--params
bq mk \ --transfer_config \ --project_id=project_id \ --target_dataset=dataset \ --display_name=name \ --params='parameters' \ --data_source=data_source
ここで
- project_id は、プロジェクト ID です。
- dataset は、転送構成の抽出先データセットです。
- name は、転送構成の表示名です。データ転送名には、後で修正が必要になった場合に識別できる任意の名前を使用できます。
- parameters には、作成される転送構成のパラメータを JSON 形式で指定します。例:
--params='{"param":"param_value"}'
。YouTube チャンネルのデータ転送では、table_suffix
パラメータを指定する必要があります。必要に応じて、configure_jobs
パラメータをtrue
に設定して、BigQuery Data Transfer Service に YouTube のレポート作成ジョブの管理を許可します。ユーザーのチャンネルに存在しない YouTube レポートがある場合は、新しいレポート作成ジョブが作成され、そのレポートを使用可能にします。 - data_source は、データソース(
youtube_channel
)です。
--project_id
フラグを指定して、特定のプロジェクトを指定することもできます。--project_id
を指定しない場合は、デフォルトのプロジェクトが使用されます。
たとえば、次のコマンドは、テーブル サフィックス MT
とターゲット データセット mydataset
を使用して、My Transfer
という名前の YouTube チャンネル データ転送を作成します。このデータ転送はデフォルトのプロジェクトで作成されます。
bq mk \
--transfer_config \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"table_suffix":"MT","configure_jobs":"true"}' \
--data_source=youtube_channel
API
projects.locations.transferConfigs.create
メソッドを使用して、TransferConfig
リソースのインスタンスを指定します。
Java
このサンプルを試す前に、クライアント ライブラリを使用した BigQuery クイックスタートにある Java の設定手順を完了してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証情報を設定するをご覧ください。
データに対するクエリを実行する
データが BigQuery に転送されると、取り込み時間パーティション分割テーブルにそのデータが書き込まれます。詳細については、パーティション分割テーブルの概要をご覧ください。
自動生成されたビューを使用せずに、テーブルでクエリを直接実行する場合は、そのクエリで _PARTITIONTIME
疑似列を使用する必要があります。詳細については、パーティション分割テーブルのクエリをご覧ください。
YouTube チャンネル転送の設定に関するトラブルシューティング
データ転送を設定する際に問題が発生した場合は、転送構成のトラブルシューティングにある YouTube の転送に関する問題をご覧ください。