2022/9/22 JAWS-UG TOHOKU
Amazon Appflow でSalesforce to Snowflake へのデータローディング(EL)をやってみたJAWS-UG TOHOKU - 東北で働くエンジニアでAWSを語る会 #jawsugtohoku2022/09/22CData Software Japan宮本
View Slide
Amazon Appflow でSalesforce to Snowflake へのデータローディング(EL)をやってみたが出来なかった話💦JAWS-UG TOHOKU - 東北で働くエンジニアでAWSを語る会 #jawsugtohoku2022/09/22CData Software Japan宮本
先にお伝えしますSalesforce の取引先情報をAppflowの簡単な設定でSnowflake にデータローディングするはずが、Appflow側の設定か何かで出来ませんでしたm(__)m
自己紹介宮本 航太(@miyamon44)CData Software Japan 合同会社→主にSaaSのAPIにSQLでアクセスできるコネクタやアプリケーションを開発・提供プロダクトチーム→データパイプライン関連の問い合わせやサポートを中心に日々従事。他にはAWSなどのクラウドサービスと自社製品での検証や技術ブログ、たまにコネクタ開発など色々
なぜAppflow でSalesforce → Snowflake連携を試そうとしたのか?
仕事柄、こんな問い合わせを受けることがよくあるので・・その1「部門毎で管理してるデータ(SaaS,etc)を横断的に可視化したいです!」「ごりごりのデータ分析基盤構築までは考えてないです!!」ELTでCloudDWHとかに加工無しデータを持ってくるところからで良さそうかなーー
仕事柄、こんな問い合わせを受けることがよくありますその2「GAやFBAdsなどのマーケティング関連のデータを分析したいので、そろそろデータ分析基盤を置きたいと考えています!」「けど開発したくないしサーバーとかも管理したくないです!!」SaaS 系のETLもしくはELTサービスが欲しいんだなーー
仕事柄、こんな問い合わせを受けることがよくありますその3「Salesforce とかMarketo から顧客・リードデータをDWH上(Snowflake)で分析したいっす!」「けどアドホックで良いのでなるべくお金を掛けないで実現したいっす!!」API経由のデータだけどアドホックに簡単に取得できるサービスが欲しいのかな
振り返ると・・・ELTでCloudDWHとかに加工無しデータを持ってくるところからで良さそうかなーーSaaS 系のETLもしくはELTサービスが欲しいんだなーーAPI経由のデータだけどアドホックに簡単に取得できるサービスが欲しいのかな
Amazon Appflow でも良いんじゃない?
Amazon Appflow
Amazon Appflow is なに?SaaS データを中心としたデータ連携(転送?)サービス
データソースコネクタ結構ニーズがありそうなコネクタが揃っている!(個人的には汎用系コネクタあるとなお嬉しかった)
ディスティネーションコネクタSaaS → S3 というパターンから、SaaS → Cloud DWHSaaS → SaaS までもできる例えば、、、Zendesk でチャット対応したユーザーの情報をSalesforce に書き込む例えば、、、Salesforce、Marketo のユーザー情報をSnowflake で統合するとか
Amazon Appflow is ETLか? ELTか?
Amazon Appflow is ETLか? ELTか?## ETL
Amazon Appflow is ETLか? ELTか?## ELT
Amazon Appflow is ETLか? ELTか?Appflow内で行える変換機能- データソースと同期先のフィールドマッピング- 取込みデータの妥当性- フィルター条件- 追加フィールドの取込み- 値のマスキング、文字列の切り捨て設定※Salesforceの場合は削除レコードの扱いを設定できた基本的にはデータをそのまま送信先に転送するELTサービス
Salesforce → Snowflake を試してみた(冒頭でもお伝えしましたが)Salesforce の取引先情報をSnowflake に変換なしでそのまま連携。構成はこんなシンプルな感じに自動連携を。
Salesforce → Snowflake を試してみたちなみにAppflow のSnowflake への接続設定を確認すると、間に外部ステージとして S3 を挟むことがわかった
Salesforce の接続設定OAuth での認証で接続
Snowflake の接続設定Snowflake 側から参照するS3へのパスを設定したときのステージ名を入力する..
接続エラーSnowflake からはCOPYコマンドでデータを取得することはできてるものの、 Appflow からはいろいろ試したものの接続できず、、、頼みの綱のログも出なかったので万事休す、、、誰かこのエラーの対処方法わかる方いたら教えてホシイデス・・・_ | ̄|○
仕切り直しで構成変更(ノーコード感は薄くなるが…)Salesforce から S3 にデータをCSV出力し、それを定期的に Snowflake の COPYコマンドで取得する方法に切り替え
S3 への接続設定オンデマンド、スケジュール実行が選べる
Appflow のフローが作成完了
Appflow の実行Appflow のフローが正常終了- S3にフロー名のフォルダが作成される- 実行単位でフォルダが分けられる- 実行日時付きのファイルが作成される
Snowflake 側からS3 のデータを取りに行くSnowflake 側でやること- 連携用テーブル作成- COPYコマンドを実行- COPYコマンドを実行するタスクをスケジューリング化
ようやくSnowflake 側にSalesforce のデータを定期的に取得することができました!ちなみに1度ロードしたS3のファイルは次回からは読まないようになってたのは個人的な発見でした
まとめ- (色々ありましたが)ELTのデータローディング部分ではAppflow は手軽に試せる!特にAPIを意識しているビジネスサイドの方におすすめ- Appflow のSnowflake 連携はきっと簡単なはず!しかし世の中の数人くらいは同じエラーに遭遇するかも?- HTTPリクエストを指定できる汎用系コネクタか、DB系コネクタがあると嬉しい- ログ系がもう少し簡単に確認できると更に嬉しい特にデータソースへの生のリクエストとレスポンスなど見れると安心
最後にエンジニアメンバー募集中です!!ビビッときた方!まずは気軽に話でもしてみませんか??https://www.wantedly.com/companies/cdata2/projects
Thank you!!