2017.05.23

Salesforce Wave Analytics につないでみた

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

こんにちは。製品開発部の村田です。

2015年12月3~4日の2日間にわたって開催された「Salesforce World Tour Tokyo 2015」は、皆さま参加されましたでしょうか?
当社からは、様々なセッション、2会場での展示ブースなどで最新情報をお届けさせていただきました。(イベントレポートはこちらから。)

イベントの中では、「Wave Analyticsセッション」の中で弊社佐藤が登壇し、SkyOnDemandのWaveAnalytics対応についてご紹介させていただきましたが、11月30日に発表させていただいた通り、SkyOnDemandの次のバージョンアップより「Wave Analytics」との連携が可能となります。(発表記事はこちらから。)

ということで、今回はいち早く実際につないでみたところをお伝えしたいと思います。

Salesforce Wave Analyticsとの連携方法について

Wave Analytics は、Salesforce上で利用可能な分析プラットフォームとなりますが、分析するデータはSalesforce上のデータだけでなく、外部データを取り込むことによって分析に利用することも可能です。ここでは、外部データの取り込み方法についてを簡単にご紹介させていただきます。

外部データの取り込みはAPIを利用して以下の手順で行います。

  1. 外部データファイル(CSVファイル)を準備
  2. データの構造を指定するためのJSON形式のメタデータファイルを準備
  3. API経由でファイルをアップロード
  4. システムジョブを作成して実行
  5. ファイルのアップロードの結果を確認

上記手順をもとにSkyOnDemandにて外部データを Wave Analytics へ連携してみようと思います。

データの準備

今回はサンプルデータとして、拠点別の温度を以下のようなCSVファイルとして準備します。

AreaName,DateTime,Temperature
拠点A,2015/12/01 00:00,7.00
拠点A,2015/12/01 01:00,6.00
拠点A,2015/12/01 02:00,6.00
・・・
拠点B,2015/12/01 00:00,8.00
拠点B,2015/12/01 01:00,8.00
拠点B,2015/12/01 02:00,8.00
・・・
拠点C,2015/12/01 00:00,8.00
拠点C,2015/12/01 01:00,8.00
拠点C,2015/12/01 02:00,8.00
・・・

次に上記CSVファイルのデータ構造を指定するためのJSON形式のメタデータファイルを準備します。

{
   "fileFormat":{
      "charsetName":"UTF-8",
      "fieldsEnclosedBy":"\"",
      "fieldsDelimitedBy":",",
      "numberOfLinesToIgnore":1
   },
   "objects":[
   {
      "connector":"AcmeCSVConnector",
      "description":"",
      "fullyQualifiedName":"ExternalData",
      "label":"ExternalData",
      "name":"ExternalData",
      "fields":[
      {
         "description":"",
         "fullyQualifiedName":"AreaName",
         "label":"AreaName",
         "name":"AreaName",
         "isSystemField":false,
         "isUniqueId":false,
         "isMultiValue":false,
         "type":"Text"
      },
      {
         "description":"",
         "fullyQualifiedName":"DateTime",
         "label":"DateTime",
         "name":"DateTime",
         "isSystemField":false,
         "isUniqueId":false,
         "type":"Date",
         "format":"yyyy/MM/dd HH:mm",
         "fiscalMonthOffset":0
      },
      {
         "description":"",
         "fullyQualifiedName":"Temperature",
         "label":"Temperature",
         "name":"Temperature",
         "isSystemField":false,
         "defaultValue":"0",
         "isUniqueId":false,
         "type":"Numeric",
         "precision":3,
         "scale":2,
         "format":"#,##0.00"
      }
      ]
   }
   ]
}

メタデータファイルの作成方法については割愛しますが、詳細はこちらのドキュメントを参考にしてください。

連携処理の作成

データの準備が整ったので、次はデータをアップロードするための連携処理をSkyOnDemandのスクリプトで作成します。

  • まず最初に「InsightsExternalData」というオブジェクトに、データセット名やデータフォーマット(JSON)、データの追加か上書きか、など各種必要な情報をInsertします。Insertした際に付与された「Id」は、取得して後の処理で利用します。
  • 次に「InsightsExternalDataPart」というオブジェクトに、CSVファイルや先ほど取得した「InsightsExternalData」の「Id」など必要な情報をInsertします。この時、1レコードの登録に対し10MB以下のCSVファイルとなるようファイルを分割する必要がありますが、今回は割愛します。
  • データファイルの登録が終わったら、最初に登録した「InsightsExternalData」の「Action」を更新してアップロード処理を開始します。

ここまでの設定で外部データのアップロードは行われるので、あとはアップロードが正しく終わったかどうか「InsightsExternalData」を監視することで確認が可能です。

該当オブジェクトへ受け渡す設定値などについては、こちらをご参照ください。

Salesforce Wave Analyticsで見てみる

SkyOnDemandの連携処理を実行すると、Wave Analytics上にデータセットが作成されます。


こちらのデータセットをもとにレンズを作成すると、グラフとしてデータを可視化できましたね!!


レンズの設定、ダッシュボードの設定やカスタマイズなど更に行えば、より高度なUIも作成可能ですので、ぜひ試してみて下さい。

まとめ

今回ご紹介したのはあくまでサンプルデータを投入して表示してみるという内容でしたが、実際の運用となるとデータ量が多かったり、メタデータ作成が大変だったりと連携スクリプトで実現する上で、いくつか考慮が必要な点があります。

そういった点を包含して簡単に設定ができる専用アダプタの検討も進めておりますので、こちらもぜひ楽しみにしていただければ幸いです!!

また、先般の記事でもご紹介した「室温の変化をAWS IoTで集めて、Salesforceで分析!」と組み合わせると、更に夢が広がりますね!!

「IoT」、「Wave Analytics」、「連携」といったキーワードで何かございましたら、ぜひご相談いただければと思います。

1 件

関連する記事