Skip to content
Last updated

Shopify Import Integration CLI

Shopify Import Integrationでは、TD CLIを使用して接続を設定できます。

Treasure Data Toolbeltのインストール

ターミナルを開き、以下のコマンドを実行して最新のTreasure Data Toolbeltをインストールします。

$ td --version
0.15.0

ロードファイルの準備

次の例に示すように、Shopifyアカウントのアクセス情報を使用して、ロードファイル(例:load.yml)を準備します。

in:
  type: shopify
  apikey: xxxxxxxx
  password: xxxxxxx
  target: products
  store_name: xxxxxxx
  from_date: '2016-09-07'
  fetch_days: 2 (optional)  incremental_field: created_at
out:
  mode: replace

この例は、Shopify Productオブジェクトのダンプを示しています。API Keyとpasswordの値は、Shopifyによって提供される有効なAPI Keyとpasswordです。store_nameの値は、データを取得する必要があるストアの名前です。targetオプションを使用して、ストアからデータを取得する必要があるオブジェクトをShopifyで指定できます。

in:
  type: shopify
  apikey: xxxxxxxx
  password: xxxxxxx
  target: orders
  store_name: xxxxxxx
  from_date: '2016-09-07T00:00:00.000Z'
  to_date: '2016-09-07T01:00:00.000Z' # 1-hour duration
  incremental_field: created_at
out:
  mode: replace

この例は、2016年9月7日午前0時から2016年9月7日午前1時までのShopify Orderオブジェクトのダンプを指定する方法を示しています。

Shopify認証情報を取得するには、次の手順を実行します。

  1. https://www.shopify.com/でサインアップして、ユーザー用のオンラインストアを作成します。
  2. ユーザーに関する詳細を入力します。
  3. ビジネスに関する追加の詳細を入力します。
  4. プライベートアプリを作成します。
  5. ユーザーは、ストアのAPI認証情報を確認して使用し、さまざまな外部アプリケーションと接続できます。

パラメータリファレンス

次の表は、Shopify import integrationの設定パラメータについて説明しています。

NameDescriptionValueDefault ValueRequired
typeインポートのソース。"shopify"Yes
apikeyShopifyが提供するAPI Key。String.Yes
passwordShopifyが提供するpassword。String.Yes
store_nameレコードを取得するShopifyストア名。スペースは使用せず、ハイフン(-)を使用します。String.Yes
targetストアからデータを取得する必要があるShopifyオブジェクト。サポートされているターゲットは、products、customers、transactions、orders、inventory、metafieldsです。String.Yes
order_statusインポートする注文ステータスを指定します。指定されていない場合、デフォルトはopenです。サポートされているステータス:open、any、closed、canceled。String."open"No
retry_initial_wait_msec指定されたターゲットのShopify APIを呼び出してデータを取得するための各リトライロジックの初期待機時間(ミリ秒単位)を提供するパラメータ。Integer.No
retry_limit指定されたターゲットのShopify APIを呼び出してデータを取得する試行回数を提供するパラメータ。Integer.No
max_retry_wait_msec指定されたターゲットのShopify APIを呼び出してデータを取得する各リトライの最大待機時間(ミリ秒単位)を提供するパラメータ。Integer.No
from_dateレコードを取得する日時を指定するパラメータ。incrementalがfalseに設定されている場合、products、customers、transactions、ordersオブジェクトからデータをインポートするときにcreated_atがfrom_dateと見なされます。Date. (Date Format : yyyy-MM-dd or yyyy-MM-dd'T'hh:mm:ss.SSS'Z')Yes

to_date

レコードを取得する許容期間を指定するパラメータ。(Date Format : yyyy-MM-dd'T'hh:mm:ss.SSS'Z')。

  • to_datefetch_daysよりも優先度が高く、両方が指定されている場合はfetch_daysを上書きします。to_dateまたはfetch_daysのいずれか1つだけを使用するのが最適です。
  • 非incrementalモードで連続したインポートを実行する予定がある場合は、from_dateto_dateが重複しないようにしてください。例:これを怠ると、データの重複が発生します。

incrementalモードでは、from_dateto_dateは初期インポートパラメータに基づいて自動的に計算されます。

  • 1回目のインポート:from_date: 2017-10-10T00:00:00.000Zおよびto_date: 2017-10-10T01:00:00.000Z
  • 2回目のインポート:from_date: 2017-10-10T01:00:01.000Zおよびto_date: 2017-10-10T02:00:00.000Z

Date. (Date Format : yyyy-MM-dd or yyyy-MM-dd'T'hh:mm:ss.SSS'Z')

No. (省略した場合、data connectorはfetch_days設定によって期間を計算します)

fetch_daysto_dateが指定されていない場合、このパラメータはfrom_dateからレコードを取得する期間を計算するために使用されます。Integer.1No
incrementaltrueの場合、このパラメータはインクリメンタルロードを有効にします。Boolean。Falseいいえ
incremental_fieldインクリメンタルロードに使用するフィールド。サポートされるフィールド: created_at または updated_at。「transactions」ターゲットは updated_at をサポートしていません。String。"created_at"いいえ
metafield_resourceメタフィールドを取得するShopifyリソース。String。サポートされるリソース: product、customer、order、online store、shop。はい(ターゲットがmetafieldsの場合)
product_objectsメタフィールドを取得するproductのShopifyサブオブジェクト。String。サポートされるproductサブオブジェクト: product、product variant、product image、collection。"product"はい(ターゲットがmetafieldsで、metafield_resourceがproductの場合)
date_typeメタフィールドに使用するフィールド。サポートされるフィールド: created_at または updated_atString。はい(ターゲットがmetafieldsの場合)
product_idsメタフィールドを取得するプロダクトIDのリスト。カンマ区切り。String。はい(ターゲットがmetafieldsで、metafield_resourceがproductで、product_objectsがproductの場合)
product_variant_idsメタフィールドを取得するバリアントIDのリスト。カンマ区切り。String。はい(ターゲットがmetafieldsで、metafield_resourceがproductで、product_objectsがproduct_variantの場合)
product_image_idsメタフィールドを取得する画像IDのリスト。カンマ区切り。String。はい(ターゲットがmetafieldsで、metafield_resourceがproductで、product_objectsがproduct_imageの場合)
collection_idsメタフィールドを取得するコレクションIDのリスト。カンマ区切り。String。はい(ターゲットがmetafieldsで、metafield_resourceがproductで、product_objectsがcollectionの場合)
customer_idsメタフィールドを取得するカスタマーIDのリスト。カンマ区切り。String。はい(ターゲットがmetafieldsで、metafield_resourceがcustomerの場合)
order_objectsメタフィールドを取得するorderのShopifyサブオブジェクト。String。サポートされるorderサブオブジェクト: order、draft order"order"はい(ターゲットがmetafieldsで、metafield_resourceがorderの場合)
order_idsメタフィールドを取得するオーダーIDのリスト。カンマ区切り。String。はい(ターゲットがmetafieldsで、metafield_resourceがorderで、order_objectsがorderの場合)
draft_order_idsメタフィールドを取得する下書きオーダーIDのリスト。カンマ区切り。String。はい(ターゲットがmetafieldsで、metafield_resourceがorderで、order_objectsがdraft_orderの場合)
online_store_objectsメタフィールドを取得するonline storeのShopifyサブオブジェクト。String。サポートされるonline_storeサブオブジェクト: blog、article、page"blog"はい(ターゲットがmetafieldsで、metafield_resourceがonline_storeの場合)
blog_idsメタフィールドを取得するブログIDのリスト。カンマ区切り。String。はい(ターゲットがmetafieldsで、metafield_resourceがonline_storeで、order_objectsがblogの場合)
article_idsメタフィールドを取得する記事IDのリスト。カンマ区切り。String。はい(ターゲットがmetafieldsで、metafield_resourceがonline_storeで、order_objectsがarticleの場合)
page_idsメタフィールドを取得するページIDのリスト。カンマ区切り。String。はい(ターゲットがmetafieldsで、metafield_resourceがonline_storeで、order_objectsがpageの場合)
fetch_all_customers_metafieldsすべての顧客のメタフィールドのダウンロードを有効にします。customer_idsと連携します。String。いいえ​

ターゲット

サポートされるターゲットは、products、customers、transactions、orders、inventory、およびmeta fieldsです。

Products

Customers

![](/images/int/shopify-import-integration-cli/Screenshot-2025-01-14-at-11.32.37.png)

Transactions

![](/images/int/shopify-import-integration-cli/Screenshot-2025-01-14-at-11.33.56.png)

Orders

![](/images/int/shopify-import-integration-cli/Screenshot-2025-01-14-at-11.34.50.png)

Inventory

![](/images/int/shopify-import-integration-cli/Screenshot-2025-01-14-at-11.35.38.png)

サポートされているオブジェクト: Inventory Items, Locations, Inventory Levels ![](/images/int/shopify-import-integration-cli/Screenshot-2025-01-15-at-11.09.23.png) ![](/images/int/shopify-import-integration-cli/Screenshot-2025-01-15-at-11.09.28.png) ![](/images/int/shopify-import-integration-cli/Screenshot-2025-01-15-at-11.09.31.png)

Metafields

![](/images/int/shopify-import-integration-cli/Screenshot-2025-01-14-at-11.36.13.png)

サポートされているリソース: product, customer, order, online store, shop ![](/images/int/shopify-import-integration-cli/Screenshot-2025-01-15-at-11.20.04.png) リソース Product とオブジェクト ID ![](/images/int/shopify-import-integration-cli/Screenshot-2025-01-15-at-11.24.55.png) リソース Customer とオブジェクト ID ![](/images/int/shopify-import-integration-cli/Screenshot-2025-01-15-at-11.25.02.png) リソース Order とオブジェクト ID ![](/images/int/shopify-import-integration-cli/Screenshot-2025-01-15-at-11.25.11.png) リソース Online Store とオブジェクト ID ![](/images/int/shopify-import-integration-cli/Screenshot-2025-01-15-at-11.25.16.png) リソース Shop とオブジェクト ID ![](/images/int/shopify-import-integration-cli/Screenshot-2025-01-15-at-11.25.21.png)

インポートされるデータのプレビュー

td connector:preview コマンドを使用して、インポートされるデータをプレビューできます。

$ td connector:preview load.yml
+---------+--------------+------------------+----
| id:long | title:string | body_html:string | ...
+---------+--------------+------------------+----
| 1       | "33"         | pbody_htmlp  |
| 2       | "34"         | pbody_htmlp  |
| 3       | "35"         | pbody_htmlp  |
| 4       | "36"         | pbody_htmlp  |
| 6       | "37"         | pbody_htmlp  |
+---------+--------------+------------------+----

ロードジョブの実行

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

Treasure Data のストレージは時間によってパーティション分割されているため(Data Partitioning も参照)、--time-column オプションを指定することを推奨します。このオプションが指定されていない場合、データコネクタは最初の long または timestamp カラムをパーティショニング時間として選択します。--time-column で指定されたカラムのタイプは、long または timestamp のいずれかである必要があります。

データに時間カラムがない場合は、add_time フィルターオプションを使用して追加できます。詳細は add_time filter plugin を参照してください。

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

上記のコマンドは、既に 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" オプションで、Time Format カラムを「パーティショニングキー」に割り当てることができます。

スケジュール実行

定期的な Shopify インポートのために、定期的なデータコネクタ実行をスケジュールできます。Treasure Data のスケジューラーのロード分散と運用は、高可用性を実現するために最適化されています。Treasure Data のスケジューラーを使用することで、ローカルデータセンターに cron デーモンを配置する必要がなくなります。

スケジュールの作成

新しいスケジュールは、td connector:create コマンドを使用して作成できます。スケジュールの名前、cron 形式のスケジュール、データが保存されるデータベースとテーブル、およびデータコネクタ設定ファイルを指定します。これらの値は必須です。

$ td connector:create \
    daily_shopify_import \
    "10 0 * * *" \
    td_sample_db \
    td_sample_table \
    load.yml
cron パラメータは、@hourly@daily@monthly の3つのオプションも受け入れます。

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

スケジュールのリスト表示

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

$ td connector:list
+-----------------------+--------------+----------+-------+--------------+-----------------+----------------------------+
| Name                  | Cron         | Timezone | Delay | Database     | Table           | Config                     |
+-----------------------+--------------+----------+-------+--------------+-----------------+----------------------------+
| daily_shopify_import  | 10 0 * * *   | UTC      | 0     | td_sample_db | td_sample_table | {"type"=>"shopify", ... }  |
+-----------------------+--------------+----------+-------+--------------+-----------------+----------------------------+

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

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

% td connector:show daily_shopify_import
Name     : daily_shopify_import
Cron     : 10 0 * * *
Timezone : UTC
Delay    : 0
Database : td_sample_db
Table    : td_sample_table

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

% td connector:history daily_shopify_import
+--------+---------+---------+--------------+-----------------+----------+---------------------------+----------+
| JobID  | Status  | Records | Database     | Table           | Priority | Started                   | Duration |
+--------+---------+---------+--------------+-----------------+----------+---------------------------+----------+
| 578066 | success | 10000   | td_sample_db | td_sample_table | 0        | 2015-04-18 00:10:05 +0000 | 160      |
| 577968 | success | 10000   | td_sample_db | td_sample_table | 0        | 2015-04-17 00:10:07 +0000 | 161      |
| 577914 | success | 10000   | td_sample_db | td_sample_table | 0        | 2015-04-16 00:10:03 +0000 | 152      |
| 577872 | success | 10000   | td_sample_db | td_sample_table | 0        | 2015-04-15 00:10:04 +0000 | 163      |
| 577810 | success | 10000   | td_sample_db | td_sample_table | 0        | 2015-04-14 00:10:04 +0000 | 164      |
| 577766 | success | 10000   | td_sample_db | td_sample_table | 0        | 2015-04-13 00:10:04 +0000 | 155      |
| 577710 | success | 10000   | td_sample_db | td_sample_table | 0        | 2015-04-12 00:10:05 +0000 | 156      |
| 577610 | success | 10000   | td_sample_db | td_sample_table | 0        | 2015-04-11 00:10:04 +0000 | 157      |
+--------+---------+---------+--------------+-----------------+----------+---------------------------+----------+
8 rows in set

スケジュールの削除

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

$ td connector:delete daily_shopify_import

Out Plugin のモード

データ配置については、データを配置するターゲットデータベースとテーブルを選択し、インポートを実行する頻度を指定します。

  1. Next を選択します。Storage の下で、新しいデータベースを作成するか既存のデータベースを選択し、インポートしたデータを配置する新しいテーブルを作成するか既存のテーブルを選択します。

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

  3. オプションで、データベース名を入力します。

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

  5. オプションで、テーブル名を入力します。

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

    • Append(デフォルト)- データインポートの結果がテーブルに追加されます。 テーブルが存在しない場合は、作成されます。
    • Always Replace - クエリの結果出力で既存のテーブルの内容全体を置き換えます。テーブルが存在しない場合は、新しいテーブルが作成されます。
    • Replace on New Data - 新しいデータがある場合にのみ、結果出力で既存のテーブルの内容全体を置き換えます。
  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 で転送の結果を確認できます。