Skip to content

Shopify Import Integration V2

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の基本知識

必要なAPIスコープ

Shopifyアプリを設定する際は、インポートするターゲットに応じて以下のAPIスコープが付与されていることを確認してください。

Target必要なスコープ
productsread_products
product_variantsread_productsread_inventoryread_translations
meta_fieldsread_products
custom_queryクエリで参照されているすべてのShopify Admin APIリソースに対応するread_*スコープが必要です。たとえば、製品と在庫レベルを読み取るクエリには、read_productsread_inventoryの両方が必要です。Shopify APIアクセススコープを参照してください。

要件と制限事項

  • メタフィールドインポートの制限
    • 製品ごとに最大250個のメタフィールド
    • 製品バリアントごとに最大250個のメタフィールド
  • 製品バリアントインポートは、created_atタイムスタンプによる増分読み込みをサポートしなくなりました。updated_atタイムスタンプによる読み込みのみをサポートします。

Treasure Data Integration の静的 IP アドレス

セキュリティポリシーで IP ホワイトリストが必要な場合は、接続を成功させるために Treasure Data の IP アドレスを許可リストに追加する必要があります。

リージョンごとに整理された静的 IP アドレスの完全なリストは、次のリンクにあります: IP Addresses for Integrations

Treasure コンソール経由でShopifyレポートをインポート

認証の作成

最初のステップは、資格情報のセットで新しい認証を作成することです。

  1. Integrations Hubを選択します。
  2. Catalogを選択します。

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

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

新しい認証フィールド

ParameterDescription

Store name

Shopifyストアのストア識別子。これは2つの形式で入力できます:

  • 完全なストアURL: 例 https://mountbaker.myshopify.com
  • ストア名のみ: 例: mountbaker

ストア名のみを使用している場合は、.myshopify.comドメインなしのストアの一意の識別子である必要があります。

Auth method使用する認証方法を選択します:
  • Static Token — 2026年1月1日以前に作成されたレガシーアプリの永続的なAdmin APIアクセストークンを使用します。
  • Client Credentials — Shopify Dev DashboardによってサポートされるClient IDとClient Secretを使用します(2026年1月1日以降に作成された新しいアプリに必要)。
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。
  1. Continueを選択します。
  2. 認証の名前を入力し、Doneを選択します。

ソースの作成

認証がコンソールで利用可能になった後、インポートジョブを設定します。

  1. Treasure コンソールを開きます。
  2. Integrations Hub > Authenticationsに移動します。
  3. Shopify認証を見つけてNew Sourceを選択します。

接続の作成

  1. Data Transfer Nameフィールドにソース名を入力します。
  2. Nextを選択します。
ParameterDescription
Data Transfer Name転送の名前を入力します。
Authenticationこのフィールドには、Shopifyとの接続に使用される認証の名前が含まれます。

ソーステーブルの識別

  1. ソーステーブルのフィールドを設定します。

FieldDescription

Source

次のShopifyオブジェクトを含むドロップダウンメニュー:

  • products
  • product_variants
  • meta_fields

Shopifyストアからインポートしたいデータを含むShopifyオブジェクトを選択します。

Incremental?有効にすると、コネクタは最後のインポート実行以降の新しいまたは更新されたデータのみをインポートし、後続のインポートをより効率的にします。
Incremental field増分読み込みに使用するタイムスタンプを選択します:
  • created_at — 作成日で製品をフィルタリングします。
  • updated_at — 最終変更日で製品をフィルタリングします。
Start dateデータをエクスポートする開始タイムスタンプ(形式: dd/mm/yyyy, hh:mm)
End dateデータのエクスポートを終了する終了タイムスタンプ(形式: dd/mm/yyyy, hh:mm)。空のままにすると、終了日は現在時刻になります。
Include image?有効にすると、製品画像データがレスポンスに含まれます。これによりクエリコストが増加することに注意してください。
Resourceメタフィールドのリソースタイプを指定するにはproductを選択します。
Objectsメタフィールドのオブジェクトタイプを選択します:
  • product : 製品に関連付けられたメタフィールドを取得します。
  • product variant : 製品バリアントに関連付けられたメタフィールドを取得します。

Product ID

このフィールドは必須です。メタフィールドを取得したい製品IDのカンマ区切りリストを入力します。

product variantが選択されている場合、フィールド名はVariant IDに変わります。

  1. Nextを選択します。

データ設定の定義

  1. データ設定を設定します。
ParameterDescription
Retry Limitインポートが失敗するまでの再試行回数。
Initial retry time wait in millis再試行前に待機する初期時間(ミリ秒)。
Max retry wait in millis再試行前に待機する最大時間(ミリ秒)。
  1. Nextを選択します。

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 で転送の結果を確認できます。

Workflow経由でShopifyレポートからインポート

td_load>: src_idを使用してワークフロー経由でShopifyレポートからデータをインポートできます。すでにソースを作成している場合は実行できます。ソースを作成したくない場合は、.ymlファイルを使用してインポートできます。

ソースを使用

  1. Integrations Hub > Sourcesを選択します。
  2. 画面の右端にあるFiltersペインで、Integration Typeドロップダウンメニューを使用してShopify V2を選択します。
  3. Sourcesペインで、使用したいソースを含む行を特定し、その行のmoreドロップダウンメニュー(•••アイコン)を使用してCopy Unique IDを選択します。

  1. ワークフロータスクを定義し、td_load>:にステップ3でコピーしたIDを使用します。
+load:
   td_load>: unique_id_of_your_source
   database: ${td.dest_db}
   table: ${td.dest_table}
  1. ワークフローを実行します。

.ymlファイルを使用

  1. .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}
  1. ワークフローを実行します。

サンプルワークフローコード

サンプルワークフローコードについては、Treasure Boxesをご覧ください。

CLI(Toolbelt)経由でShopifyからインポート

統合を設定する前に、最新バージョンの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を使用する必要があります。トークンはコネクタによって自動的に更新されます。

パラメータリファレンス

NameDescriptionValueDefault ValueRequired
typeインポートのソース。"shopify_v2"Yes
auth_method使用する認証方法。String。次のいずれか:
  • "STATIC_TOKEN" — 永続的なAdmin APIアクセストークンを使用します。
  • "CLIENT_CREDENTIALS" — Client IDとClient Secretを使用します(OAuth 2.0 Client Credentials Grant)。
"STATIC_TOKEN"No
admin_api_access_tokenShopifyのAdmin APIで認証するために使用される永続的なアクセストークン。auth_methodSTATIC_TOKENの場合に必須。このトークンは、Shopify管理パネルのApps > Develop apps > Create an app > Configure Admin API scopesから生成できます。StringYes(auth_methodSTATIC_TOKENの場合)
client_idShopify Dev DashboardによってサポートされるClient ID。auth_methodCLIENT_CREDENTIALSの場合に必須。StringYes(auth_methodCLIENT_CREDENTIALSの場合)
client_secretShopify Dev DashboardによってサポートされるClient Secret。auth_methodCLIENT_CREDENTIALSの場合に必須。StringYes(auth_methodCLIENT_CREDENTIALSの場合)
targetデータを収集するソースString。有効なターゲット:
  • products
  • product_variants
  • meta_fields
Yes

store_name

Shopifyストアのストア識別子。これは2つの形式で入力できます:

  • 完全なストアURL: 例 https://mountbaker.myshopify.com
  • ストア名のみ: 例: mountbaker

ストア名のみを使用している場合は、.myshopify.comドメインなしのストアの一意の識別子である必要があります。

String

Yes

incrementalレポートをグループ化するメトリクスのリスト。許可される値はレポートタイプによって異なります。BooleanfalseNo
incremental_field増分読み込みに使用するタイムスタンプ。Stringcreated_atNo
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。値は次のいずれかです:
  • product
  • product_variant
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_at

connector: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_table

インポートモード

load.ymlファイルのout:セクションでファイルインポートモードを指定します。out:セクションは、Treasure Dataテーブルへのデータのインポート方法を制御します。たとえば、データを追加するか、既存のテーブルのデータを置き換えるかを選択できます。

ModeDescriptionExamples
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 Toolbeltを使用してスケジュールを作成

td connector:createコマンドを使用して新しいスケジュールを作成できます。

$ td connector:create daily_import "10 0 * * *" td_sample_db td_sample_table load.yml

Treasure 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_at

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

デフォルトでは、スケジュールはUTCタイムゾーンで設定されます。-tまたは--timezoneオプションを使用して、タイムゾーンでスケジュールを設定できます。--timezoneオプションは、Asia/Tokyo、America/Los_Angelesなどの拡張タイムゾーン形式のみをサポートします。PST、CSTなどのタイムゾーンの略語はサポートされておらず、予期しないスケジュールになる可能性があります。