TROCCOでSquareのデータを転送してみた

# :confetti_ball: TROCCOが転送元Squareに対応しました!!

# :train: TROCCOとは?

クラウドETL（データ転送・データ変換）サービスです。
※筆者はTROCCOのカスタマーサクセスをしています。

https://primenumber.com/trocco


# 🚀 Squareとは？

いわゆるPOSシステムの1つです。

https://squareup.com/jp/ja

↓の端末はお店でもよく見ますね。

https://squareup.com/shop/hardware/jp/ja/products/card-payment-terminal-jp

スマホやタブレットを活用したクラウド型のPOSシステムで、最初は小規模ビジネス向けの決済サービスとしてスタートしましたが、今ではPOS、在庫管理、予約システム、オンライン販売など幅広いビジネス支援ツールを提供するプラットフォームとして活用されているようです。
POSアプリは無料で利用可能で、初期費用がかからないことも強みのひとつです:point_up:

---

# :satellite_orbital:　TROCCOで取得できるSquareのデータ一覧（2025/03現在）


| 取得対象 | APIエンドポイント | 説明 | データ利活用アイデア | 具体的な活用例 |
| --- | --- | --- | --- | --- |
| **支払い一覧** | [List Payments](https://developer.squareup.com/reference/square/payments-api/list-payments) | 支払いの一覧を取得します。 | 詳細な売上分析 | 時間帯別、商品別、顧客別の売上分析、売れ筋商品の特定、売上の変動傾向の把握 |
| **返金一覧** | [List Refunds](https://developer.squareup.com/reference/square/refunds-api/list-refunds) | 返金の一覧を取得します。 | 売上分析、顧客分析 | 返金傾向の分析、顧客満足度への影響分析、返品率の高い商品の特定 |
| **支払いリンク一覧** | [List Payment Links](https://developer.squareup.com/reference/square/checkout-api/list-payment-links) | 支払いリンクの一覧を取得します。 | 販売促進、顧客体験向上 | 特定のキャンペーンや商品に対する支払いリンクの利用状況分析、効果測定 |
| **チャージバック一覧** | [List Disputes](https://developer.squareup.com/reference/square/disputes-api/list-disputes) | チャージバック（支払いの異議）の一覧を取得します。 | リスク管理、顧客分析 | チャージバック発生傾向の分析、顧客属性との関連性分析、不正利用対策 |
| **チャージバック証拠一覧** | [List Dispute Evidence](https://developer.squareup.com/reference/square/disputes-api/list-dispute-evidence) | 特定のチャージバックに関連する証拠の一覧を取得します。 | リスク管理 | チャージバックの証拠分析、不正利用の特定、証拠に基づいた対応策の検討 |
| **請求書一覧** | [List Invoices](https://developer.squareup.com/reference/square/invoices-api/list-invoices) | 請求書の一覧を取得します。 | 会計処理の自動化、顧客管理 | 請求書発行状況の分析、未払い請求の特定、顧客ごとの支払い状況の把握 |
| **カード一覧** | [List Cards](https://developer.squareup.com/reference/square/cards-api/list-cards) | カードの一覧を取得します。 | 顧客管理、マーケティング | 顧客のカード情報に基づいた属性分析、ターゲットを絞ったキャンペーンの実施 |
| **サブスクリプション一覧** | [List Subscriptions](https://developer.squareup.com/reference/square/subscriptions-api/list-subscriptions) | サブスクリプションの一覧を取得します。 | 顧客管理、売上予測 | サブスクリプション登録状況の分析、解約率の分析、売上予測 |
| **注文一覧** | [Search Orders](https://developer.squareup.com/reference/square/orders-api/search-orders) | 注文の一覧を検索・取得します。 | 売上分析、在庫管理、顧客分析 | 注文傾向の分析、顧客ごとの購買履歴分析、在庫最適化 |
| **カタログ一覧** | [List Catalog](https://developer.squareup.com/reference/square/catalog-api/list-catalog) | カタログオブジェクトの一覧を取得します。 | 商品管理、マーケティング | 商品の人気度分析、カテゴリ別の売上分析、商品提案の最適化 |
| **在庫数一覧** | [Batch Retrieve Inventory Counts](https://developer.squareup.com/reference/square/inventory-api/batch-retrieve-inventory-counts) | 在庫数の一覧をバッチで取得します。 | 在庫管理 | リアルタイム在庫管理、在庫切れ防止、過剰在庫の削減 |
| **顧客一覧** | [List Customers](https://developer.squareup.com/reference/square/customers-api/list-customers) | 顧客の一覧を取得します。 | 顧客管理、マーケティング、ロイヤルティプログラム | 顧客属性に基づいたターゲティング、パーソナライズされた商品提案、ロイヤルティプログラムの構築 |
| **顧客カスタムフィールド一覧** | [List Customer Custom Attributes](https://developer.squareup.com/reference/square/customer-custom-attributes-api/list-customer-custom-attributes) | 顧客のカスタム属性の一覧を取得します。 | 顧客管理、マーケティング | 顧客の興味関心に基づいた商品提案、よりパーソナライズされた顧客体験の提供 |
| **スタッフ一覧** | [Search Team Members](https://developer.squareup.com/reference/square/team-api/search-team-members) | スタッフ（チームメンバー）の一覧を検索・取得します。 | 業務効率化、人材管理 | スタッフのパフォーマンス分析、シフト管理の最適化、人材配置の効率化 |

※AIくんにまとめてもらったため、誤記載があるかもしれません。


# :sunny:　最もよく使われるであろう「支払い一覧（List Payments）」をTROCCOで連携してみます

## 接続情報の作成

まずはSquareの接続情報を作成します。詳しい作成方法は以下をご確認ください。

https://documents.trocco.io/docs/connection-configuration-square

とはいえ、手順はとてもシンプルでした。

1️⃣ ログインする
2️⃣ `+`を押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/fe0d2329-bd2d-4e99-8edd-b9ba5d8ad75f.png)
3️⃣ アプリの名前を決める
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/c20b36ad-05f2-4722-8536-a869e9b483cf.png)
4️⃣ するとチェックボックスが表示されますが、何を選択しても大丈夫です。(それっぽいものを選択しました)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/92656d55-daab-4b71-9841-84ef78301d2a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/531a550f-2286-4d16-8e89-f33f5d5a8a55.png)

5️⃣アクセストークンが作成されるのでコピー。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/ead0fad2-dfc9-43f5-9882-272c0297d5a4.png)

6️⃣ TROCCOの接続情報に貼り付けて、保存。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/a192e608-f38c-4d36-886d-5ea13d048b14.png)


https://trocco.io/connections/square/new

---

## 転送設定の作成

転送設定として設定するのは、取得対象としたいエンドポイントだけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/56213128-721a-45f4-87ca-87632fc6289a.png)

転送先(今回はSnowflake)の設定をしたら、プレビューを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/32a0e89a-c305-4925-9081-15795c867e36.png)

---


## 転送する前に、プレビュー上で気になった項目をちょっと見てみます。

## `amount_money`
tip_money を含まない、この支払いに処理された金額。つまり金額。

デフォルトではJSONの中に通貨と値が格納されています。
```json
{"currency":"JPY","amount":85}
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/c92f387d-0943-49b0-b4e7-d73110839a3b.png)
JSONはデータ転送後に展開してもいいですが、このくらいのJSONならTROCCOで展開したほうが楽かもしれません。
ということで、`currency`と`amount`にそれぞれ展開します。

JSONカラムを展開に☑し、任意のカラム名を入力、**カラム内のJSONからのJSONパス**を指定します。
この場合は`currency`と`amount`を入力すればOK。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/52aee451-d4a2-4a58-a0c2-5eeec661d5df.png)

展開できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/579ea642-58c5-4b01-8973-ef9e37935412.png)

---

## `tip_money`
チップとして指定された金額。

---

## `total_money`
`amount_money` および `tip_money` を含む支払総額。

---

## `cash_details`
現金払いの詳細。`source_type` が CASH の場合のみ入力されます。
要するに、お預かり金額（`buyer_supplied_money`）と お釣り（`change_back_money`）の情報です。

こちらもJSONにまとめられています。
```json
{"change_back_money":{"currency":"JPY","amount":0},"buyer_supplied_money":{"currency":"JPY","amount":85}}
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/40e5f5c3-445e-4cba-9d3a-fbffe48eadb1.png)

TROCCO上で展開しようとすると、以下の様な設定になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/14204e6e-3ba9-41da-ae6e-aa60261a9550.png)

それぞれのJSONパス設定は以下の通りです。
- `buyer_supplied_money.currency`
- `buyer_supplied_money.amount`
- `change_back_money.currency`
- `change_back_money.amount`

展開できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/080975dc-6341-489d-a0f4-ca468c22b386.png)

---

#### 類似の項目
- `bank_account_details`（銀行支払詳細）
- `card_details`（カード払い詳細）
- `external_details`（外部支払い詳細）
- `wallet_details`（ウォレット払い詳細）

などがあります。
ギフトカードの支払いは`external_details`、ほにゃららPayは`wallet_details`に該当するようです。

---

## 設定を保存して、転送実行
転送先(Snowflake)へデータを転送することができました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3033246/7f634638-2815-4c05-aa37-aa22678b3f26.png)

---

# :stars: おわりに

今回はTROCCOを使って、Squareからデータを転送してみました。
Squareのデータは比較的シンプルな形式で、データ転送後の統合・分析にも利用しやすいと感じました。
天候データやCRMデータと組み合わせることで、より詳細な売上分析ができそうですね!!

---

:point_down:TROCCOの最新アップデート情報はこちら:point_down:

https://documents.trocco.io/docs/release-notes