# Google Search Analytics Import Integration Google Search Analyticsのデータを Treasure Data にインポートできます。ページ、クエリ、国、デバイスなどのディメンションでデータをフィルタリングおよびグループ化できます。定期的にデータをインポートするスケジュールを指定できます。 ## 前提条件 - Treasure Data の基本知識 - Google Search Analytics の基本知識 - Google Search Console アカウント ## TD Console を使用して接続を作成する ### 新しい接続を作成する データ接続を設定する際、統合にアクセスするための認証を提供します。Treasure Data では、認証を設定してからソース情報を指定します。 **Integrations Hub** > **Catalog** に移動し、**Google Search Analytics** を検索して選択します。 ![](/assets/image-20191015-200309.48f84de493cfdd1fe6f1d418c13e8f3c4d0ddf1106d5a4a89d5a652d2a6905ff.42487ed6.png) 次のダイアログが開きます ![](/assets/image2022-6-28_13-7-34.5c71f6b6118e6d94fd92ae88cafda7ea757a9c0238784437b2091d8291d74c27.42487ed6.png) Treasure Data Google Search Analytics へのアクセスには OAuth2 認証が必要です。この認証では、ユーザーが手動で Treasure Data アカウントを各自の Google Search Analytics アカウントに接続する必要があります。 認証を行うには、次の手順を実行します。 **Click here** を選択して新しいアカウントに接続します。 ポップアップウィンドウで Google アカウントにログインし、Treasure Data Connector アプリへのアクセスを許可します。 ![](/assets/image-20191015-200419.47117e007e3e9f4f8029646f0a0135a055da9ec99d82e71a55b1c4e32771e1c8.42487ed6.png) TD Console にリダイレクトされます。最初のステップ(新しい接続の作成)を繰り返し、新しい OAuth 接続を選択します。 ![](/assets/image-20191015-200450.0aea32d50604bbbde24a9da78b4bd76336085d9b07a6973a4c42183c98b3336e.42487ed6.png) 新しい OneDrive 接続に名前を付けます。**Done** を選択します。 ![](/assets/image-20191015-200509.351aa46fd8d7067cb46dd2fe2862798b83aace0bde114e364b7ecae185c15c47.42487ed6.png) ### Google Search Analytics データを Treasure Data に転送する **Authentications** で、**New Source** を設定します。 ![](/assets/image-20191015-200546.a70e7ee761b092650bd62dff6aa8813ba142a37c91b75936fa1534ef1e2f0749.42487ed6.png) 詳細を入力し、**Next** を選択します。 ![](/assets/image-20191015-200608.4a46f4ed111cb68f21ccb77ee35a34e253d49822e2ec746096e30c5afb823d26.42487ed6.png) ### パラメータ **Site URL** Google Search Console で追跡されるプロパティ。Google はプロトコル(http:// または https://)、ドメイン、サブドメイン(例: example.com、m.example.com、www.example.com)を異なるものとして認識するため、データを取得したいドメイン、サブドメイン、またはパスブランチの正確な URL を入力する必要があります。 ドメインプロパティを使用する場合は、ドメインを指定する際に次の形式を使用します: sc-domain:example.com。 **Group by Dimension** インポートするデータを 1 つ以上のディメンションでグループ化できます。サポートされているディメンションは、Page、Country、Device、Query、Search Appearance です。 Search Appearance を他の **Dimensions** とグループ化することはできません。有効なディメンショングループの例: Page、Country、Device。 選択したディメンションの数は、出力スキーマに影響します。例えば、ディメンション Country、Device、Query が選択された場合、インポートには Country、Device、Query のカラムが含まれます。 ``` +----------------+---------------------+---------------+--------------+--------------------+------------+-----------------+----------------------------------+ | country:string | query:string | device:string | click:double | impressions:double | ctr:double | position:double | response_aggregation_type:string | +----------------+---------------------+---------------+--------------+--------------------+------------+-----------------+----------------------------------+ | usa | a sample data | DESKTOP | 3.0 | 8.0 | 0.375 | 1.25 | byProperty | | usa | a sample data | MOBILE | 3.0 | 5.0 | 0.6 | 1.0 | byProperty | | twn | a sample data japan | TABLET | 2.0 | 2.0 | 1.0 | 1.0 | byProperty | +----------------+---------------------+---------------+--------------+--------------------+------------+-----------------+----------------------------------+ ``` **Filter by Dimension** 複数のカテゴリでデータをフィルタリングできます。例えば、現在クエリでデータをグループ化している場合、「query contains 'treasure data'」というフィルタを追加できます。 Google Search Analytics は現在「AND」演算子のみをサポートしています。そのため、「Country equals'USA'」AND「Device equals'Mobile'」AND「Query contains 'sample data'」のようなフィルタはデータを返しますが、「Country equals'USA'」AND「Country equals 'JPN'」AND「query contains 'sample data'」はデータを返しません。 **Search Type** 検索タイプで分析データをフィルタリングします。サポートされている値: Web、Image、Video。デフォルトでは Web が選択されます。選択された値は、search_type カラムの下の出力スキーマに含まれます。 **Start Date and End Date** 要求された日付範囲、**Start Date** と **End Date** は必須です。YYYY-MM-DD 形式で指定します。**End Date** は **Start Date** 以上である必要があります。値は包括的です: **Start Date** の開始時刻(**Start Date** の 00:00:00)から **End Date** の終了時刻(**End Date** の 23:59:59)までです。特定の日にインポートする場合は、**Start Date** を **End Date** と等しく設定します。例: Start Date = 2018-06-11、End Date = 2018-06-11。 データは **Start Date** と **End Date** によって集約されます。日付範囲を 1 日より長く設定すると、クリック、ctr、インプレッション、ポジションの値は、指定された日付範囲内の個別の日の合計になります。 結果のデータは PST 時間(UTC-8:00)です。 データには 2~3 日の遅延がある可能性があり、Google Search Console でデータが利用可能になるまで待機します。ベストプラクティスとして、データが利用可能な日付よりも大きい End Date を設定しないでください。 **Incremental Loading** Incremental Loading を有効にすることで、ジョブを反復的に実行するようにスケジュールできます。ジョブ実行の次の反復は、**Start Date** と **End Date** の値から計算されます。 次は `single day` と `multiple days` の時間範囲の次の反復の例です: Single-day range | **Jobs** | **Start Date** | **End Date** | | --- | --- | --- | | First run | 2018-01-01 | 2018-01-01 | | Second run | 2018-01-02 | 2018-01-02 | | Third run | 2018-01-03 | 2018-01-03 | 1 Week range | **Jobs** | **Start Date** | **End Date** | | --- | --- | --- | | First run | 2018-01-01 | 2018-01-07 | | Second run | 2018-01-08 | 2018-01-15 | | Third run | 2018-01-16 | 2018-01-23 | ### プレビューと詳細設定 次のダイアログのようなデータのプレビューが表示されます。[Preview](https://docs.treasuredata.com/smart/project-product-documentation/about-data-preview) の詳細をご覧ください。 ![](/assets/image-20191015-201040.3667e6d96665f9ff79e3415e24da1b46cacd4b1892a388f6e6ae5a5a9ee96760.42487ed6.png) **Advanced Settings** を選択して、データコネクタの動作をカスタマイズします。 ![](/assets/image-20191015-201106.820465a186af0c74df2c8f22f82b3e9f7c404de36c20a96030d656b112a825b8.42487ed6.png) **Include Report Duration** Include Report Duration オプションは出力スキーマに影響します。チェックボックスが選択されている場合(デフォルト)、インポートジョブの結果には 2 つの追加カラム(**Start Date** と **End Date**、タイプは string)が含まれます。次の例のように表示されます: ``` +--------------------------+--------------+--------------------+--------------------+--------------------+------------------+-----------------+ | query:string | click:double | impressions:double | ctr:double | position:double |start_date:string | end_date:string | +--------------------------+--------------+--------------------+--------------------+--------------------+------------------+-----------------+ | a sample data | 11.0 | 35.0 | 0.3142857142857143 | 1.342857142857143 | 2018-05-05 | 2018-05-05 | | a sampledata | 3.0 | 8.0 | 0.375 | 1.625 | 2018-05-05 | 2018-05-05 | | a sample data japan | 2.0 | 2.0 | 1.0 | 1.0 | 2018-05-05 | 2018-05-05 | | cdp vs dmp | 1.0 | 3.0 | 0.3333333333333333 | 1.6666666666666665 | 2018-05-05 | 2018-05-05 | | cmp vs dmp | 1.0 | 1.0 | 1.0 | 7.0 | 2018-05-05 | 2018-05-05 | | a sample treasure | 1.0 | 1.0 | 1.0 | 1.0 | 2018-05-05 | 2018-05-05 | | hive guide | 1.0 | 2.0 | 0.5 | 4.5 | 2018-05-05 | 2018-05-05 | | postgresql elasticcloud | 1.0 | 4.0 | 0.25 | 8.5 | 2018-05-05 | 2018-05-05 | | s3 elasticcloud | 1.0 | 1.0 | 1.0 | 11.0 | 2018-05-05 | 2018-05-05 | | a sample data | 1.0 | 1.0 | 1.0 | 1.0 | 2018-05-05 | 2018-05-05 | +--------------------------+--------------+--------------------+--------------------+--------------------+------------------+-----------------+ ``` **Retry Limit** Treasure Data へのデータインポート中には、ネットワークの変動や Google サーバーの同時実行制限など、プロセスに影響を与える多くの要因があります。コネクタは、指定した回数だけインポートを再試行します。 **Initial retry time wait in millis** コネクタは、インポートを再試行する前に、指定したミリ秒数だけ最初に待機します。次の再試行は 2 * initial retry time、というように続きます。 **Max retry wait in millis** 待機時間が指定した制限に達すると、コネクタは再試行を中止します。 ### ターゲットデータベースとテーブルを選択する 既存のデータベースとテーブルを選択するか、新しいデータベースとテーブルを作成します。 ![](/assets/image-20191015-201137.be4dec40a8bb8bd3b2b79ccb690a9a933fe392c27f5c6709e145b75deb0fb756.42487ed6.png) 新しいデータベースを作成し、データベースに名前を付けます。**Create new table** についても同様の手順を実行します。 既存のテーブルにレコードを **append** するか、既存のテーブルを **replace** するかを選択します。 デフォルトのキーではなく別の **partition key seed** を設定する場合は、ポップアップメニューを使用して指定できます。 ### スケジューリング **Schedule** タブでは、1 回限りの転送を指定するか、自動化された繰り返し転送をスケジュールできます。**Once now** を選択した場合は、**Start Transfer** を選択します。**Repeat…** を選択した場合は、スケジュールオプションを指定してから、**Schedule Transfer** を選択します。 ![](/assets/image-20191015-201205.983f09199d83c5306c57d8699e92d18da879985d03b9171e88d6374694ebff84.42487ed6.png) New Source 名を入力し、**Done** を選択します。 ## CLI を使用する ### 'td' コマンドをインストールする [Treasure Data Toolbelt](https://toolbelt.treasuredata.com/) をインストールします。 ### 必要な Google API 認証情報を取得する 'td' コマンドのコネクタ設定には以下が必要です: ``` * client_id * client_secret * refresh_token ``` これらのパラメータは次の手順で取得できます: ### client_id、client secret を取得する すでに OAuth 2 を設定し、Google Search Console APIs アクセスを有効にし、client ID と client secret を持っている場合は、このステップをスキップできます。 client ID と client secret を取得するには、開発者向け Google Search Console APIs の手順に従ってください: [https://developers.google.com/webmaster-tools/search-console-api-original/v3/how-tos/authorizing](https://developers.google.com/webmaster-tools/search-console-api-original/v3/how-tos/authorizing) また、[Google Search Console API Wizard](https://console.developers.google.com/flows/enableapi?apiid=webmasters.googleapis.com) を使用することもできます。これにより、プロジェクトをすばやく作成し、Google Search Console API をオンにすることができます。Credentials > Create Credentials > OAuth ClientID > Web Application に移動します。名前を入力して **Create** を選択します。次の画面に client ID と client secret が表示されます。 ### refresh_token を取得する 取得する必要がある残りの認証情報は refresh token です。refresh token を取得する 1 つの方法は、Google OAuth 2.0 Playground を使用することです。こちらで利用できます: [Google OAuth 2.0 Playground](https://developers.google.com/oauthplayground/) まず、OAuth 2.0 Playground 内で、右上隅の歯車アイコンを選択し、Use your own OAuth credentials チェックボックスを選択してください。OAuth `Client ID` と OAuth `Client secret` に、API コンソールから取得した認証情報を挿入します。 ステップ 1 で、**Search Console API v3** を選択します。次に "[*https://www.googleapis.com/auth/webmasters.readonly*](https://www.googleapis.com/auth/webmasters.readonly)" を選択し、"**Authorize APIs**" を選択して、指示に従って Search Console API から Google Search Console アカウントへのアクセスを許可します。 ステップ 2 で、Exchange authorization code for tokens を選択すると、Refresh Token と Access Token フィールドが入力されます。refresh token フィールドの値が、次のステップでコネクタ設定を準備するために使用されます。 ### 設定を準備してデータをプレビューする 次のように config.yml を準備します: ```yaml in: type: "google_search_analytics" client_id: "[Your Client ID]" client_secret: "[Your Client Secret]" refresh_token: "[Your Refresh Token]" site_url: "[Your tracked site]" dimensions: ["query"] filters: - { "dimension": "query", "operator": "equals", "expression": "a sample" } search_type: web start_date: "2018-06-01" end_date: "2018-06-01" include_report_period: false out: mode: append filters: - { type: "add_time", to_column: {"name": "time"}, from_value: {"mode": "upload_time"} } ``` 利用可能な **out** モードの詳細については、**Appendix A** を参照してください **filters** の詳細については、**Appendix B** を参照してください その後、preview コマンドを使用してデータのプレビューを表示できます。 ``` $ td connector:preview config.yml ``` Google Search Analytics コネクタでは td connector:guess を実行する必要はありません。 ### ロードジョブを実行する ロードジョブを送信します。データのサイズによっては、処理に数時間かかる場合があります。 ``` $ td connector:issue config.yml --database td_sample_db --table td_sample_table ``` ### スケジュール実行 Search Analytics データの増分インポートのために、定期的なデータコネクタ実行をスケジュールできます。 スケジュールされたインポートの場合、最初の実行時に、Search Analytics 用 Data Connector は "start_date" と "end_date" で指定されたすべてのデータをインポートします。 2 回目以降の実行では、コネクタは前回のロードよりも新しいデータのみをインポートします。 ### スケジュールを作成する td connector:create コマンドを使用してスケジュールを作成できます。次の項目が必要です: スケジュールの名前、cron 形式のスケジュール、データが保存されるデータベースとテーブル、データコネクタ設定ファイル。 ``` $ td connector:create \ daily_import \ "10 0 * * *" \ td_sample_db \ td_sample_table \ config.yml ``` `cron` パラメータは、3 つの特別なオプション `@hourly`、`@daily`、`@monthly` も受け付けます。| デフォルトでは、スケジュールは UTC タイムゾーンで設定されます。-t または --timezone オプションを使用して、タイムゾーンでスケジュールを設定できます。`--timezone` オプションは、'Asia/Tokyo'、'America/Los_Angeles' などの拡張タイムゾーン形式のみをサポートしています。PST、CST などのタイムゾーンの略語は*サポートされておらず*、予期しないスケジュールになる可能性があります。 ### すべてのスケジュールをリストする td connector:list コマンドで、現在のすべてのスケジュールエントリのリストを確認できます。 ``` $ td connector:list ``` ### スケジュール設定と履歴を表示する td connector:show は、スケジュールエントリの実行設定を表示します。 ``` $ td connector:show daily_import ``` td connector:history は、スケジュールエントリの実行履歴を表示します。個々の実行の結果を調査するには、td job jobid を使用します。 ```bash $ td connector:history daily_import ``` ### スケジュールを削除する td connector:delete は、スケジュールを削除します。 ``` $ td connector:delete daily_import ``` ### 設定 次の表は、モードで利用可能なオプションの詳細を示しています。 | **Option name** | **Description** | **Type** | **Required?** | **Default Value** | | --- | --- | --- | --- | --- | | **client_id** | アプリ client id | string | yes | | | **client_secret** | アプリ client secret | string | yes | | | **refresh_token** | アプリ refresh token | string | yes | | | **site_url** | 追跡するサイト URL | string | yes | | | **dimensions** | 結果をグループ化する search analytics dimension | enum | optional | | | **filters** | ディメンションでフィルタリング | enum | optional | | | **search_type** | 検索タイプでフィルタリング。web、image、video | string | optional | web | | **start_date** | リクエスト日付範囲の開始日 | string | yes | | | **end_date** | リクエスト日付範囲の終了日 | string | yes | | | **incremental** | スケジュールインポート用の次の start_date と end_date を生成 | bool | optional | true | | **include_report_period** | 出力結果に start_date と end_date を含めるかどうかを指定 | bool | optional | true | | **retry_limit** | 再試行可能なエラーが発生したときに諦める回数 | integer | optional | 7 (times) | | **retry_initial_wait_millis** | 再試行可能なエラーが発生したときの初期待機時間。次の値は前の値の 2 倍になります | integer | optional | 15000 (15 seconds) | | **max_retry_wait_millis** | 各再試行の最大待機時間 | integer | optional | 1800000 (30 minutes) | ## Appendix ### Out Plugin のモード config.yml の out セクションで mode を指定することにより、新しいデータを Treasure data にインポートする方法を指定できます。 ### append (default) これはデフォルトのモードで、レコードはターゲットテーブルに追加されます。 ``` in: ... out: mode: append ``` ### replace (td 0.11.10 以降) このモードは、ターゲットテーブルのデータを置き換えます。ターゲットテーブルに対して行われた手動のスキーマ変更は、このモードでもそのまま維持されます。 ``` in: ... out: mode: replace ``` ## add_time Filter Data Connector 用の add_time フィルタプラグインを使用すると、スキーマ内の既存の別のカラムから値をコピーするか、値を指定することにより、スキーマに新しい時間ベースのカラムを追加できます。詳細については、[add_time Filter Plugin for Integrations](https://docs.treasuredata.com/smart/project-product-documentation/add_time-filter-function) のドキュメントを参照してください。 ## Dimensions - Page - Country - Device - Query - Search Appearance ## Supported Filter Operators - Contains - Equals - NotContains - NotEquals ## Added New Column バージョン v0.1.4 から、Search Type フィルタをサポートしているため、新しいカラム名 search_type がジョブ結果に追加されます。ジョブ設定を変更しない場合、デフォルト値は "web" です。