Skip to content
Last updated

Amplitude Export Integration

Amplitude Import Integrationの詳細はこちら

クエリを使用して、Treasure Dataに保存されているデータからAmplitude Eventsを作成します。

前提条件

  • TD Toolbeltを含む、Treasure Dataの基本的な知識。
  • Treasure Dataに権限を付与できるAmplitudeアカウント。

Amplitudeアカウントの作成

Amplitudeアカウントをお持ちでない場合は、https://amplitude.comにアクセスして登録してください。その後、組織とプロジェクトを作成します。プロジェクトを作成すると、そのプロジェクト用のAPIキーを受け取ります。

Amplitudeユーザーアクティビティ

Amplitudeコンソールでは、ユーザーアクティビティを表示してAmplitudeイベントを探索できます。

使い方

TDコンソールに移動し、Queriesを選択して新規クエリを選択し、クエリエディタにアクセスします。クエリ言語を選択してクエリを記述します。「結果を出力」を選択します。

新しいAmplitude接続を作成するか既存の接続を選択する

オプションタスクステップヒント
コネクタの作成- Connectionsに移動します。- ソースカタログからAmplitudeアイコンを選択します。- 最初のペインで必須フィールドに入力します。- APIキーフィールドに、Amplitudeで使用するキーを入力します。- シークレットキーフィールドでは、デフォルトエントリを削除してフィールドを空のままにします。次に、設定フィールドに入力します。クエリを記述する前に列マッピングを定義する必要がある場合があります。
コネクタの選択- Treasure Dataコンソールに移動します。- クエリエディタに移動します。- データのエクスポートに使用する予定のクエリにアクセスします。- 「結果を出力」を選択します。保存された接続の選択ダイアログが開きます。- 検索ボックスに接続名を入力してフィルタリングし、使用する接続を選択します。次に、設定フィールドに入力します。ここから「新しい接続を作成」を選択して新しい接続を作成することもできます。

新しい接続の作成:

APIキーを入力する必要があります。Amplitudeへの出力の場合、シークレットキーフィールドは空にする必要があります。必要に応じて、シークレットキーフィールドのデフォルトエントリを削除してください。リージョン: EUおよび米国(デフォルト)の各リージョンのデータセンターをサポート

既存の接続の選択:

オプション: 追加設定を完了する

新しいAmplitude接続を作成するか既存の接続を選択した後、追加設定ポップアップが表示されます。例:

パラメータ説明デフォルト値
ターゲットデータをアップロードする必要があるターゲットAmplitudeオブジェクト。サポート対象: - Event - IdentifyEvent
重複排除用のInsert IDの自動生成を無効化デフォルトでは、TDは重複排除用のinsert_idsを自動的に生成します。詳細はEvent Deduplicationを参照してください。チェックなし
OperationAmplitudeで実行する操作。サポートされる操作: - Set - Set Once - Add - Append - Prepend - Unset - Pre Insert - Post Insert - RemoveAdd
RegionEUおよびUS(デフォルト)の各リージョンのデータセンターをサポートします。US
Number of events per batchTDコネクタがAmplitudeへバッチとして送信するレコード数10

Amplitudeイベントを入力するためのクイッククエリを記述する

次の例では、クエリ結果を出力するに、Amplitudeプロジェクトにはイベントがありません:

Treasure Dataで、AmplitudeをResult Exportとして次のクエリを実行します:

SELECT
  user_id,
  device_id,
  event_type,
  event_properties,
  country,
  time
FROM (
  VALUES(
    'a@gmail.com',
    'f925065b-4d56-486f-a2be-e97952e62925',
    'game_open',
    '{"load_time":0.0619166532,"dates":["sunday","monday"],"source":"notification"}',
    'United States',
    1515083919310
  ),
  (
    'b@gmail.com',
    'b36c8c80-71a0-4de4-8bcb-c801f5c1c6c3',
    'select_avatar',
    '{"load_time":0.0517593568,"dates":["friday","sunday"],"source":"notification"}]',
    'United States',
    1515083943092
  ),
  (
    'c@gmail.com',
    'e44a1024-c4bb-4eef-a02a-f2a7b3bf68b3',
    'watch_tutorial',
    '{"load_time":0.0689998562,"dates":["sunday","monday"],"source":"notification"}',
    'United States',
    1515083970894
  ),
  (
    'd@gmail.com',
    '8274fee1-7222-4e41-83ed-fb5521d5f4b8',
    'game_start',
    '{"load_time":0.0976384392,"dates":["friday","monday"],"source":"notification"}',
    'United States',
    1515084000948
  ),
  (
    'e@gmail.com',
    '29ba193d-0955-4084-9640-bb4d8ba9a23f',
    'ad_clicked',
    '{"load_time":0.0708434955,"dates":["monday","saturday"],"source":"notification"}',
    'United States',
  )
) tbl(
  user_id,
  device_id,
  event_type,
  event_properties,
  country,
  time
)

前述のクエリはソーステーブルを必要としないため、テストが簡単ですが、それでもデータベースを選択する必要があります。「sample_datasets」または他の任意のテーブルを選択してください。また、SQLダイアレクトとしてPrestoが選択されていることを確認してください。

クエリは数秒で完了します。Amplitudeアカウントにログインし、User Activityを確認してください。次のように表示されるはずです:

クエリに含まれるすべてのカラムまたはエイリアスは、Amplitude API仕様に記載されている名前とデータ型を使用する必要があります。

複数の値を単一のJSON列値に結合する

複数の値がある場合、次のように単一のJSON列値に結合できます:

SELECT CAST(MAP(ARRAY['source', 'status', 'action'], ARRAY['notification', 'pending', 'add']) AS JSON) AS event_properties

これにより、event_propertiesのシンプルなJSONオブジェクトが作成されます: '{"action":"add","source":"notification","status":"pending"}'

次のように、より複雑な列を作成できます:

SELECT CAST(MAP(ARRAY['load_time', 'source', 'dates'], ARRAY[CAST (0.8371 AS JSON), CAST ('notification' AS JSON), CAST(ARRAY['monday', 'tuesday'] AS JSON)]) AS JSON) AS event_properties

これにより、event_properties値として次のJSONオブジェクトが作成されます: '{"dates":["monday","tuesday"],"load_time":0.8371,"source":"notification"}'

Amplitudeイベントを生成するためのTDテーブルへのクエリを記述する

Amplitudeのレコードを作成するために使用できるTDデータベーステーブルの例は次のとおりです:

Treasure Data Consoleで、クエリエディタに移動し、クエリを入力します。例:

SELECT user_id, device_id, event_type, event_properties, country, event_time AS time FROM events

Output resultsを選択して、データをAmplitudeに送信します。次に、既存のコネクタを選択するか、api_keyを使用して新しい接続を作成します。

コネクタが選択または作成されたら、クエリエディタでRunを選択してデータ転送を開始します。

Event Deduplication

Amplitudeによって重複イベントが保存されないように、各イベントにinsert_idを送信することを強くお勧めします。insert_idはイベントの一意の識別子です。Amplitudeは、同じinsert_idを持つイベントが7日以内に送信された場合、それらのイベントを削除します。

Insert IDの自動生成を無効にしないと、TDは各レコードに対して自動的にSHA256のinsert_idを生成します。

Insert IDの自動生成を無効にする場合、insert_idはユーザーが提供する必要があります。

Amplitude列

次の表は、Amplitudeでサポートされているイベント列とデータ型の一覧です。

イベント標準列

キー説明
user_id string(device_idが存在しない場合は必須) ユーザーが指定する読み取り可能なID。例: "datamonster@gmail.com"
device_id string(user_idが存在しない場合は必須) デバイス固有の識別子。iOSのIdentifier for Vendorなど。例: "C8F9E604-F01A-4BD9-95C6-8E5357DF265D"
event_type string(必須) イベントの一意の識別子。例: "watch_tutorial"
time longエポックからのミリ秒単位のイベントのタイムスタンプ。デフォルトではアップロード時刻に設定されます。例: 1396381378123
event_properties4 json{"load_time": 0.8371, "source": "notification", "dates": ["monday", "tuesday"]}
user_properties4 json{"age": 25, "gender": "female", "interests": ["chess", "football", "music"]}
groups4 json(Enterpriseのみ) {"company_id": "1", "company_name":["Amplitude", "DataMonster"]}
app_versionユーザーが使用しているアプリケーションのバージョン。例: "2.1.3"
platform1,2 stringデバイスのプラットフォーム。例: "iOS"、"Android"、または "Web"
os_name1,2 stringユーザーが使用しているモバイルオペレーティングシステムまたはブラウザ。例: "iOS"、"Android"、"Chrome"
os_version1,2 stringユーザーが使用しているモバイルオペレーティングシステムまたはブラウザのバージョン。例: "8.1"、"4.2.2"、"37"
device_brand1,2 stringユーザーが使用しているデバイスブランド。例: "Verizon"
device_manufacturer1,2 stringユーザーが使用しているデバイスメーカー。例: "Samsung"、"Asus"、"Apple"
device_model1,2 stringユーザーが使用しているデバイスモデル。例: "Mac"、"iphone 9,1"、"sm-g30f"
carrier1,2 stringデバイスのキャリア。例: "Verizon"
country1,3 stringユーザーがいる国。例: "United States"
region1,3 stringユーザーがいる地理的地域。例: "California"
city1,3 stringユーザーがいる都市。例: "San Francisco"
dma1,3 stringユーザーのDesignated Market Area。例: "San Francisco-Oakland-San Jose, CA"
language1 stringユーザーが設定している言語。例: "English"
price5 float(revenueが送信されない場合、売上データに必須) 購入したアイテムの価格。負の値を使用して返金を示すことができます。例: 4.99、-1.99
quantity5 integer(売上データに必須。指定されない場合のデフォルトは1) 購入したアイテムの数量。例: 1、2
revenue5 floatrevenue = price * quantity price、quantity、revenueの3つのフィールドをすべて送信する場合、(price * quantity) が優先され、売上値になります。負の値を使用して返金を示すことができます。例: 4.99、-1.99
productId5 string製品の識別子。注: このフィールドにはpriceとquantityを送信する必要があります。例: "Google Play Store Product Id"、"Medium Bundle"
revenueType5 string売上のタイプ。注: このフィールドにはpriceとquantityを送信する必要があります。例: "tax"、"refund"
location_lat floatユーザーの緯度。例: 37.77
location_lng floatユーザーの経度。例: -122.39
ip1 stringユーザーのIPアドレス。サーバーのIPアドレスを使用する場合は"$remote"を使用します。例: "127.0.0.1"
idfa string(iOS) Identifier for Advertiser。例: "AEBE52E7-03EE-455A-B3C4-E57283966239"
idfv string(iOS) Identifier for Vendor。例: "BCCE52E7-03EE-321A-B3D4-E57123966239"
adid string(Android) Google Play Services advertising ID (AdID)。例: "AEBE52E7-03EE-455A-B3C4-E57283966239"

1,2,3,4,5の脚注を表示

イベントオプション列

オプションのAmplitude固有キー説明
event_id int同じuser_idとタイムスタンプを持つイベントを区別するための増分カウンター。注: 特にイベントが同時に発生する可能性がある場合は、時間とともに増加するevent_idを送信することをお勧めします。session_idを送信するためにevent_idは必須ではありません。例: 1
session_id longセッションの開始時刻はエポック(Unix Timestamp)からのミリ秒単位で表され、イベントを特定のセッションに関連付ける場合に必要です(session_idが-1の場合、session_idを送信していないことを意味し、セッションメトリクスは追跡されません)。詳細については、AmplitudeでのSession追跡を参照してください。例: 1396381378123
insert_id string挿入されるイベントの一意の識別子。互いに7日以内に送信された同じinsert_idを持つイベントの重複を排除します。device_id、user_id、session_id、event_type、event_id、またはtimeの組み合わせが、十分なinsert_id値として機能する可能性があります。例: "f47ac10b-58cc-4372-a567-0e02b2c3d479"

Identifyスキーマとデータ型

列名データ型必須?説明
device_idString条件付きuser_idが存在しない場合は必須。iOSのIdentifier for Vendor(IDFV)など、デバイス固有の識別子。
user_properties_xString, Plattent to build an arrayオプションユーザーに紐づくデータを表すキーと値のペアの辞書。個別の値はAmplitudeダッシュボード上でユーザーセグメントとして表示されます。オブジェクトの深さは40層を超えてはいけません。プロパティ値を配列に格納でき、日付値は文字列値に変換されます。Amplitudeは日付を文字列として比較するため、ISO 8601形式(YYYY-MM-DDTHH:mm: ss)の使用を推奨します。これにより、Webアプリで日付比較を実行できます。例:'2016-01-31' > '2016-01-01')。これは'2017-08-07T10:09:08' > '2017-08-07T01:07:00'のような日時値にも適用されます。
app_versionStringオプションユーザーが使用しているアプリのバージョン。
platformStringオプションデータを送信しているプラットフォーム。
os_nameStringオプションユーザーが使用しているモバイルオペレーティングシステムまたはブラウザ。
os_versionStringオプションユーザーが使用しているモバイルオペレーティングシステムまたはブラウザのバージョン。
device_brandStringオプションユーザーが使用しているデバイスのブランド。
device_manufacturerStringオプションユーザーが使用しているデバイスの製造元。
device_modelStringオプションユーザーが使用しているデバイスのモデル。
carrierStringオプションユーザーが契約しているキャリア。
countryStringオプションユーザーが所在する国。
regionStringオプションユーザーが所在する地理的地域。
cityStringオプションユーザーが所在する都市。
dmaStringオプションユーザーのDesignated Market Area。
languageStringオプションユーザーが設定している言語。
payingStringオプションユーザーが課金ユーザーかどうか。
start_versionStringオプションユーザーが最初に使用していたアプリのバージョン。

User Properties Fields (Identify Target Only)

User Property (Key)DescriptionSample ValueType
cohort行動セグメントまたは実験グループ"Beta Users"string
subscription_planユーザーのサブスクリプションレベル"Pro"string
signup_dateユーザーの登録日(ISO形式)"2025-01-01"timestamp
onboarding_completeユーザーがオンボーディングを完了したかどうかtrueboolean
login_countログインの総回数5long
referrer_code使用された招待/紹介コード"ABC123"string
utm_sourceマーケティングキャンペーンのソース"Facebook"string
utm_mediumキャンペーンチャネルのタイプ"email"string
utm_campaignキャンペーン名"BlackFriday2025"string
last_purchase_date最後に購入が成功した日付"2025-05-01"timestamp
has_active_subscriptionユーザーがアクティブなサブスクリプションを持っているかfalseboolean
features_enabled有効になっている機能フラグのリスト["chat", "dark_mode"]string
interestsユーザーの興味["music", "sports"]string
feedback_ratingユーザーからのフィードバック評価(例:1から5)4double
survey_completedユーザーがアンケートを送信したかどうかtrueboolean
preferred_languageUI/表示言語の設定"en"string
lifetime_valueユーザーが生成した総価値(例:USD)129.99double
has_push_enabledプッシュ通知が有効かどうかtrueboolean
demo_attendedユーザーがデモコール/ウェビナーに参加したかどうかfalseboolean
team_sizeチームまたは組織のサイズ(B2Bユースケース向け)50long

または、Identify Schemaリストの列にない任意のフィールドはuser_propertiesの列となります。

(オプション) Query Export ジョブをスケジュールする

Scheduled Jobs と Result Export を使用して、指定したターゲット宛先に出力結果を定期的に書き込むことができます。

Treasure Data のスケジューラー機能は、高可用性を実現するために定期的なクエリ実行をサポートしています。

2 つの仕様が競合するスケジュール仕様を提供する場合、より頻繁に実行するよう要求する仕様が優先され、もう一方のスケジュール仕様は無視されます。

例えば、cron スケジュールが '0 0 1 * 1' の場合、「月の日」の仕様と「週の曜日」が矛盾します。前者の仕様は毎月 1 日の午前 0 時 (00:00) に実行することを要求し、後者の仕様は毎週月曜日の午前 0 時 (00:00) に実行することを要求するためです。後者の仕様が優先されます。

TD Console を使用してジョブをスケジュールする

  1. Data Workbench > Queries に移動します

  2. 新しいクエリを作成するか、既存のクエリを選択します。

  3. Schedule の横にある None を選択します。

  4. ドロップダウンで、次のスケジュールオプションのいずれかを選択します:

    ドロップダウン値説明
    Custom cron...Custom cron... の詳細を参照してください。
    @daily (midnight)指定されたタイムゾーンで 1 日 1 回午前 0 時 (00:00 am) に実行します。
    @hourly (:00)毎時 00 分に実行します。
    Noneスケジュールなし。

Custom cron... の詳細

Cron 値説明
0 * * * *1 時間に 1 回実行します。
0 0 * * *1 日 1 回午前 0 時に実行します。
0 0 1 * *毎月 1 日の午前 0 時に 1 回実行します。
""スケジュールされた実行時刻のないジョブを作成します。
 *    *    *    *    *
 -    -    -    -    -
 |    |    |    |    |
 |    |    |    |    +----- day of week (0 - 6) (Sunday=0)
 |    |    |    +---------- month (1 - 12)
 |    |    +--------------- day of month (1 - 31)
 |    +-------------------- hour (0 - 23)
 +------------------------- min (0 - 59)

次の名前付きエントリを使用できます:

  • Day of Week: sun, mon, tue, wed, thu, fri, sat.
  • Month: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.

各フィールド間には単一のスペースが必要です。各フィールドの値は、次のもので構成できます:

フィールド値 例の説明
各フィールドに対して上記で表示された制限内の単一の値。
フィールドに基づく制限がないことを示すワイルドカード '*''0 0 1 * *'毎月 1 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
範囲 '2-5' フィールドの許可される値の範囲を示します。'0 0 1-10 * *'毎月 1 日から 10 日までの午前 0 時 (00:00) に実行するようにスケジュールを設定します。
カンマ区切りの値のリスト '2,3,4,5' フィールドの許可される値のリストを示します。0 0 1,11,21 * *'毎月 1 日、11 日、21 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
周期性インジケータ '*/5' フィールドの有効な値の範囲に基づいて、 スケジュールが実行を許可される頻度を表現します。'30 */2 1 * *'毎月 1 日、00:30 から 2 時間ごとに実行するようにスケジュールを設定します。 '0 0 */5 * *' は、毎月 5 日から 5 日ごとに午前 0 時 (00:00) に実行するようにスケジュールを設定します。
'*' ワイルドカードを除く上記の いずれかのカンマ区切りリストもサポートされています '2,*/5,8-10''0 0 5,*/10,25 * *'毎月 5 日、10 日、20 日、25 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
  1. (オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。

(オプション) CLIを使用したエクスポート連携

CLI(Toolbelt)を使用して、td queryコマンドの--resultオプションで、Shopifyサーバーにエクスポートする情報を指定することで、結果をShopifyにエクスポートすることもできます。td queryコマンドの詳細については、TD Toolbelt: Query Commandsを参照してください。

TD Toolbeltで使用されるyml設定ファイルのオプションはJSON形式であり、一般的な構造は以下の通りです。

  • Event Targetの場合
out:
  api_key: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
  target: 'event'
  disable_auto_generation_insert_ids: false
  region: 'US'
  events_per_batch: 10
  • Identifyターゲットの場合
out:
  type: amplitude
  target: identify
  api_key: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
  region: EU
  operation: set
  skip_invalid_records: false

パラメータ

名前説明デフォルト値必須
typeコネクタタイプamplitudeN/Aはい
api_keyデータをエクスポートするためのAPIキーN/AN/Aはい
targetデータをアップロードするAmplitudeターゲットオブジェクトサポートされる値: - event - identifyeventはい
regionAmplitudeデータをエクスポートするためのAPIリージョンサポートされる値: - US - EUUSはい
operationAmplitudeで実行する操作サポートされる値: - set - set_once - add - append - prepend - unset - pre_insert - post_insert - removeaddはい
disable_auto_generation_insert_idsinsert_idの自動生成を無効にするFalseN/A
events_per_batchイベントバッチサイズ整数10N/A
skip_invalid_records無効なレコードのスキップを有効にするTrueまたはFalseTrueN/A

CLIの使用例

イベントのアップロード

td query \
--result '{"type":"amplitude","api_key":"api_key","target":"event","region":"US","disable_auto_generation_insert_ids":"false","events_per_batch":10}'  \
-d sample_database \
"select user_id,device_id,event_type,value from tbl_shop" \
-T presto

Identifyのアップロード

td query --result \
'{"type":"amplitude","api_key":"api_key","target":"identify","region":"US","operation":"add","skip_invalid_records":true}'\
-d sample_database \
"select user_id,device_id,user_properties,value from tbl_shop" \
-T presto

関連項目