Alteryxを使ってSalesforceのテストレコードの投入をしやすくしたお話

2021.12.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Hola〜皆さんこんにちは!Salesforceシステム管理者の清水です。

私は普段からSalesforceを触っている身なのですが、今日は社内のデータ分析のエンジニアさんに業務相談をした結果、Salesforceの業務にすごく役立った事例があったのでご紹介したいと思います。

Sandboxへのテストレコード投入を行いたい

以前にもSalesforceのSandboxネタの記事を書きましたが、Sandboxにはまず種類が複数ありテストレコードが入っていないものも存在しています。

[Salesforce]小ネタ DeveloperのSandboxに簡単にレコードを送信するには?

条件が何もないレコード(要はテストできればレコードとしてはなんでもいい!)と言ったケースの場合は、上記の方法でも簡単にレコードをDeveloper Sandboxへ投入することが可能です。

しかし、今回開発者の進地の方から、請求のテストを行うのに特定の条件の取引先を抽出して、それらの取引先に付随するカスタムオブジェクトのレコードをリレーションを保ったままDeveloper Sandboxに投入することはできないか?と言った話が上がりました。

 

こういう時、Salesforceに携わっている皆様はどうされていますか?ぜひ他社事例を聞いてみたいです。

Salesforce社の観点

具体的に相談はしていませんが、Salesforce社におそらく聞いてもFull Sandboxの購入を検討してくださいになるでしょう。

なぜなら、Partial Sandboxだとレコードは一部しか自動でコピーされてこず、今回のテストの条件に含めたかった取引先が全て入ってこないからです。

種類別 Sandbox ライセンスおよびディスク使用制限

弊社でも、もちろんもっと大規模な改修に際してテストが必要だと判断すれば費用がかかったとしても、Full Sandboxはいずれ検討することになるかもれません。ただ今の時点ではDeveloper Sandboxに特定の条件のレコードが投入できればテストは可能だということだったので、何か方法を考えてみました。

SOQL? それとも・・・

開発者コンソールでSOQLを叩いてみた

1番最初にやってみた内容は、開発者コンソールで特定の条件で抽出した取引先のIDを元に、複数のカスタムオブジェクトのデータからそれらの取引先と紐づいているレコードの抽出をしてみました。こんな感じです。

SELECT Id, Name FROM SOMEObj_c WHERE  AccountID_External_c in 
 (SELECT Number FROM SOMEObj_c)

ただしこちらを試してから発覚したのですが、指定できる条件に限りがあります。下のような例でいくと外部IDを指定して取得しています。しかしその数が400件超えたあたりで指定するIDが多すぎると言ったエラーになってしまいました。

そのほか、SOQL文を書くのが非常に大変です。抽出したいレコードのIDをわざわざSOQL文に上記のように入れる必要があるからです。

データ加工ツールの登場

プログラムを書くしかないのかなぁと感じていたところ、社内のデータ分析チームのエンジニアさんに相談してみたら、Alteryxの提案をしてくださいました。

このようなリレーションになっていて、取引先を起点にして、各カスタムオブジェクトに入っている取引先IDを結合し抽出できればSandboxへ投入するためのレコードが作成できます。

Alteryxでどうやったか

レポート作成・結合

最初に抽出したい取引先の条件のレポートをSalesforce上で作成しました。

その後、データローダーで全部の取引先のレコードをエクスポートしてきまして、以下のようにIDで結合して条件に合致している取引先のレコードを全て抽出できました。

Leftの方に、特定の条件でしぼったレポートにいる取引先で、Rightがデータローダーから取得した取引先全件になります。

こうすることで、データローダーから抽出した全ての取引先の中から、特定の条件の取引先だけ抽出できるようになるので、あとは外部ID項目をSandboxに作ってデータローダーで投入していけばOKです。

データローダで外部 ID を使用して関連レコードをインポートする

同じような要領で、結合データをカスタムオブジェクト分複数用意しました。なお、SalesforceにはID項目が18桁のものと15桁の二種類あるのですが、Alteryxだと桁数が違った場合エラーになってしまうのでそういう時には、「フォーミュラ」を使うとうまくできました。

Alteryxの良いところ

Alteryxの良いところは、2つのデータを結合するのが項目のマッピングだけで、とても簡単なところと実行後すぐにデータを出力できます。

また取引先ー取引先責任者のようなリレーションの場合、先に取引先で結合したデータをもとに、取引先責任者のデータを見に行くといったワークフローも作成可能なので、一連のフローでできるのがとても楽でした。

そして一度作成したワークフローはファイルを保存しおけば、再度Alteryxで開いて実行が可能なので、再利用しやすいです。Sandboxへのレコード投入は何度か期間をおいて行うことが多いので、一から作り直さないでいいのはとても助かります。

終わりに

今回は、単純にSalesforceからレポートを作成し、そのファイルとデータローダーのファイルを結合して投入データを作成してみました。

Salesforceに直接繋げる方法もあるので、こちらの方がレポートをそのまま呼び出せたりデータローダーから抽出する手間が省けるので良さそうです。

AlteryxからSalesforce.comにアクセスする

カスタムオブジェクトが複数増えてくると、Salesforceのレポートだけでは足りないケースも多々ありますので、そういった場合にも、こういったデータ加工が可能なツールの検討をお勧めします。