トレジャーデータの取引先企業のデータをセールスフォースに自動連携した作業記録
奉行→RSDから流れてきた、トレジャーデータの取引先企業のデータをセールスフォースに自動連携するという作業記録。
営業サイドあるあるで、元データがめちゃくちゃになってて、おかしなデータの整理整頓に苦労した…。
(注)IDは適当な値に書き換えています。
1. TDのConnectionsでsales_force_connectionを設定して、TD上にSFの取引先企業のデータを保存。
毎日00:00に設定
2. TD取引先データとSF取引先データを付け合わせるSQLを作成
- 企業と店舗の親子関係を成立させるために、企業テーブルと、店舗テーブルを先に作成して連結
- TDにある住所が1行になっているので、郵政から取り込んだ全国の住所データを連結して、住所を分割
- 一部企業のみ、bill_cd(奉行コード)と企業名を変更する
3. Query作成画面右上にあるOutput resultsでsales_force_connectionを設定してクエリーを実行
Object = SFテーブルID Mode = update Keys = JOINに使うkey(今回の場合、bill_cd) その他はそのまま
WITH companys AS ( SELECT t1.tokcd bugyoCode, t2.id sfId FROM rsd_salesdb_mandi.tok_m t1 LEFT JOIN rup_datamart.sf_account t2 ON t2.bugyocode__c = t1.tokcd WHERE t1.tok_tenmei = '' AND t1.tok_syamei NOT LIKE '%無効%' ) , shops AS ( SELECT t1.tokcd bugyoCode, CASE WHEN t1.tok_syamei = '株式会社A' THEN 'D0000' WHEN t1.tok_syamei = '株式会社B' THEN 'D0001' ELSE t1.bill_cd END AS seikyuCode, CASE WHEN t1.tok_syamei = '株式会社C' THEN '株式会社CC' WHEN t1.tok_syamei = '株式会社D' THEN '株式会社DD' ELSE t1.tok_syamei END AS companyName, t1.tok_tenmei shopName, t1.tok_zip zip, t1.tok_add1 address, t1.tok_add2 builName, t1.tok_tel tel, t1.tok_fax fax, t2.id sfId, t2.parentid sfParentId, t3.col_6 state, t3.col_7 city, replace(t1.tok_add1, concat(t3.col_6, t3.col_7), '') street FROM rsd_salesdb_mandi.tok_m t1 LEFT JOIN rup_datamart.sf_account t2 ON t2.bugyocode__c = t1.tokcd LEFT JOIN rup_datamart.zipcode_master t3 ON CAST(t3.col_2 AS VARCHAR) = replace(t1.tok_zip, '-', '') AND t1.tok_add1 LIKE concat(t3.col_6, t3.col_7, '%') WHERE t1.tokcd NOT IN ('00000000','00000000','00000000','00000000','00000000') -- 連携したくないリスト AND t1.tokcd NOT IN ('00000000','00000000') -- 仕入先除外リスト AND t1.tok_syamei NOT LIKE '%無効%' ) , owner AS ( SELECT t1.tokcd bugyoCode, t2.id sfOwnerId FROM rsd_salesdb_mandi.tok_m t1 LEFT JOIN rup_datamart.sf_user t2 ON t1.tanto_cd = t2.code__c WHERE t1.tanto_cd != '' AND t2.isactive = 1 ) , tanto AS ( SELECT t2.tokcd bugyoCode, t1.id sfTantoId FROM rup_datamart.sf_user t1 LEFT JOIN rsd_salesdb_mandi.tok_m_sub t2 ON t2.rounder_id = t1.code__c WHERE t2.rounder_id != '' ) SELECT -- distinct shops.sfId id, distinct shops.bugyoCode BugyoCode__c, CASE WHEN shops.shopName = '' THEN shops.companyName ELSE concat(shops.companyName, ' ', shops.shopName) END AS Name, CASE WHEN shops.shopName = '' THEN 'sf_id' ELSE 'sf_id' END AS RecordTypeId, -- 本店, 支店 CASE WHEN shops.shopName = '' THEN '' ELSE companys.sfId END AS ParentId, shops.tel Phone, shops.fax Fax, '日本' BillingCountry, shops.zip BillingPostalCode, shops.state BillingState, shops.city BillingCity, shops.street BillingStreet, CASE WHEN owner.sfOwnerId IS NULL THEN 'sf_id' ELSE owner.sfOwnerId END AS OwnerId, tanto.sfTantoId SA__c FROM shops LEFT JOIN companys ON companys.bugyoCode = shops.seikyuCode LEFT JOIN owner ON owner.bugyoCode = shops.bugyoCode LEFT JOIN tanto ON tanto.bugyoCode = shops.bugyoCode
セールスフォースって高い割に使いにくいな…
KINTONの方が全然いい