Facebook Lead Ads Connector を Facebook ページまたは広告アカウントに接続して、リードデータを Treasure Data にインポートできます。
- TD Toolbelt を含む Treasure Data の基本知識
- リード取得権限を持つ Facebook ページ/広告アカウント
- 認証された Treasure Data アカウントアクセス
最新の TD Toolbelt をインストールします。
enable_guess_schema 有効:
in:
type: facebook_leads
app_secret: app_secret
access_token: long-lived-access_token
id: 33056800448180
time_created: '2020-01-28T15:46:25+0000'
incremental: false
enable_guess_schema: true
out:
mode: appendenable_guess_schema 無効:
in:
type: facebook_leads
app_secret: app_secret
access_token: long-lived-access_token
id: 33056800448180
time_created: '2020-01-28T15:46:25+0000'
incremental: false
enable_guess_schema: false
form_fields:
- {name: ocupation, type: string}
- {name: last_name, type: string}
- {name: cell_Phone, type: string}
- {name: email, type: string}
- {name: name, type: string}
- {name: opt_in_marketing, type: boolean}
out:
mode: append設定キーと説明は以下の通りです:
| 設定キー | タイプ | 必須 | 説明 |
|---|---|---|---|
| type | string | yes | コネクタータイプ "facebook_leads" |
| app_secret | string | no | Facebook App Secret |
| access_token | string | yes | Facebook の長期有効アクセストークン。手順はこちらを参照 |
| ad_account_id | string | no | Facebook 広告アカウント ID |
| id | string | yes | リードデータは広告 ID またはフォーム ID でインポートできます。広告 ID とフォーム ID の取得方法の詳細については、付録を参照してください |
| time_created | string | no | この時刻から現在時刻までに送信されたリードデータをインポートします。このフィールドは ISO 8601 日時形式を受け付けます。例: 2020-01-01T00:00:00+0700 |
| incremental | boolean | no | 毎回新しいデータのみをインポートします。インクリメンタルの仕組みを参照 |
| form_fields | array | no | enable_guess_schema=false の場合に必須。Facebook リードフォームのフィールド名とそのデータタイプ |
| - name | string | yes | フォームフィールド名。リードのフォームフィールドの見つけ方については付録を参照 |
| - type | string | yes | フィールドのデータタイプ |
| - format | string | no | タイムスタンプ形式。例: %Y-%m-%dT%H:%M:%S%z |
| - skip_invalid_records | boolean | no | 無効なリードデータをスキップして、他のデータのインポートを続行します。選択しない場合、無効なデータが検出されるとジョブが失敗します |
利用可能な out モードの詳細については、付録を参照してください。
connector:guess を使用します。このコマンドは、ターゲットデータを自動的に読み取り、データ形式をインテリジェントに推測します。
$ td connector:guess seed.yml -o load.ymlload.yml ファイルを開くと、列名、データタイプ、形式を含む推測されたファイル形式定義が表示されます。
---
in:
type: facebook_leads
app_secret: app_secret
access_token: long-lived-access_token
id: 514618966066498
time_created: '2019-12-01T15:46:25+0000'
incremental: false
columns:
- {name: id, type: long}
- {name: created_time, type: timestamp, format: "%Y-%m-%dT%H:%M:%S%z"}
- {name: ad_id, type: string}
- {name: ad_name, type: string}
- {name: adset_id, type: string}
- {name: adset_name, type: string}
- {name: campaign_id, type: string}
- {name: campaign_name, type: string}
- {name: form_id, type: long}
- {name: platform, type: string}
- {name: is_organic, type: boolean}
- {name: name, type: string}
- {name: surname, type: string}
- {name: email, type: string}
out: {mode: append}
exec: {}
filters:
- from_value: {mode: upload_time}
to_column: {name: time}
type: add_timeその後、preview コマンドを使用してデータをプレビューできます。
td connector:preview load.ymlシステムが列タイプを予期せず検出した場合は、load.yml を直接変更して再度プレビューしてください。
データコネクタは、"boolean"、"long"、"double"、"string"、"timestamp" タイプの解析をサポートしています。
ロードジョブを送信します。データサイズに応じて数時間かかる場合があります。ユーザーは、データが保存されるデータベースとテーブルを指定する必要があります。
td connector:issue load.yml --database td_sample_db --table td_sample_table上記のコマンドは、すでに database(td_sample_db) と table(td_sample_table) を作成していることを前提としています。データベースまたはテーブルが TD に存在しない場合、このコマンドは成功しないため、手動でデータベースとテーブルを作成するか、次を使用してください:
-auto-create-table
td connector:issue コマンドでこのオプションを使用すると、データベースとテーブルが自動的に作成されます:
td connector:issue load.yml --database td_sample_db --table td_sample_table --time-column created_at --auto-create-table"--time-column" オプションで、時刻形式列を「パーティショニングキー」に割り当てることができます。
定期的なリードインポートのために、定期的なデータコネクタの実行をスケジュールできます。高可用性を確保するためにスケジューラーを慎重に設定しています。この機能を使用することで、ローカルデータセンターで cron デーモンを実行する必要がなくなります。
td connector:create コマンドを使用して新しいスケジュールを作成できます。スケジュール名、cron 形式のスケジュール、データが保存されるデータベースとテーブル、およびデータコネクタ設定ファイルが必要です。
$ td connector:create \
daily_leads_import \
"10 0 * * *" \
td_sample_db \
td_sample_table \
load.ymlcron パラメータは、@hourly、@daily、@monthly の 3 つの特殊オプションも受け付けます。
incremental オプションを true に設定することで、レコードを増分的にロードできます。
in:
type: facebook_leads
app_secret: app_secret
access_token: long-lived-access_token
id: 33056800448180
time_created: '2020-01-28T15:46:25+0000'
incremental: true
out:
mode: appendスケジュール実行を使用している場合、コネクタは最後のインポート時刻 time_created 値を自動的に保存し、内部で保持します。その後、次のスケジュール実行時に使用されます。
in:
type: facebook_leads
...
out:
...
Config Diff
---
in:
time_created: '2020-02-02T15:46:25Z'td connector:list でスケジュールされたエントリーのリストを確認できます。
td connector:listこのコネクタにはどの Facebook アプリのスコープまたは権限が必要ですか?
以下の権限が必要です:
- public_profile
- leads_retrieval
- pages_manage_ads、pages_manage_metadata、pages_read_engagement、pages_read_user_content (フォーム ID でインポートする場合)
- ads_management (広告 ID でインポートする場合)
incremental: true が設定されている場合、このコネクタは time_created が設定されている場合は time_created 以降に作成されたすべてのレコードをロードし、time_created が設定されていない場合は現在時刻まで利用可能なすべてのデータをインポートします。次のジョブ実行では、最後のジョブ実行以降に作成されたレコードのみがインポートされます。このモードは、前回のスケジュール実行以降に作成されたリードのみを取得したい場合に便利です。
たとえば、最初のジョブ実行で次のように設定を指定したとします:
in:
...
time_created: '2020-01-28T15:46:25+0000'
incremental: trueバルクデータロードが正常に完了すると、time_created: パラメータが出力されます。例: '2020-02-02T15:46:25+0000' が config-diff として出力され、次回の実行で使用されます。 次の実行時に、time_created: も設定されている場合、このプラグインは config-diff からの time_created を使用し、元の値を無視します。新しいジョブ設定は次のように実行されます:
in:
...
time_created: '2020-02-02T15:46:25+0000'
incremental: trueこのようにして、ジョブが実行されるたびに、新しいレコードのみがインポートされます。
広告アカウントレベルのリードインポート (ad_account_id を設定することによる) の場合、リード広告 ID のリストとその最新の time_created が、次のジョブ実行のために config-diff として保存されます。例:
in:
...
incremental: true
list_time_created: {
'23845900031': '2020-11-01T02:46:45Z',
'23845899651': '2020-11-02T21:25:33Z',
'23846121121': '2020-11-30T05:21:03Z',
'23845899651': '2020-11-01T12:39:53Z',
'23845900031': '2020-11-02T04:13:19Z',
'23845899651': '2020-11-04T01:39:58Z'
}