こんにちは。CData Software Japan リードエンジニアの杉本です。
今回は映像プラットフォーム「Safie(セーフィー)」が提供する「AI-App 人数カウント」のデータをSnowflake に連携し、Tableau などのBI ツールを使ってデータ分析する方法を紹介したいと思います。
Safie「AI-App 人数カウント」とは?
「AI-App 人数カウント」とはセーフィー社が提供する店舗の今を見える化できる映像データのAI 解析サービスです。
https://safie.jp/ai-app/people-count/
この機能はSafie のサービス上でも利用できますが、API を通じてデータにアクセスできるようになっており、POSデータなどと組み合わせてマーケティングなどの効果測定などにも繋げることが可能です。
https://developers.safie.link/reference/api#tag/AI-App-People-Count
※「AI-App 人数カウント」は個人の特定や追跡などの利用は行いません。
連携シナリオ
今回の記事では前述の「AI-App 人数カウント」のデータをSnowflake に連携し、BI ツールを使って可視化するための連携方法を解説します。
通常はセーフィー社が提供するAPI と連携するプログラムを開発する必要がありますが、CData Sync(https://www.cdata.com/jp/sync/)というデータパイプラインツールを利用することで、プログラミングの知識が無い方でも手軽に「AI-App 人数カウント」のデータにアクセスし、任意のRDBやDWHへデータを格納することが可能です。
また、CData Sync にはスマレジなどのPOS データにアクセスすることが可能であるため、来店者数のデータだけでなく、実際の売上データも組み合わせてダッシュボードを作成できます。
参考までとなりますが、以下のようなイメージのダッシュボードを作成することが可能です。実際には各店舗のレイアウトや分析したいカットに合わせて、ダッシュボードを作成してみください。
※本記事では、Snowflakeにデータを格納するまでを対象とします。
CData Sync のセットアップ
まずCData Sync のトライアル環境を入手しましょう。
以下のURL から無償トライアルへアクセスできます。
https://www.cdata.com/jp/sync/
セットアップが完了したら、セットアップ時に指定したユーザーを利用してログインします。
事前にトライアルのアクティベーションも済ませておきましょう。
Safie のコネクションの追加
CData Sync の管理画面にログイン後、まずはSafie へのコネクションを追加します。
「接続」タブから「+接続を追加」をクリックし
一覧から「Safie」を選択します。なお、デフォルトではSafie コネクタはインストールされていないため、「インストール済み」のチェックを外して、コネクタをダウンロードする必要があるため、注意しましょう。
Safie のコネクタを選択後、以下のような接続設定画面が表示されるので、任意の接続名と、API接続用のKeyを「ProfileSettings」の項目に「APIKey=XXXXXX」というフォーマットで入力します。
Safie のAPI Key の設定、入手方法は以下の記事を参考にしてみてください。
https://www.cdata.com/jp/blog/safie-api-driver#Safie_API_%E5%88%A9%E7%94%A8%E6%BA%96%E5%82%99
これでコネクションが作成できればOK です。
Snowflake のコネクションの追加
続いて、Safie API から取得したデータを格納する先となる、Snowflake のコネクションを追加します。
同じように接続の追加画面から「同期先」タブに移動した上で、Snowflake を追加します。
接続設定画面に移動したら、任意の接続名とWarehouseやURL、User・Passwordなど必要な接続情報を入力し、コネクションを作成します。
ジョブの作成
Safie とSnowflake のコネクションが作成できたら、データのレプリケーションジョブを作成しましょう。
「ジョブ」のタブに移動して「+ジョブを追加」をクリックします。
任意のジョブの名前を入力し、データソースと同期先に先ほど作成したSafieとSnowflakeを選択後、「ジョブを追加」をクリックします。
タスクの追加
ジョブを作成したら、どんなデータの種類をレプリケーションするのか? という設定になるタスクを追加します。
タスクはマニュアルで一つ一つ選択することもできますが、カスタムクエリを利用することで、一気に細かな設定を含めて追加することが可能です。
以下のカスタムクエリは複数デバイスの設定と差分更新のためのカラムの設定をあらかじめ追加したクエリになっているため、今回のような連携ではこのクエリを利用すると良いでしょう。
REPLICATE [LineCountResults] WITH IncrementalCheckColumns = 'DetectedOn' SELECT * FROM [LineCountResults] WHERE [DeviceId] IN (SELECT [DeviceId] FROM [Devices]);
REPLICATE [AreaCountResults] WITH IncrementalCheckColumns = 'DetectedOn' SELECT * FROM [AreaCountResults] WHERE [DeviceId] IN (SELECT [DeviceId] FROM [Devices]);
REPLICATE [PeopleDetectionResults] WITH IncrementalCheckColumns = 'DetectedOn' SELECT * FROM [PeopleDetectionResults] WHERE [DeviceId] IN (SELECT [DeviceId] FROM [Devices]);
REPLICATE [LineCountSettings] SELECT * FROM [LineCountSettings] WHERE [DeviceId] IN (SELECT [DeviceId] FROM [Devices]);
REPLICATE [AreaCountSettings] SELECT * FROM [AreaCountSettings] WHERE [DeviceId] IN (SELECT [DeviceId] FROM [Devices]);
REPLICATE [PeopleDetectionSettings] SELECT * FROM [PeopleDetectionSettings] WHERE [DeviceId] IN (SELECT [DeviceId] FROM [Devices]);
REPLICATE [Devices];
これで以下のように登録ができればOK です。
差分レプリケーション・スケジュールの設定
最後に差分レプリケーションとジョブの実行スケジュールを登録します。
「概要」タブから「差分レプリケーション」の「設定」をクリックします。
「AI-App 人数カウント」のデータ取得間隔の上限が30日間のため、ここで「レプリケーション間隔」を30日に指定しておきます。合わせて「整数ベースの開示時間」の設定はOFF にし、開始日は任意の日付を指定します。
これで開始日からデータを取得する際に、CData Sync は自動的に30日間隔で区切ってデータを取得するようになるため、API の制約を考慮したデータ連携を手軽に実現することが可能となります。
合わせてスケジュールも設定しておきましょう。ここはどの程度の頻度で最新のデータを参照するのか? という観点で決めることが可能です。
レプリケーションの実行
以上で設定は完了です。それでは実際にレプリケーションを実行してみましょう。
手動実行する場合は画面右上の「実行」ボタンをクリックします。
これで以下のように各タスクで「Successful」のメッセージが表示されればOKです。
Snowflake の画面を確認してみると、自動的にテーブルが作成され、データが登録されていることが確認できました!
同じような手順でPOS のスマレジなどとの連携も実施できます。
あとはTableau などの任意のBIツールから接続して、店舗のデータなどを可視化することが可能です。
おわりに
このようにCData Sync を利用することで手軽に「AI-App 人数カウント」 のデータを任意のRDB・DWHに取り込んで、分析・可視化に繋げることが可能です。
「AI-App 人数カウント」データは膨大になりやすく、API に都度アクセスして活用するにのは難しいところがありますが、今回のようにSnowflake のようなDWH に格納することにより、パフォーマンス良く、アドホックな分析に繋げられます。
今回は基本的な連携手順をお伝えしましたが、実際にダッシュボードを見てみたい、こんな分析もしてみたいという相談があれば、お気軽にテクニカルサポートまでお問い合わせください。
https://www.cdata.com/jp/support/submit.asp
関連コンテンツ