DX攻略部がリニューアルしました!

Data CloudとSnowflakeの連携手順を徹底解説!めっちゃ使いやすくなった!

こんにちは、DX攻略部のラムネです。

ついにData CloudがSnowflakeのサポートを開始しました!!

正直こちら個人的にとても嬉しいニュースでして、Data Cloud(DC)の最大の欠点は外部からのデータ取り込みの手段が少なく扱いづらいことでしたが、今回のアプデでその問題が解消されました。

2024/04/04から新たに「Snowflake」と「BigQuery」という強力な2つのサービスが対応しましたので、今まで以上にDCへのデータ取り込みが楽になります。

ラムネ
DCがSnowflakeとBiqQueryに対応した今回のアプデは激アツ!

実際、今までDCに外部のデータを取り込もうとすると、Amazon S3やMarketing Cloudなど経由してデータ取得する必要があり、データを繋ぎこむまでの過程が少々複雑でしたので、本当に嬉しい限りです。

今回、私ラムネが早速Data CloudとSnowflakeの連携周りの検証を行ってみたので、その手順躓きポイントを解説していければと思います。

Data CloudとSnowflakeを連携するメリットとは?

Data CloudとSnowflakeを連携するメリットは主に2点あるかと思います。

Snowflakeと連携するメリット

  1. Snowflakeを経由することで外部データを取り込みやすくなる
  2. Snowflake側でデータ整形や加工を行った状態でData Cloudへ取り込める

Snowflake連携の最大のメリットは、やはり外部データの取り込みがやりやすくなることです。

Data CloudをCDPとして定義するには今までインプット周りがあまりに弱すぎでしたが、Snowflakeとの連携によりこの点が改善されたと言えます。

またSnowflakeはDWHとしての役割を持っているため、SQLやPython等で予め加工したデータをData Cloudに取り込める点もメリットとして大きいかと思います。

Data Cloudはデータストリームで取り込んだデータ同士をマッピングで紐づけを行いますが、それを行うためもDC取り込みの前段階でデータを一定整えておく必要があります。

    Salesforce Data Cloudとは?

    SalesforceのData Cloudとは、Salesforce CRMとの親和性が高いCDP(カスタマー・データ・プラットフォーム)のことです。

    CDPといえばTresuare DataやB→dashなども有名ですが、Data Cloudは通常のCDPとは少し概念が異なります。

    具体的には「SalesforceのCRMを最大限活かすためのCDP」というのがData Cloudのコンセプトになっています。

    ユースケースとしては、SalesforceのCRM上の「顧客データ」と、Salesforceの外に存在する販売履歴データやWEB上のアクセスデータ等の「外部データ」をData Cloud上で統合・分析・加工し、施策に活かすことができるツールとなっています。

    ラムネ
    SalesforceのCRM上の顧客データをData Cloud上で活用することで、より応用力のある施策や分析ができるよ!

    Snowflakeとは?

    Snowflakeとは、クラウド上で動作するSaaS方のDWH(データ・ウェア・ハウス)です。

    DWHと言えばRedshiftやBigQueryなども有名ですが、Snowflakeは独自のアーキテクチャにより高速にデータを処理することができることで昨今注目されているサービスです。

    その他にも大量のデータを活用する上で便利な機能も豊富に揃っているため、Snowflakeにデータをおいて管理しておけば、その後の活用がしやすくなるという理由で採用されたりもします。

    ラムネ
    Snowflakeは他ツールとの連携にも優れているから非常に便利!

    Data CloudとSnowflakeを連携する上で用意すべきものとは?

    Data CloudとSnowflakeを連携する上で用意すべきものは下記の2点です。

    1. Data Cloud(Data Cloud Provisioning)のアカウント
    2. Snowflakeのアカウント

      Data Cloudは有償版でも無償版でも構いません。

      無償版の場合は「Customer Data Cloud – Segmentation & Activation」のオプションは別途契約するのがおすすめします。

      Customer Data Cloud – Segmentation & Activationとは、セグメントと有効化機能を開放するためのオプションです。※年間12万円(税別)ほどかかります。
      関連記事

      こんにちは、DX攻略部のしゅうとです。 Salesforce社で最近発売されたData Cloudの価格について解説していければと思います。 昨今のDXの発展により、顧客にパーソナライズしたマーケティング施策が重要になってきてお[…]

      Snowflakeについては「Enterprise Edition」以上のアカウントであれば問題ありません。

      Data CloudとSnowflakeの連携手順とは?

      ここからは本題のData CloudとSnowflakeの連携手順を解説していきたいと思います。

      まず大前提として、Data CloudとSnowflake連携はSnowflake側の「キーペア認証」という方法で行われます。

      ラムネ
      キーペア認証とは、公開鍵と非公開鍵を使った認証のことだね!

      そのため全体の流れとしては、秘密鍵と公開鍵を作ってSnowflake側に公開鍵を登録し、Data Cloud側が秘密鍵を開けるという形になります。

      STEP1: 秘密鍵を生成する

      まずはペアキー認証で使用する秘密鍵を生成しましょう。

      下記のopensslコマンドを使うことで秘密鍵を生成できます。

      openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_snowflake_sfdc_key.p8 -nocrypt

      -outオプションで指定しているrsa_snowflake_sfdc_key.p8はファイル名ですのでわかりやすい名称を設定ください。

      上記で設定したファイル名はSTEP2の公開鍵を生成するときも使用しますので注意しましょう。(公開鍵は秘密鍵ベースに生成します)

      またData Cloudで使用できるのは非暗号化キーのみのようですので-nocryptオプションを付けるようにしましょう。※地味にハマりました。

      生成されたファイルの中身が下記のようになっていれば成功です。

      -----BEGIN PRIVATE KEY-----
      MIIE......NIUe==
      -----END PRIVATE KEY-----

      STEP2: 公開鍵を生成する

      次に、Snowflake側に登録する公開鍵を生成します。

      今回も下記のopensslコマンドを使うことで公開鍵を生成できます。

      openssl rsa -in rsa_snowflake_sfdc_key.p8 -pubout -out rsa_snowflake_sfdc_key.pub
      

      -inオプションで指定しているrsa_snowflake_sfdc_key.p8は、STEP1で生成したファイル名を指定するようにしてください。

      -outオプションで指定しているrsa_snowflake_sfdc_key.pubは、公開鍵を出力する際のファイル名ですので任意の文字列を設定いただければと思います。

      上記コマンドを実行で生成されたファイルの中身が下記のようになっていれば成功です。

      -----BEGIN PUBLIC KEY-----
      MII......IENI
      -----END PUBLIC KEY-----

      STEP3: Snowflake側の設定+公開鍵の登録

      続いてSnowflake側の設定に入ります。

      Snowflakeの自分のアカウントへログインし、今回Data CloudがSnowflakeへアクセスするための専用ユーザーを作りましょう(AWSで言うところのIAMユーザーです)。

      ユーザーに公開鍵を設定しよう!

      ユーザー作成に成功したら適当なWorksheetsを作成してください。

      下記コマンドでユーザーがキーペアでログインできるように設定しましょう。

      ALTER USER ユーザー名 SET RSA_PUBLIC_KEY='公開鍵を入力してください';

      RSA_PUBLIC_KEYに公開鍵をセットし実行することで、ユーザーに公開鍵を持たせることができます。

      ラムネ
      Snowflakeではユーザーに公開鍵を最大2つまで持たせることができるよ!

      もし公開鍵を設定できたか不安な場合は下記コマンドで確認するようにしましょう!(確認大事!)

      DESC USER "ユーザー名を入力してください";
      SELECT TRIM((SELECT "value" FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
      WHERE "property" = 'RSA_PUBLIC_KEY_FP'), 'SHA256:');

      上記のコマンドで指定したユーザー名に公開鍵が設定されているかを確認することができます。正常にセットされている場合は暗号化された文字列が返ってくるはずです。

      SnowflakeユーザーにWarehouseへの権限付与を行おう!

      続いてSnowflakeユーザーにWarehouseへの権限を付与しましょう。

      これはSnowflakeユーザーに権限を付与しない状態でData Cloudで接続を試みるとエラーが発生するので要注意です!

      ラムネ
      このWarehouseへの権限設定も意外とハマるポイントだから要注意!

      適当なWarehouseを1つ作成し、先ほど作成したユーザーにアクセス権限を付与します。

      STEP5: Data CloudからSnowflakeへの接続する

      ここまで完了したらData Cloud上でSnowflakeへ接続するための初期設定を施しましょう。

      まずはSalesforceへログインし、右上の歯車マークから「Data Cloud設定」をクリックしてください。

      Data Cloudの設定画面から「定義>Snowflake」へ移動し、新規作成ボタンを押しましょう。

      すると下記項目を入力するモーダルが表示されますので必要箇所を入力してください。

      項目名 入力内容 入力例
      接続名 あとから自分でわかる任意の名前を入力してください。 SnowflakeProdAccount
      接続のAPI参照名 APIで接続する際に使用するAPI名を記入してください。接続名と同じでも問題ありません。 SnowflakeProdAccount
      アカウントURL SnowflakeのアカウントURLを入力してください。(「Admin>Accounts」から確認可能) https://***-***.snowflakecomputing.com
      ユーザー名 Snowflakeで先程作成したユーザー名を入力してください。もし表示名とログイン名が異なる場合はLogin Nameの文字列を入力するようにしましょう。 DATACLOUD
      非公開鍵 先ほどSTEP1で作成した秘密鍵から「—–BEGIN PRIVATE KEY—–」と「—–END PRIVATE KEY—–」を削除した値を入力しましょう。 MII*******************BEr==

      非公開鍵だけは本当に注意してください。

      私も1時間ほど時間を無駄にしたのですが、秘密鍵生成時に含まれる「—–BEGIN PRIVATE KEY—–」と「—–END PRIVATE KEY—–」が含まれているとエラーが出て認証してくれません。

      正直サーバー側の自動的に排除するか、エラーを出すにしても何を修正すべきなのか具体的な内容を出力して欲しいですね。。。

      上記の5項目を適切に入力した状態で「次へ」を押すと認証が成功し、接続状況が「有効」になれば初期設定は完了です。

      STEP6: データストリームを新規作成してみる

      最後にデータストリームを新規作成して、Snowflakeから何かデータを取得してみましょう。

      まずは「データストリーム」画面へ移動し「新規」ボタンを押すとデータ取り込みで使用する選択肢が表示され、その中に「Snowflake」という選択肢が表示されます。

      あとは案内に従ってデータベースやスキーマーを選択していくと、データの取り込みができるようになります。

      ラムネ
      今回は試しにSnowflakeからGA4のデータを取得してみました!(祝)

      まとめ

      今回この記事ではData CloudとSnowflakeの連携手順について解説してみました。

      2024/04/04にリリースされて間もないということもあり、ネット上に情報がなく、接続まで少し苦労しましたが、無事にGA4のデータを取得することができました。

      実際に使ってみた肌感として、「便利になったな…。」というのが率直な感想でした。

      DX攻略部でも企業様へData Cloudの支援を行っておりますが、実際に支援する際のニーズとしてGA4とData Cloudを繋ぐニーズは結構あります。

      その際に今までは「GA4→BigQuery→S3/GCS(CSV)→Data Cloud」という少々手間が掛かっていましたが、今回Snowflakeを使ってみて、Data Cloudのインプット周りの課題が大幅に解消されたと思います。

      実際Snowflakeが使えることでデータ整形した状態でData Cloudへ取り込むことができたり、Snowflake上のAIモデルなどを使って分析した結果をData Cloudへ連携することができたりと、Snowflakeから直接Data Cloudへ取り込めるというのは何かと恩恵が大きいのです。

      今このData Cloudという製品は月単位でアップデートが行われているため、今後どんどん便利になっていくことは間違いなく、次回のアップデートも非常に楽しみです。

      次回はData CloudとBigQueryの連携についての記事を公開予定です。最後までお読みいただきありがとうございました。