troccoのカスタム変数ループ実行による広告データ転送設定共通化

この記事は[trocco® Advent Calendar 2023](https://qiita.com/advent-calendar/2023/trocco)の12日目の記事です。

# はじめに

今回の記事では、私がこれまで十分に活用できていなかった機能の一つ、「カスタム変数ループ実行」に焦点を当て、実際に試してみることにしました。

具体的な試みとしては、
troccoのドキュメントに記載されている具体的なユースケースに沿って進めます。`転送元広告系コネクタから、複数のアカウントIDのデータをまとめて転送する`というユースケースを試してみます。

# 完成イメージ

1つの転送設定でアカウント3つのデータを抽出し、アカウントごとのデータセットにINSERTするまでを行います。

![無題の図形描画 (37).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/a7a7e5e0-5f18-3673-6173-05fc863557bd.jpeg)

https://documents.trocco.io/docs/loop-using-custom-variables#%E6%A6%82%E8%A6%81

# この記事で書かないこと

- Google 広告データのアカウント発行
- BigQuery周辺の設定

# データ転送設定

## Google Ads：接続先情報の登録


接続先設定については、以下の記事を参照してください。
今回は1個の接続先情報で複数の広告データにアクセスするので、
複数の広告にアクセス可能なアカウントで接続先情報を作成してください。

https://documents.trocco.io/docs/connection-configuration-google-ads

## Google BigQuery：接続先情報の登録


接続先設定については、以下の記事を参照してください。

https://documents.trocco.io/docs/connection-configuration-bigquery

## 転送設定の新規作成

転送元：Google Ads
転送先：BigQuery

を選択しました。

![スクリーンショット 2023-12-11 21.16.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/618868e2-ac07-46f0-336d-cad08d59b7cd.png)


## 転送元 Google Ads：設定

転送元の情報は以下のものを設定しました。

![転送設定編集-trocco.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/526f0947-2d18-58e7-752b-c4355ba1ae82.png)

![スクリーンショット 2023-12-11 21.54.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/4ea3cef5-8315-f5b6-701f-89e120da56ae.png)



![スクリーンショット 2023-12-11 21.25.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/c2aa3da9-84e9-9544-68a4-e632edf94971.png)

:::note
カスタム変数ループ実行時で
`$google_client_customer_id$`に複数の広告アカウントIDを設定し
データを取得します。
:::

|設定項目|値|
|---|---|
|Google Ads接続情報|複数広告データアクセス可能なGoogle Ads接続先情報 |
|カスタム変数： `$google_client_customer_id$`| ブランクで保存は不可能なので、1つアカウントをIDを登録 |
|カスタム変数： `$start_at$`| キューイング時、2日前、%Y-%m-%d、Asia/Toyko | 
|カスタム変数： `$end_at$`| キューイング時、1日後、%Y-%m-%d、Asia/Toyko | 
|お客様 ID| `$google_client_customer_id$`|
|リソースタイプ (レポート種別)|Ad (ad_group_ad)|
|データ取得期間：開始日|`$start_at$`|
|データ取得期間：終了日|`$end_at$`|

## 転送先 Google BigQuery：設定

![転送設定編集-trocco (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/0cbd7bc0-ab4b-a51c-c398-dbdcb57c77a0.png)

:::note
カスタム変数ループ実行時で
`$google_client_customer_id$`に複数の広告アカウントIDを設定し
BigQueryのデータセット名を設定します。
:::

|設定項目|値|
|---|---|
|Google BigQuery接続情報|広告データを連携するBigQuery接続情報 |
|カスタム変数： `$google_client_customer_id$`| ブランクで保存は不可能なので、1つアカウントをIDを登録 |
|データセット| `$google_client_customer_id$`|
|テーブル|google_ad_performance_reports|
|データセットの自動生成オプション|datasetを自動で作成する|
|転送モード|APPEND|

# ワークフロー設定

## trocco転送ジョブを配置

`ワークフロー`>`新規ワークフロー作成`をクリックし
ワークフロー名を入力し保存。

![スクリーンショット 2023-12-11 22.14.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/689d8aa0-57e1-bb01-c9c7-90cd22afe03f.png)

![ワークフロー詳細-Google-Adsテスト-trocco.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/86aa461d-6856-a51e-1e98-0a4a9c9168bc.png)

`フロー編集`をクリックして編集画面に行き、`trocco転送ジョブ`を配置し
今回作成して転送設定を選択します。


![ワークフロー定義編集-trocco.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/17968abb-6653-ab21-5ccc-3ebe1305e75f.png)


## カスタム変数ループ実行設定

配置した`trocco転送ジョブ`の3点リーダーをクリックし`編集（鉛筆マーク)`をクリック
![スクリーンショット 2023-12-11 22.17.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/5adf6d5f-a233-dd69-9431-ca78a79435d6.png)

![ワークフロー定義編集-trocco (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/14214607-86fb-a112-b0e4-fe5e2ef07f04.png)

:::note
転送元と転送先に同名のカスタム変数が設定されている場合は、同じ値で上書きされます。
:::

転送元と、転送先のカスタム変数を同一名で定義しているので
カスタム変数ループ実行でどちらかの値を設定すれば両方設定されます。

共通のカスタム変数を定義できると
「同一名の場合は上書き」という仕様を意識しなくても済むようになるかもしれません。


|設定項目|値|
|---|---|
|ループの種類| 文字列展開でループ |
|対象カスタム変数|`$google_client_customer_id$` |



# 実行結果

Google AdsのアカウントIDごとにデータセットが生成され、アカウントIDごとのデータが同一テーブル名で格納されました！

![BigQuery-–…-–-Google-Cloud-コンソール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/98c9ef4f-c4a7-5d10-d0f6-e64506161b61.png)


# 最後に

https://documents.trocco.io/docs/loop-using-custom-variables#%E8%BB%A2%E9%80%81%E5%85%83%E5%BA%83%E5%91%8A%E7%B3%BB%E3%82%B3%E3%83%8D%E3%82%AF%E3%82%BF%E3%81%8B%E3%82%89%E3%80%81%E8%A4%87%E6%95%B0%E3%81%AE%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88id%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E3%81%BE%E3%81%A8%E3%82%81%E3%81%A6%E8%BB%A2%E9%80%81%E3%81%99%E3%82%8B

troccoで試したユースケースの一つ、`転送元広告系コネクタから、複数のアカウントIDのデータをまとめて転送する`は、期待通りの結果をもたらしました。カスタム変数ループ実行は本当に優れた機能です！
この機能のおかげで、業務における転送設定の保守が格段にしやすくなりました。カスタム変数ループ実行を使いこなすことで、データ転送のプロセスをより効率的かつ柔軟に管理できるようになります。

カスタム変数ループ実行には、
`クエリ結果でループ`というループの種類も存在するので
今度検証してみようと思います！

![スクリーンショット 2023-12-11 22.35.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445600/ef13049f-cd0f-fc7f-a380-4df16fab5b76.png)