HubSpot は、マーケティング、営業、カスタマーサービスを統合したクラウドベースのCRM(顧客関係管理)プラットフォームです。企業が顧客との関係を効率的に管理し、マーケティングオートメーション、営業プロセスの最適化、カスタマーサポートの向上を実現するためのツールを提供しています。HubSpot のデータベースには、連絡先(Contacts)、会社(Companies)、取引(Deals)などの重要な顧客情報が格納されており、CData HubSpot ドライバーを利用することでこれらのデータを標準SQL で効率的に操作することができます。
Upsertとは
Upsert(アップサート)は「Update」と「Insert」を組み合わせた造語で、データが既に存在する場合は更新(Update)を行い、存在しない場合は新規挿入(Insert)を行う操作です。この機能により、データの重複を避けながら効率的にデータベースを管理できます。HubSpot ドライバにおけるUpsert 操作は、CRM データの一括更新や新規顧客情報の追加において特に有効です。
Upsert構文
HubSpot ドライバーでのUpsert 文の基本構文は以下の通りです:
UPSERT INTO Contacts (<更新するカラム>, <更新キーカラム>, [ExternalIdColumn]) VALUES(更新する値, 更新キー, 更新キーカラム名);更新キーカラム>更新するカラム>
この構文では、指定された更新キーを基準にレコードの存在を判定し、新規追加または更新操作を実行します。
Upsert 構文の注意点
以下にUpsert を実行する際の注意点を述べます。
一意制約の確認が必須
Upsert 操作を正しく実行するために、更新キーカラムには一意制約が付与されている必要があります。一意制約が設定されていないカラムを更新キーとして使用するとエラーが発生します。カラムの一意制約はsys_tablecolumns システムテーブルのHasUniqueValues カラムで確認できます。
たとえば以下のクエリを使用して、Contacts テーブルで一意制約が付与されているカラムを確認できます:
SELECT * FROM sys_tablecolumns WHERE tablename = 'Contacts' AND HasUniqueValues = true;
ExternalIdColumnの指定
「ExternalIdColumn」カラムには、更新キーとして使用するカラム名を文字列として指定する必要があります。この設定により、ドライバーがどのカラムをキーとしてレコードの一意性を判定するかを決定します。
Upsertの実行例
以下の例では、メールアドレスが「[email protected]」の連絡先が既に存在する場合は会社名を「株式会社TEST」に更新し、存在しない場合は新しい連絡先レコードとして追加します:
UPSERT INTO Contacts ([Company name], [Email], [ExternalIdColumn])VALUES('株式会社TEST', '[email protected]', 'Email');
バッチUpsert
HubSpot ドライバでは、複数のレコードを一度に処理するバッチUpsert 機能も提供されています。この機能を使用することで、大量のデータを効率的に更新・挿入できます。
バッチUpsert 構文
バッチUpsert では、TEMPテーブルを使用してデータを一時的に格納し、その後一括でUpsert 操作を実行します:
-- 一時テーブルにデータを準備
INSERT INTO テーブル名#TEMP (カラム1, カラム2, [ExternalIdColumn]) VALUES (値1, 値2, 'キーカラム名');
-- バッチUpsert実行
UPSERT INTO テーブル名 (カラム1, カラム2, [ExternalIdColumn]) SELECT カラム1, カラム2, [ExternalIdColumn] FROM テーブル名#TEMP;
バッチUpsert の実行例
以下の例では、複数の会社情報を一括で更新します:
-- 1件目のデータを一時テーブルに挿入
INSERT INTO Companies#TEMP ([Company name], [Email], [ExternalIdColumn]) VALUES ('株式会社TEST', '[email protected]', 'Email');
-- 2件目のデータを一時テーブルに挿入
INSERT INTO Companies#TEMP ([Company name], [Email], [ExternalIdColumn]) VALUES ('株式会社SAMPLE', '[email protected]', 'Email');
-- 一括Upsert実行
UPSERT INTO Companies ([Company name], [Email], [ExternalIdColumn]) SELECT [Company name], [Email], [ExternalIdColumn] FROM Companies#TEMP;
この方法により、複数のレコードを効率的に処理し、パフォーマンスの向上とデータの整合性を同時に実現できます。
まとめ
HubSpot ドライバーのUpsert は、CRM データの効率的な管理において非常に有用な構文です。特にバッチ処理を活用することで、データの品質を保ちながら大規模なデータ操作を実行できます。HubSpot ドライバーは30日間無料で試用できます。HubSpot との連携をご検討の方はぜひお試しください