CData Software Blog

クラウド連携のCData Software の技術ブログです。

SmartDrive API から取得した車両データを定期的に Azure Data Lake Storage Gen2に連携する:CDataSync

f:id:sugimomoto:20200310112726p:plain

こんにちは。CData Software Japan の杉本です。

本記事では 分析基盤向けデータ統合の自動化ツールである CDataSync を使って、SmartDrive のデータを Azure Data Lake Storage Gen2 に連携し、分析する方法を紹介したいと思います。

SmartDrive とは?

IOTデバイスなどから取得できるあらゆるデータを利活用し、さまざまなモビリティサービスに活かすことができる走行データのデータプラットフォームです。

https://smartdrive.co.jp/

f:id:sugimomoto:20200310112735p:plain

f:id:sugimomoto:20200310112746p:plain

SmartDrive Platform では車両の位置情報などが取得できるAPIが提供されており、本記事ではこのAPIを利用してデータ連携を行います。

f:id:sugimomoto:20200310113815p:plain

実現イメージ

本記事ですすめるシナリオは SmartDrive の Location データを Azure Data Lake Storage Gen2 に連携する仕組みを構成することだけですが、少し背景をおさえておきたいと思います。

以下の記事でも紹介していますが、現在私達の周りには数多くの SaaS が溢れ、10数年前のようなRDBだけ連携していればいいという時代は過ぎ去っています。

https://www.cdatablog.jp/entry/2019/12/10/231629

f:id:sugimomoto:20200117110033p:plain

アメリカでは一つの企業で平均10~20程度の SaaS を使っているというレポートも存在し、多種多様なアプリケーションを活用しながら企業のビジネスプロセスが動いていることがわかります。

f:id:sugimomoto:20200117110040p:plain

そのような状況では、たとえ「車両データを切り口として分析したい」といった要望があったとしても、ディメンション(BIによる分析でよく用いられるようなスタースキーマ文脈における)が各種アプリケーション・SaaSに分散され、「車両データはこのサービスにあるけれど、ディメンションとして使いたい顧客属性は違うサービスに存在する」ということが頻発してしまいます。

https://docs.microsoft.com/ja-jp/power-bi/guidance/star-schema

f:id:sugimomoto:20200117110046p:plain

そのようなビジネス環境で今求められているのが、ELTの考え方です。多種多様なデータソースから、一度DWHにデータをロードし、DWHで分析や変換処理を回していきます。

f:id:sugimomoto:20200117110125p:plain

引用元:https://docs.microsoft.com/ja-jp/power-bi/guidance/star-schema

CDataSyncでは、そのような分析基盤向けデータ統合の自動化をノンコーディングで実現することができるようになっています。

f:id:sugimomoto:20200117110132p:plain

そういった背景を踏まえ、本記事ではデータ分析基盤・データレイクとして現在多く使われている Azure Data Lake Storage Gen2 に SmartDrive の Locationデータ(速度、緯度経度などのデータ)を連携する方法を紹介します。

f:id:sugimomoto:20200310112726p:plain

必要なもの

  • Azure Data Lake Storage Gen2 が利用可能な Azure アカウント
  • SmartDrive アカウント
  • CData Sync

SmartDrive API のアクセストークンの取得

SmartDrive APIに接続するためには、予めアクセストークンを取得する必要があります。取得方法はSmartDrive にお問い合わせください。

REST データ処理用 RSDファイルの作成

次に、SmartDrive API を CData 各種 REST DeiverがSQLとして解釈できるように設定ファイルを作成します。

以下のGitHubから保存してください。

https://github.com/sugimomoto/CData.REST.SmartDrive

f:id:sugimomoto:20200310112954p:plain

保存先フォルダは後ほど使用するので「C:\CData_REST\SmartDrive」といった書き込み可能な任意のフォルダに配置してください。

Azure Data Lake Storage Gen2 の準備

次に、データの格納先となる Azure Data Lake Storage Gen2 を準備します。

まず、Azure Data Lake Storage Gen2 が利用できるストレージアカウントを作成します。

f:id:sugimomoto:20200310113001p:plain

基本の設定はデフォルトのままでかまいません。任意のサブスクリプション・リソースグループ・ストレージアカウント名を指定してください。

f:id:sugimomoto:20200310113021p:plain

次に詳細設定タブで「Data Lake Storage Gen2」を有効にしておきます。これでストレージアカウントを作成すればOKです。

f:id:sugimomoto:20200310113111p:plain

ストレージアカウント作成後、Data Lake Storageに今回のデータを保存するコンテナを予め構成しておきましょう。

f:id:sugimomoto:20200310113148p:plain

今回はsmartdriveという名前でコンテナを構成しておきました。

f:id:sugimomoto:20200310113222p:plain

最後に接続用のアクセスキーを控えておけば、Azure Data Lake Storage Gen2の準備は完了です。

f:id:sugimomoto:20200310113241p:plain

CDataSyncのインストール

それでは、取得した情報を元にCDataSyncの設定を行っていきましょう。

CDataSyncはインストール型のソフトウェアなので、以下のURLからダウンロードして、任意のPCでセットアップを行います。

https://www.cdata.com/jp/sync/

f:id:sugimomoto:20200117110318p:plain

セットアップ後、CData Syncの画面がブラウザで立ち上がるので、セットアップ時に入力したパスワードとユーザー名「admin」を入力して、ログインします。

f:id:sugimomoto:20200117110325p:plain

ログイン後「情報」タブに移動し、「30日間の評価版をアクティベート」を行えば、CDataSyncの初期設定は完了です。

f:id:sugimomoto:20200117110332p:plain

REST データソースの設定

次にデータのSyncを行うためのデータソースの設定を行っていきましょう。

CDataSyncでは任意のデータソースを自由に追加して、連携することが可能です。

デフォルトでは REST データソースが含まれていないため、「接続」に移動し「+ Add More」をクリックし、追加を行います。

f:id:sugimomoto:20200117110338p:plain

f:id:sugimomoto:20200117110342p:plain

一覧の中から「REST」を検索し、追加します。

f:id:sugimomoto:20200117110348p:plain

追加後、CDataSyncが再起動します。再起動後、データソースの一覧から「REST」が選択できるようになるので、これを選択し接続設定を行います。

f:id:sugimomoto:20200117110352p:plain

接続設定では、「接続文字列」を選択して、以下の項目をセットし、保存します。

  • Other="apikey=[SmartDrive API接続用のAPI Keyを指定します。];device_code=「取得したいデバイスのデバイスコードを指定します。必須ではありません。」;";Location=C:\CData_REST\SmartDrive;

f:id:sugimomoto:20200117110358p:plain

Azure Data Lake Storage Gen2 への同期先設定

続いて、同期先となるAzure Data Lake Storage Gen2 への接続を構成します。

「接続」→「同期先」から「Azure Data Lake Store」を選択し

f:id:sugimomoto:20200310113346p:plain

「Generation」から「2」を選択の上、予め取得しておいた Azure Data Lake Storage Gen2の情報を以下のように設定します。

  • Account Key:アクセスキー(例:VYBMxB4orUPoRroQmHjw/bI9rIfVUcJi+HM1PgbVGN/nDJPCAaMMiQOYHUN62XFxqFAEd8ioAyYP08hOlzxUYg==)
  • Account:ストレージアカウント名(例:cdatasyncstorageadlsgen2)
  • File System:作成したコンテナの名称(例:smartdrive)

f:id:sugimomoto:20200310113353p:plain

設定後、接続テストをクリックし、接続が成功したら設定を保存します。

ジョブの作成

それでは実際にジョブを作成し、データをAzure Data Lake Storage Gen2に連携してみましょう。

ジョブのタブから「ジョブを作成」をクリックし

f:id:sugimomoto:20200117110415p:plain

事前に構成した「SmartDrive」と「Azure Data Lake Storage Gen2」を、ソースと同期先としてそれぞれ構成します。

f:id:sugimomoto:20200310113358p:plain

次に連携するデータを決定するために、「テーブルを追加」をクリックし

f:id:sugimomoto:20200117110425p:plain

Locations テーブルを選択します。

f:id:sugimomoto:20200310113404p:plain

なお、デフォルトでは接続文字列で指定したデバイスの過去24時間のデータを取得するようになっています。

最後にスケジュールタブから定期的に処理にするためにスケジューラーを設定します。以下の設定ですと1日1回、Azure Data Lake Storage Gen2 へ最新のデータが同期されます。

f:id:sugimomoto:20200310113411p:plain

後は設定を保存すれば、完了です。

テスト実行

テスト実行はテーブルタブから対象となるテーブルを選択し、「実行」ボタンをクリックすることで実施可能です。

f:id:sugimomoto:20200310113417p:plain

Azure Data Lake Storage Gen2 の Store Explorer で見てみると、Locations フォルダが生成され、以下のようにCSVが生成されます。

f:id:sugimomoto:20200310113424p:plain

中身はこのようにLocations APIから取得したデータがCSV形式にてフラット化されて、分析しやすいような形で保存されています。

f:id:sugimomoto:20200310113429p:plain

あとは、Azure databricks や Azure HDInsight などのビッグデータ分析のアプリケーションで分析を行うことができます。

さいごに

本記事では、SmartDrive のデータを Azure Data Lake Storage Gen2 に連携しましたが、CDataSyncではAzure Data Lake Storage Gen2 以外にも BigQuery、AmazonRedShiftやAzure SQL Serverといった多様な連携先をサポートしています。

f:id:sugimomoto:20200107113401p:plain

是非普段皆さんの会社でお使いのDWH・データベースに同期してみてください。