Amplitude Import Integrationの詳細はこちら。
クエリを使用して、Treasure Dataに保存されているデータからAmplitude Eventsを作成します。
- TD Toolbeltを含む、Treasure Dataの基本的な知識。
- Treasure Dataに権限を付与できるAmplitudeアカウント。
Amplitudeアカウントをお持ちでない場合は、https://amplitude.comにアクセスして登録してください。その後、組織とプロジェクトを作成します。プロジェクトを作成すると、そのプロジェクト用のAPIキーを受け取ります。

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

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

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

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

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


| パラメータ | 説明 | デフォルト値 |
|---|---|---|
| ターゲット | データをアップロードする必要があるターゲットAmplitudeオブジェクト。サポート対象: - Event - Identify | Event |
| 重複排除用のInsert IDの自動生成を無効化 | デフォルトでは、TDは重複排除用のinsert_idsを自動的に生成します。詳細はEvent Deduplicationを参照してください。 | チェックなし |
| Operation | Amplitudeで実行する操作。サポートされる操作: - Set - Set Once - Add - Append - Prepend - Unset - Pre Insert - Post Insert - Remove | Add |
| Region | EUおよびUS(デフォルト)の各リージョンのデータセンターをサポートします。 | US |
| Number of events per batch | TDコネクタがAmplitudeへバッチとして送信するレコード数 | 10 |
次の例では、クエリ結果を出力する前に、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列値に結合できます:
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データベーステーブルの例は次のとおりです:

Treasure Data Consoleで、クエリエディタに移動し、クエリを入力します。例:
SELECT user_id, device_id, event_type, event_properties, country, event_time AS time FROM eventsOutput resultsを選択して、データをAmplitudeに送信します。次に、既存のコネクタを選択するか、api_keyを使用して新しい接続を作成します。
コネクタが選択または作成されたら、クエリエディタでRunを選択してデータ転送を開始します。
Amplitudeによって重複イベントが保存されないように、各イベントにinsert_idを送信することを強くお勧めします。insert_idはイベントの一意の識別子です。Amplitudeは、同じinsert_idを持つイベントが7日以内に送信された場合、それらのイベントを削除します。
Insert IDの自動生成を無効にしないと、TDは各レコードに対して自動的にSHA256のinsert_idを生成します。
Insert IDの自動生成を無効にする場合、insert_idはユーザーが提供する必要があります。
次の表は、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 float | revenue = 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" |
| オプションの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" |
| 列名 | データ型 | 必須? | 説明 |
|---|---|---|---|
device_id | String | 条件付き | user_idが存在しない場合は必須。iOSのIdentifier for Vendor(IDFV)など、デバイス固有の識別子。 |
user_properties_x | String, 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_version | String | オプション | ユーザーが使用しているアプリのバージョン。 |
platform | String | オプション | データを送信しているプラットフォーム。 |
os_name | String | オプション | ユーザーが使用しているモバイルオペレーティングシステムまたはブラウザ。 |
os_version | String | オプション | ユーザーが使用しているモバイルオペレーティングシステムまたはブラウザのバージョン。 |
device_brand | String | オプション | ユーザーが使用しているデバイスのブランド。 |
device_manufacturer | String | オプション | ユーザーが使用しているデバイスの製造元。 |
device_model | String | オプション | ユーザーが使用しているデバイスのモデル。 |
carrier | String | オプション | ユーザーが契約しているキャリア。 |
country | String | オプション | ユーザーが所在する国。 |
region | String | オプション | ユーザーが所在する地理的地域。 |
city | String | オプション | ユーザーが所在する都市。 |
dma | String | オプション | ユーザーのDesignated Market Area。 |
language | String | オプション | ユーザーが設定している言語。 |
paying | String | オプション | ユーザーが課金ユーザーかどうか。 |
start_version | String | オプション | ユーザーが最初に使用していたアプリのバージョン。 |
| User Property (Key) | Description | Sample Value | Type |
|---|---|---|---|
| cohort | 行動セグメントまたは実験グループ | "Beta Users" | string |
| subscription_plan | ユーザーのサブスクリプションレベル | "Pro" | string |
| signup_date | ユーザーの登録日(ISO形式) | "2025-01-01" | timestamp |
| onboarding_complete | ユーザーがオンボーディングを完了したかどうか | true | boolean |
| login_count | ログインの総回数 | 5 | long |
| 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 | ユーザーがアクティブなサブスクリプションを持っているか | false | boolean |
| features_enabled | 有効になっている機能フラグのリスト | ["chat", "dark_mode"] | string |
| interests | ユーザーの興味 | ["music", "sports"] | string |
| feedback_rating | ユーザーからのフィードバック評価(例:1から5) | 4 | double |
| survey_completed | ユーザーがアンケートを送信したかどうか | true | boolean |
| preferred_language | UI/表示言語の設定 | "en" | string |
| lifetime_value | ユーザーが生成した総価値(例:USD) | 129.99 | double |
| has_push_enabled | プッシュ通知が有効かどうか | true | boolean |
| demo_attended | ユーザーがデモコール/ウェビナーに参加したかどうか | false | boolean |
| team_size | チームまたは組織のサイズ(B2Bユースケース向け) | 50 | long |
または、Identify Schemaリストの列にない任意のフィールドはuser_propertiesの列となります。
Scheduled Jobs と Result Export を使用して、指定したターゲット宛先に出力結果を定期的に書き込むことができます。
Treasure Data のスケジューラー機能は、高可用性を実現するために定期的なクエリ実行をサポートしています。
2 つの仕様が競合するスケジュール仕様を提供する場合、より頻繁に実行するよう要求する仕様が優先され、もう一方のスケジュール仕様は無視されます。
例えば、cron スケジュールが '0 0 1 * 1' の場合、「月の日」の仕様と「週の曜日」が矛盾します。前者の仕様は毎月 1 日の午前 0 時 (00:00) に実行することを要求し、後者の仕様は毎週月曜日の午前 0 時 (00:00) に実行することを要求するためです。後者の仕様が優先されます。
Data Workbench > Queries に移動します
新しいクエリを作成するか、既存のクエリを選択します。
Schedule の横にある None を選択します。

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

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

| 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) に実行するようにスケジュールを設定します。 |
- (オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。
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 | コネクタタイプ | amplitude | N/A | はい |
| api_key | データをエクスポートするためのAPIキー | N/A | N/A | はい |
| target | データをアップロードするAmplitudeターゲットオブジェクト | サポートされる値: - event - identify | event | はい |
| region | AmplitudeデータをエクスポートするためのAPIリージョン | サポートされる値: - US - EU | US | はい |
| operation | Amplitudeで実行する操作 | サポートされる値: - set - set_once - add - append - prepend - unset - pre_insert - post_insert - remove | add | はい |
| disable_auto_generation_insert_ids | insert_idの自動生成を無効にする | False | N/A | |
| events_per_batch | イベントバッチサイズ | 整数 | 10 | N/A |
| skip_invalid_records | 無効なレコードのスキップを有効にする | TrueまたはFalse | True | N/A |
イベントのアップロード
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 prestoIdentifyのアップロード
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- Result Exportをスケジュールして、定期的にターゲット先にデータをアップロードできます。TD Consoleを使用したジョブのスケジューリングを参照してください。