Shopify Import Connector V2は、ShopifyのGraphQL Admin APIで動作するように特別に設計されたShopifyコネクタの新しいバージョンです。このバージョンは、Shopifyが複数のREST APIエンドポイント(/productsと/variantsを含む)を廃止し、GraphQLの対応するエンドポイントに置き換えることに対応して開発されました。その結果、継続的な機能性と将来の互換性を確保するために、API廃止の影響を受けるリソースのデータインポートを処理するこのV2コネクタを開発しました。
V2コネクタは、以前はREST APIで管理されていた次のインポート操作を特別に処理します:
- 製品データインポート
- 基本的な製品情報
- 製品バリアント
- 製品ステータスと可視性設定
- 製品オプションとバリアント設定
- 製品バリアントデータインポート
- バリアント固有の属性
- SKU情報
- 価格詳細
- 在庫追跡情報
- メタフィールドインポート
- 製品メタフィールド
- 製品バリアントメタフィールド
次の場合はV1バージョンのコネクタを引き続き使用してください:
- 在庫レベルインポート
- 在庫アイテムインポート
- ロケーションデータインポート
- コレクションメタフィールドインポート
- 製品画像メタフィールドインポート
- V2の範囲にリストされていない他のリソースタイプ
ただし、次の場合はV2コネクタを使用してください:
- 製品データのインポート
- 製品バリアントデータのインポート
- 製品メタフィールドのインポート
- 製品バリアントメタフィールドのインポート
- Treasure Dataの基本知識
- Shopifyの基本知識
Shopifyアプリを設定する際は、インポートするターゲットに応じて以下のAPIスコープが付与されていることを確認してください。
| Target | 必要なスコープ |
|---|---|
products | read_products |
product_variants | read_products、read_inventory、read_translations |
meta_fields | read_products |
custom_query | クエリで参照されているすべてのShopify Admin APIリソースに対応するread_*スコープが必要です。たとえば、製品と在庫レベルを読み取るクエリには、read_productsとread_inventoryの両方が必要です。Shopify APIアクセススコープを参照してください。 |
- メタフィールドインポートの制限
- 製品ごとに最大250個のメタフィールド
- 製品バリアントごとに最大250個のメタフィールド
- 製品バリアントインポートは、created_atタイムスタンプによる増分読み込みをサポートしなくなりました。updated_atタイムスタンプによる読み込みのみをサポートします。
セキュリティポリシーで IP ホワイトリストが必要な場合は、接続を成功させるために Treasure Data の IP アドレスを許可リストに追加する必要があります。
リージョンごとに整理された静的 IP アドレスの完全なリストは、次のリンクにあります: IP Addresses for Integrations
最初のステップは、資格情報のセットで新しい認証を作成することです。
- Integrations Hubを選択します。
- Catalogを選択します。

- CatalogでShopifyを検索し、アイコンの上にマウスを置いてCreate Authenticationを選択します。

- Credentialsタブが選択されていることを確認してから、統合の資格情報を入力します。

新しい認証フィールド
| Parameter | Description |
|---|---|
Store name | Shopifyストアのストア識別子。これは2つの形式で入力できます:
ストア名のみを使用している場合は、 |
| Auth method | 使用する認証方法を選択します:
|
| Admin API access token | (Auth methodがStatic Tokenの場合に必須) ShopifyのAdmin APIで認証するために使用される永続的なアクセストークン。このトークンは、Shopify管理パネルのApps > Develop apps > Create an app > Configure Admin API scopesから生成できます。 |
| Client ID | (Auth methodがClient Credentialsの場合に必須) アプリのShopify Dev DashboardによってサポートされるClient ID。 |
| Client Secret | (Auth methodがClient Credentialsの場合に必須) アプリのShopify Dev DashboardによってサポートされるClient Secret。 |
- Continueを選択します。
- 認証の名前を入力し、Doneを選択します。
認証がコンソールで利用可能になった後、インポートジョブを設定します。
- Treasure コンソールを開きます。
- Integrations Hub > Authenticationsに移動します。
- Shopify認証を見つけてNew Sourceを選択します。
- Data Transfer Nameフィールドにソース名を入力します。
- Nextを選択します。
| Parameter | Description |
|---|---|
| Data Transfer Name | 転送の名前を入力します。 |
| Authentication | このフィールドには、Shopifyとの接続に使用される認証の名前が含まれます。 |
- ソーステーブルのフィールドを設定します。

| Field | Description |
|---|---|
Source | 次のShopifyオブジェクトを含むドロップダウンメニュー:
Shopifyストアからインポートしたいデータを含むShopifyオブジェクトを選択します。 |
| Incremental? | 有効にすると、コネクタは最後のインポート実行以降の新しいまたは更新されたデータのみをインポートし、後続のインポートをより効率的にします。 |
| Incremental field | 増分読み込みに使用するタイムスタンプを選択します:
|
| Start date | データをエクスポートする開始タイムスタンプ(形式: dd/mm/yyyy, hh:mm) |
| End date | データのエクスポートを終了する終了タイムスタンプ(形式: dd/mm/yyyy, hh:mm)。空のままにすると、終了日は現在時刻になります。 |
| Include image? | 有効にすると、製品画像データがレスポンスに含まれます。これによりクエリコストが増加することに注意してください。 |
| Resource | メタフィールドのリソースタイプを指定するにはproductを選択します。 |
| Objects | メタフィールドのオブジェクトタイプを選択します:
|
Product ID | このフィールドは必須です。メタフィールドを取得したい製品IDのカンマ区切りリストを入力します。 product variantが選択されている場合、フィールド名はVariant IDに変わります。 |
- Nextを選択します。
- データ設定を設定します。
| Parameter | Description |
|---|---|
| Retry Limit | インポートが失敗するまでの再試行回数。 |
| Initial retry time wait in millis | 再試行前に待機する初期時間(ミリ秒)。 |
| Max retry wait in millis | 再試行前に待機する最大時間(ミリ秒)。 |
- Nextを選択します。
インポートを実行する前に、Generate Preview を選択してデータのプレビューを表示できます。Data preview はオプションであり、選択した場合はダイアログの次のページに安全にスキップできます。
- Next を選択します。Data Preview ページが開きます。
- データをプレビューする場合は、Generate Preview を選択します。
- データを確認します。
データの配置について、データを配置したいターゲット database と table を選択し、インポートを実行する頻度を指定します。
Next を選択します。Storage の下で、インポートされたデータを配置する新しい database を作成するか、既存の database を選択し、新しい table を作成するか、既存の table を選択します。
Database を選択 > Select an existing または Create New Database を選択します。
オプションで、database 名を入力します。
Table を選択 > Select an existing または Create New Table を選択します。
オプションで、table 名を入力します。
データをインポートする方法を選択します。
- Append (デフォルト) - データインポートの結果は table に追加されます。 table が存在しない場合は作成されます。
- Always Replace - 既存の table の全体の内容をクエリの結果出力で置き換えます。table が存在しない場合は、新しい table が作成されます。
- Replace on New Data - 新しいデータがある場合のみ、既存の table の全体の内容をクエリの結果出力で置き換えます。
Timestamp-based Partition Key 列を選択します。 デフォルトキーとは異なるパーティションキーシードを設定したい場合は、long または timestamp 列をパーティショニング時刻として指定できます。デフォルトの時刻列として、add_time フィルターで upload_time を使用します。
データストレージの Timezone を選択します。
Schedule の下で、このクエリを実行するタイミングと頻度を選択できます。
- Off を選択します。
- Scheduling Timezone を選択します。
- Create & Run Now を選択します。
- On を選択します。
- Schedule を選択します。UI では、@hourly、@daily、@monthly、またはカスタム cron の 4 つのオプションが提供されます。
- Delay Transfer を選択して、実行時間の遅延を追加することもできます。
- Scheduling Timezone を選択します。
- Create & Run Now を選択します。
転送が実行された後、Data Workbench > Databases で転送の結果を確認できます。
td_load>: src_idを使用してワークフロー経由でShopifyレポートからデータをインポートできます。すでにソースを作成している場合は実行できます。ソースを作成したくない場合は、.ymlファイルを使用してインポートできます。
- Integrations Hub > Sourcesを選択します。
- 画面の右端にあるFiltersペインで、Integration Typeドロップダウンメニューを使用してShopify V2を選択します。
- Sourcesペインで、使用したいソースを含む行を特定し、その行のmoreドロップダウンメニュー(•••アイコン)を使用してCopy Unique IDを選択します。

- ワークフロータスクを定義し、td_load>:にステップ3でコピーしたIDを使用します。
+load:
td_load>: unique_id_of_your_source
database: ${td.dest_db}
table: ${td.dest_table}- ワークフローを実行します。
- .ymlファイルを特定します。
.ymlファイルを作成する必要がある場合は、Create Seed Config File (seed.yml)にある手順を参照してください。 2. ワークフロータスクを定義し、td_load>:に.ymlファイルを指定します。
+load:
td_load>: config/daily_load.yml
database: ${td.dest_db}
table: ${td.dest_table}- ワークフローを実行します。
サンプルワークフローコードについては、Treasure Boxesをご覧ください。
統合を設定する前に、最新バージョンのTD Toolbeltをインストールしてください。
in:
type: shopify_v2
admin_api_access_token: xxxxxxxx
target: products
store_name: xxxxxxx
from_date: '2024-12-31T17:00:00.000Z'
incremental_field: created_at
out:
mode: replaceこの例では、Shopify Productオブジェクトのリストを取得します。from_dateは、データの取得を開始する日付を指定します。この場合、インポートは2024年12月31日17:00からデータのプルを開始します。
- Static Token: 2026年1月1日以前に作成されたレガシーカスタムアプリには
admin_api_access_tokenを使用します。これがデフォルトです(auth_methodのデフォルトはSTATIC_TOKEN)。 - Client Credentials: 2026年1月1日以降、Shopifyはレガシーカスタムアプリによる永続的なトークンの作成を許可しなくなりました。新しいアプリは、Shopify Dev DashboardからのClient IDとClient Secretと共に
auth_method: CLIENT_CREDENTIALSを使用する必要があります。トークンはコネクタによって自動的に更新されます。
パラメータリファレンス
| Name | Description | Value | Default Value | Required |
|---|---|---|---|---|
| type | インポートのソース。 | "shopify_v2" | Yes | |
| auth_method | 使用する認証方法。 | String。次のいずれか:
| "STATIC_TOKEN" | No |
| admin_api_access_token | ShopifyのAdmin APIで認証するために使用される永続的なアクセストークン。auth_methodがSTATIC_TOKENの場合に必須。このトークンは、Shopify管理パネルのApps > Develop apps > Create an app > Configure Admin API scopesから生成できます。 | String | Yes(auth_methodがSTATIC_TOKENの場合) | |
| client_id | Shopify Dev DashboardによってサポートされるClient ID。auth_methodがCLIENT_CREDENTIALSの場合に必須。 | String | Yes(auth_methodがCLIENT_CREDENTIALSの場合) | |
| client_secret | Shopify Dev DashboardによってサポートされるClient Secret。auth_methodがCLIENT_CREDENTIALSの場合に必須。 | String | Yes(auth_methodがCLIENT_CREDENTIALSの場合) | |
| target | データを収集するソース | String。有効なターゲット:
| Yes | |
store_name | Shopifyストアのストア識別子。これは2つの形式で入力できます:
ストア名のみを使用している場合は、 | String | Yes | |
| incremental | レポートをグループ化するメトリクスのリスト。許可される値はレポートタイプによって異なります。 | Boolean | false | No |
| incremental_field | 増分読み込みに使用するタイムスタンプ。 | String | created_at | No |
| start_date | データをエクスポートする開始タイムスタンプ | String。形式: yyyy-MM-dd'T'HH:mm:ss.SS'Z' | No | |
| end_date | データのエクスポートを終了する終了タイムスタンプ | String。形式: yyyy-MM-dd'T'HH:mm:ss.SS'Z' | No | |
| metafield_resource | メタフィールドのターゲット | String。値は "product" になります。 | Yes(ターゲットが meta_fields の場合) | |
| metafield_object | メタフィールドオブジェクト | String。値は次のいずれかです:
| Yes(ターゲットが meta_fields の場合) | |
| product_ids | メタフィールドを取得したい製品IDのカンマ区切りリスト | String。例: "gid://shopify/Product/8472042950, gid://shopify/Product/8472044230" | Yes(metafield_objectが product の場合) | |
| product_variant_ids | メタフィールドを取得したい製品バリアントIDのカンマ区切りリスト | String。例: "gid://shopify/ProductVariant/28753686918, gid://shopify/ProductVariant/28753705670" | Yes(metafield_objectが product_variant の場合) |
データをプレビューするには、td connector:previewコマンドを使用します。
td connector:preview load.ymlデータのサイズによっては数時間かかる場合があります。データを保存するTreasure Dataデータベースとテーブルを必ず指定してください。 Treasure Dataのストレージは時間でパーティション化されているため、Treasure Dataでは--time-columnオプションを指定することも推奨しています(data partitioningを参照)。このオプションが提供されていない場合、データコネクタは最初のlongまたはtimestamp列をパーティション化時間として選択します。--time-columnで指定する列のタイプは、longおよびtimestampタイプのいずれかである必要があります。
データに時間列がない場合は、add_timeフィルターオプションを使用して時間列を追加できます。詳細については、add_time Filter Functionのドキュメントを参照してください。
$ td connector:issue load.yml --database td_sample_db --table td_sample_table --time-column created_atconnector:issueコマンドは、すでに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というフィールドがある場合は、--time-columnオプションを指定する必要はありません。
$ td connector:issue load.yml --database td_sample_db --table td_sample_tableload.ymlファイルのout:セクションでファイルインポートモードを指定します。out:セクションは、Treasure Dataテーブルへのデータのインポート方法を制御します。たとえば、データを追加するか、既存のテーブルのデータを置き換えるかを選択できます。
| Mode | Description | Examples |
|---|---|---|
| Append | レコードはターゲットテーブルに追加されます。 | in:
...
out:
mode: append |
| Always Replace | ターゲットテーブルのデータを置き換えます。ターゲットテーブルに加えられた手動スキーマ変更はそのまま残ります。 | in:
...
out:
mode: replace |
| Replace on new data | インポートする新しいデータがある場合にのみ、ターゲットテーブルのデータを置き換えます。 | in:
...
out:
mode: replace_on_new_data |
増分ファイルインポートのために定期的なデータコネクタの実行をスケジュールできます。Treasure Dataスケジューラーは、高可用性を確保するために最適化されています。
スケジュールされたインポートの場合、指定されたプレフィックスと次の条件のいずれかに一致するすべてのファイルをインポートできます:
- use_modified_timeが無効になっている場合、次の実行のために最後のパスが保存されます。2回目以降の実行では、統合はアルファベット順で最後のパスの後に来るファイルのみをインポートします。
- それ以外の場合、ジョブが実行された時刻が次の実行のために保存されます。2回目以降の実行では、コネクタはその実行時刻以降にアルファベット順で変更されたファイルのみをインポートします。
td connector:createコマンドを使用して新しいスケジュールを作成できます。
$ td connector:create daily_import "10 0 * * *" td_sample_db td_sample_table load.ymlTreasure Dataのストレージは時間でパーティション化されているため、Treasure Dataでは--time-columnオプションを指定することも推奨しています(data partitioningを参照)。
$ td connector:create daily_import "10 0 * * *" td_sample_db td_sample_table load.yml --time-column created_atcronパラメータは、3つの特別なオプション: @hourly、@daily、および@monthlyも受け入れます。
デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは--timezoneオプションを使用して、タイムゾーンでスケジュールを設定できます。--timezoneオプションは、Asia/Tokyo、America/Los_Angelesなどの拡張タイムゾーン形式のみをサポートします。PST、CSTなどのタイムゾーンの略語はサポートされておらず、予期しないスケジュールになる可能性があります。