Skip to content
Last updated

Instagram User And Media Insights Import Integration

Instagram Businessを使用すると、Instagramのメディアオブジェクトやユーザーアカウントアクティビティに関するインサイトを取得できます。Treasure Dataのコネクタを使用して、InstagramインサイトデータをTreasure Dataに取り込むことができます。

  • email_contacts-day
  • follower_count-day
  • get_directions_clicks-day
  • impressions-day
  • impressions-days_28
  • impressions-week
  • online_followers-lifetime
  • phone_call_clicks-day
  • profile_views-day
  • reach-day
  • reach-days_28
  • reach-week
  • text_message_clicks-day
  • website_clicks-day
  • engaged_audience_demographics-lifetime
  • reached_audience_demographics-lifetime
  • follower_demographics-lifetime

メディアタイプ

  • media_all
  • story_metrics
  • carousel_album_metrics
  • photo_and_videos_metrics

Facebook Page IDの取得

Instagram BusinessアカウントにリンクされているFacebook Page IDを入力してください。ユーザーがInstagramアカウントを作成またはビジネスアカウントに変換する際、そのInstagramアカウントをFacebookページにリンクする必要があります。

拡張ユーザーアクセストークン

Facebookユーザーアクセストークンは、デフォルトでは短期間有効なアクセストークンです。

Treasure Dataプラットフォームでスケジュールジョブを実行するには、長期間有効なアクセストークンを取得してください:

  • Facebookツールを使用して長期間有効なユーザーアクセストークンを取得するには、こちらの記事の手順に従ってください
  • Facebook APIを使用して長期間有効なトークンを取得するには、こちらの手順に従ってください

TD Consoleを使用してジョブを実行する場合、コネクタはすでに長期間有効なアクセストークンを交換しています。

次の権限(スコープ)が必要です:

  • public_profile
  • email manage_pages
  • pages_show_list
  • instagram_basic
  • instagram_manage_insights
  • instagram_manage_comments
  • ads_management

TD Consoleを使用してConnectionを作成する

新しいAuthenticationの作成

データ接続を設定する際、統合にアクセスするための認証情報を提供します。Treasure Dataでは、認証を設定してからソース情報を指定します。

  1. TD Consoleを開きます。

  2. Integrations Hub > Catalogに移動します。

  3. Instagram User & Media Insightsを検索して選択します。

  4. Instagram Insights用の既存のOAuth connectionを選択するか、OAuth connection下のリンクをクリックして新しいものを作成します。

新しいOAuth connectionの作成

Instagram OAuthはFacebook OAuthを使用するため、Facebook OAuthページに移動します。

  1. Facebookアカウントにログインします:

  2. Continue asボタンを選択して、Treasure Dataアプリへのアクセスを許可します。

  3. Catalogページにリダイレクトされます。最初の手順(Create a new authentication) を繰り返し、新しいOAuth connectionを選択します。

  4. 新しいauthenticationに名前を付けます。Doneを選択します。

InstagramアカウントデータをTreasure Dataに転送する

認証済み接続を作成すると、自動的にAuthenticationsに移動します。

  1. 作成したconnectionを検索します。
  2. New Sourceを選択します。

Connection

  1. Connection ページが開きます。
  2. Data Transfer フィールドにソースの名前を入力します。

ソーステーブル

  1. Next を選択します。Source Table ページが開きます。
  2. ソーステーブルで以下のパラメータを編集します。

パラメータ説明
Facebook Page ID必須。Instagram Business アカウントにリンクされている Facebook ページ ID。
Data type必須。データタイプのいずれかを選択します
Userインサイトは、Instagram Business アカウントについて収集されるメトリクスです(impressions、follower_count*、website_clicks、audience_locale など)。
Mediaインサイトは、Instagram Business アカウントに投稿されたコンテンツから収集されるメトリクスです(engagement、impressions、reach、saved など)。
Commentsオーガニックな Instagram コメントを表します。
Media ListInstagram の写真、動画、ストーリー、アルバムを表します
Tags別の Instagram ユーザーによって IG User がタグ付けされた IG Media オブジェクトのコレクションを表します。
Start Date & End DateUser データタイプには必須。開始日と終了日は次の形式に従う必要があります:YYYY-MM-DD。例:2017-11-21 - Start Date は包含的で、End Date は排他的です。 - 指定されていない場合、終了日は Instagram Business Account Local Time の現在時刻がデフォルトになります。 - 指定されていない場合、開始日は終了日の 2 日前がデフォルトになります。デフォルトは Facebook API によって設定されます。 データは毎日の終わりに集計されるため、2017-01-01 のインサイトは end_time = 2017-01-02 00:00:00 になります。
Use Individual Metricsインポートするメトリクスデータを選択する場合に選択します。ドロップダウンには、選択したデータタイプのすべての個別メトリクスが一覧表示されます。複数のメトリクスを選択できます。 - Media メトリクスは [period: lifetime] のみをサポートします - User メトリクスは day、week、days_28、lifetime をサポートします。 - メトリクスのリスト(engaged_audience_demographics、reached_audience_demographics、follower_demographics)には、以下の追加設定が必要です: - breakdown: 複数の値を入力でき、カンマで区切ります。サポートされる値(age、country、city、gender) - metric_type: total_value を選択 - Timeframe: 期間の値を選択します。サポートされる値(last_14_days、last_30_days、last_90_days、prev_month、this_month、this_week)
Preset User Metricsデフォルトは Week metrics です。以下のプリセット User メトリクスから選択できます: - Week metrics [period: week] - Days 28 metrics [period: days_28] - Day metrics [period: day] - Lifetime metrics [period: lifetime]、増分インポートをサポートしません
Preset Media metricsデフォルトは All media metrics です。以下のプリセット Media メトリクスから選択できます: - All media metrics. すべての Media メトリクスは、Instagram アカウント内のすべてのコンテンツのメトリクスをインポートします - Story metrics. Instagram Story のメトリクスをインポートします - Carousel metrics. Instagram Carousel のメトリクスをインポートします - Photo and video metrics は Instagram の画像と動画のメトリクスのみをインポートします*
Import media metricsメトリクスが複数のメディアオブジェクト(例:IMAGE、VIDEO、STORY など)でサポートされている場合、それらすべてのメディアオブジェクトのメトリクス値がインポートされます。
Import user metricsUser メトリクスは day、week、days_28、lifetime をサポートします
Incremental Loading反復的に実行されるジョブをスケジュールできます。ジョブ実行の各反復は開始日と終了日の値に基づいて計算され、ギャップや重複なく毎回新しい値がインポートされます。 次の例では、開始日と終了日の間の 9 日間の範囲を使用します: Start Date: 2017-10-01 End Date: 2017-10-11 各ジョブは、開始日と終了日の間の期間によって決定される同じ時間範囲を持ちます。メトリクスの転送は、前のジョブの完了時から開始され、期間が現在の日付(デフォルトの終了日)を過ぎるまで続きます。さらなる転送は、完全な期間が利用可能になるまで遅延され、その時点でジョブが実行され、次の期間が利用可能になるまで一時停止します。 1回目の実行: 開始 end_time: 2017-10-01 07:00:00 終了 end_time: 2017-10-10 07:00:00 2回目の実行: 開始 end_time: 2017-10-11 07:00:00 終了 end_time: 2017-10-20 07:00:00 3回目の実行: 開始 end_time: 2017-10-21 07:00:00 終了 end_time: 2017-10-30 07

*2021年5月9日現在、Facebook API 変更ログによると、IG follower_count は2年間ではなく最大30日間のデータを返すようになりました。User follower_count の値は、Instagram アプリに表示される対応する値とより密接に一致します。したがって、User follower_count メトリクスが個別に選択された場合、クエリ時間は30日以内である必要があります。User オブジェクト全体をインポートする場合、クエリ時間が過去30日間(現在の日を除く)より古い場合、User follower_count メトリクスは空の値として返されます。 **online_followers メトリクスを除き、lifetime メトリクスでは、Incremental Loading チェックボックスのチェックを外し、Start Date と End Date フィールドを空にする必要があります。

データ設定

データ設定では、転送をカスタマイズできます。

  1. Next を選択します。 Data Settings ページが開きます。
  2. 必要に応じてデータ設定を編集するか、このダイアログページをスキップします。

Data Preview

インポートを実行する前に、Generate Preview を選択してデータのプレビューを表示できます。Data preview はオプションであり、選択した場合はダイアログの次のページに安全にスキップできます。

  1. Next を選択します。Data Preview ページが開きます。
  2. データをプレビューする場合は、Generate Preview を選択します。
  3. データを確認します。

Data Placement

データの配置について、データを配置したいターゲット database と table を選択し、インポートを実行する頻度を指定します。

  1. Next を選択します。Storage の下で、インポートされたデータを配置する新しい database を作成するか、既存の database を選択し、新しい table を作成するか、既存の table を選択します。

  2. Database を選択 > Select an existing または Create New Database を選択します。

  3. オプションで、database 名を入力します。

  4. Table を選択 > Select an existing または Create New Table を選択します。

  5. オプションで、table 名を入力します。

  6. データをインポートする方法を選択します。

    • Append (デフォルト) - データインポートの結果は table に追加されます。 table が存在しない場合は作成されます。
    • Always Replace - 既存の table の全体の内容をクエリの結果出力で置き換えます。table が存在しない場合は、新しい table が作成されます。
    • Replace on New Data - 新しいデータがある場合のみ、既存の table の全体の内容をクエリの結果出力で置き換えます。
  7. Timestamp-based Partition Key 列を選択します。 デフォルトキーとは異なるパーティションキーシードを設定したい場合は、long または timestamp 列をパーティショニング時刻として指定できます。デフォルトの時刻列として、add_time フィルターで upload_time を使用します。

  8. データストレージの Timezone を選択します。

  9. Schedule の下で、このクエリを実行するタイミングと頻度を選択できます。

一度だけ実行

  1. Off を選択します。
  2. Scheduling Timezone を選択します。
  3. Create & Run Now を選択します。

定期的に繰り返す

  1. On を選択します。
  2. Schedule を選択します。UI では、@hourly@daily@monthly、またはカスタム cron の 4 つのオプションが提供されます。
  3. Delay Transfer を選択して、実行時間の遅延を追加することもできます。
  4. Scheduling Timezone を選択します。
  5. Create & Run Now を選択します。

転送が実行された後、Data Workbench > Databases で転送の結果を確認できます。

コマンドラインを使用した接続の作成

'td' コマンドのインストール

最新の Treasure Data Toolbelt をインストールします。

シード設定ファイルの作成(seed.yml)

in:
  access_token: EAAZAB0rX...EOdIc5YqAZDZD
  type: instagram_insight
  facebook_page_name: 172411252833693
  data_type: user
  incremental: true
  since: 2020-03-20
  until: 2020-04-10
  use_individual_metrics: true
  incremental_user_metrics:
    - value: email_contacts-day
    - value: impressions-days_28
out:
  mode: append

設定キーと説明は以下の通りです:

Config keyTypeRequiredDescription
access_tokenstringyesFacebook の長期間有効なユーザーアクセストークン。
facebook_page_namestringyesInstagram Business アカウントにリンクされている Facebook ページ ID。
data_typestringyesuser, media, comments, media_list or tags
use_individual_metricsbooleannoインポートするメトリクスデータを手動で選択するオプション。
incremental_user_preset_metricstringno増分ロードが true に設定されている場合の User プリセットメトリクス
incremental_user_metricsarrayno増分ロードが true に設定されている場合にインポートする User メトリクス
non_incremental_user_preset_metricstringno増分ロードが false に設定されている場合にインポートする User プリセットメトリクス
non_incremental_user_metricsarrayno増分ロードが false に設定されている場合にインポートする User メトリクス
media_metricsarrayno転送する個別の Media メトリクスを選択
media_preset_metricstringno転送する Media プリセットメトリクスを選択
incrementalbooleanno繰り返し実行される場合、最後のインポート以降のデータのみが収集されます。
sincestringnoこの日付以降のデータのみをインポートします。Date Range Import を参照してください
untilstringnoこの日付までのデータのみをインポートします
throttle_wait_in_millisintnoAPI 制限に達すると、Facebook は API 呼び出しをスロットル(ブロック)します。API を再度呼び出す前に、指定された時間だけ待つ必要があります。デフォルト:3600000
maximum_retriesintno各 API 呼び出しの最大リトライ回数を指定します。デフォルト:3
initial_retry_interval_millisintno最初のリトライの待機時間を指定します。デフォルト:20000
maximum_retries_interval_millisintnoリトライ間の最大時間を指定します。デフォルト:120000
connect_timeout_in_millisintnoAPI 呼び出しを行う際に接続がタイムアウトするまでの時間を指定します。デフォルト:30000
idle_timeout_in_millisintnotプール内で接続がアイドル状態を維持できる時間を指定します。デフォルト:60000

利用可能な out モードの詳細については、Appendix を参照してください。

フィールドの推測(load.yml の生成)

connector:guess を使用します。このコマンドは、対象データを自動的に読み取り、欠落している部分をインテリジェントに推測します。

$ td connector:guess seed.yml -o load.yml

load.yml ファイルを開くと、推測された設定が表示されます。

---in:  access_token: EAAZA.....dIc5YqAZDZD  type: instagram_insight  facebook_page_name: '172411252833693'  data_type: user  incremental: true  since: '2020-03-20'  until: '2020-04-10'  use_individual_metrics: true  incremental_user_metrics:  - {value: email_contacts-day}  - {value: impressions-days_28}out: {mode: append}exec: {}filters:- from_value: {mode: upload_time}  to_column: {name: time}  type: add_time

次に、preview コマンドを使用してデータをプレビューできます。

$ td connector:preview load.yml

ロードジョブの実行

ロードジョブを送信します。データサイズによっては、数時間かかる場合があります。ユーザーは、データが保存されるデータベースとテーブルを指定する必要があります。

$ td connector:issue load.yml --database td_sample_db --table td_sample_table

上記のコマンドは、すでに database(td_sample_db)table(td_sample_table) を作成していることを前提としています。データベースまたはテーブルが TD に存在しない場合、このコマンドは成功しませんので、データベースとテーブルを手動で作成するか、td connector:issue コマンドで --auto-create-table オプションを使用してデータベースとテーブルを自動的に作成します。

$ 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_users_import \    "10 0 * * *" \    td_sample_db \    td_sample_table \    load.yml

cron パラメータは、@hourly@daily@monthly の3つの特別なオプションも受け付けます。

インクリメンタルスケジューリング

incremental オプションを設定することで、レコードを段階的にロードできます。

in: type: instagram_insight ... incremental: trueout: mode: append

スケジュール実行を使用している場合、コネクタは最後のインポート時刻 time_created 値を自動的に保存し、内部で保持します。そして、次回のスケジュール実行時に使用されます。

in:  type: instagram_insight  ...out:  ...Config Diff---in:  time_created: '2020-02-02T15:46:25Z'

スケジュールの一覧表示

スケジュールされたエントリのリストは、td connector:list で確認できます。

$ td connector:list

スケジュールの設定と履歴の表示

td connector:show は、スケジュールエントリの実行設定を表示します。

$ td connector:show daily_leads_import

td connector:history は、スケジュールエントリの実行履歴を表示します。個々の実行結果を調査するには、td job jobid を使用します。

スケジュールの削除

td connector:delete は、スケジュールを削除します。

$ td connector:delete daily_users_import

Out プラグインのモード

load.yml ファイルの out セクションでファイルインポートモードを指定できます。

out: セクションは、データが Treasure Data テーブルにどのようにインポートされるかを制御します。 たとえば、Treasure Data の既存のテーブルにデータを追加するか、データを置き換えるかを選択できます。

モード説明
Appendレコードは対象テーブルに追加されます。in: ... out: mode: append
Always Replace対象テーブルのデータを置き換えます。対象テーブルに対して手動で行われたスキーマ変更はそのまま保持されます。in: ... out: mode: replace
Replace on new data新しいデータがインポートされる場合にのみ、対象テーブルのデータを置き換えます。in: ... out: mode: replace_on_new_data