Excelの利用
はじめに
このページではMicrosoft ExcelをCxense APIとともに利用する方法をいくつかご紹介します。例えば:
辞書管理ツールとして -- Cxenseプラットフォームはお客様固有の辞書を用いてカスタマイズ(カスタムタクソノミーの適用や検索機能の補完)できますが、これらの辞書はExcelワークブックを用いてアップロードします。アップロードするためのAPIについては例えばこちらで説明しています。
APIを使用するための「GUI」として -- Cxenseプラットフォームから取得したデータはExcelでテーブルとして扱うことができます。これによりデータをさらに加工したり(例えばフィルタを掛けたり、他のテーブルと合わせて分析するなど)グラフ化することが可能です。この方法について説明するのがこのページの主な目的です。
Power Query
以下ではPower QueryのExcel用アドインが使用可能なWindows上にインストールされているMicrosoft Excelを使用していることを前提としています。このアドインは以前はData Explorerとして知られていました。 |
Cxense APIからMicrosoft Excelにデータをインポートするには、以下の手順を実施します:
Power QueryのExcel用アドインをダウンロードしてインストールします。
ExcelへインポートするためのPersistedリクエストを作成します。Persistedリクエストを使用するのは、Power QueryアドインがAPI経由でデータを取得する際に認証を回避するためです。Persistedリクエストを作成するには以下の2つの方法があります:
/persisted/create APIを使用する
admin.cxense.comのGUI上の"API"タブを使用する
Persistedリクエストを作成すると、/persisted/execute APIで使用するIDが得られます。以下の手順ではこのIDがabc123であるとして記載します。
ExcelのPower Queryアドインのメニューにおいて"From Web"を選択します。
表示されたダイアログ上で、PersistedリクエストのURL https://api.cxense.com/persisted/execute?persisted=abc123 (abc123を実際のIDに置き換えてください) を入力します。Persistedリクエストをパラメータ可変で作成した場合にはURLにそのパラメータも加えてください。
"OK"ボタンをクリックしてインポートウィザードにしたがってAPIのJSON応答をどのようにテーブルに配置するかを設定します。
CSV
もう一つのオプションはCxense APIから取得したデータをCSVファイルにエクスポートすることです。Cxense APIはJSON形式でデータを返しますが、jq のようなツールでCSVフォーマットに変換することができます。
$ python cx.py /traffic/event '{"start":"-7d","siteId":"246808642","groups":["city","region","country"],"count":3 }' | jq -r ".groups[]|.group as $groupname|.items[]|[$groupname,.item,.data.events]|@csv"
"region","rio de janeiro",2037
"region","hubei",2016
"region","london",1986
"country","us",5212
"country","cn",4048
"country","au",4030
"city","wuhan",2016
"city","london",1986
"city","zurich",198 |
$ python cx.py /segment/read '{"siteGroupId":"123456789"}' | jq -r ".segments[]|if .active then [.id,.name] else [] end|@csv"
"12ftof3bog7u","UK Users"
"hg8940e4tb6c","UK Business Users"
"k0iq40e4tb6d","UK Tech Readers"
"99gg7jpwxyh1","UK Practice Users" |
# Here we merge the nested JSON response for history timestamps,
# events and unique user counts into a single table.
$ python cx.py /traffic '{"start":"-6h","siteId":"246808642","fields":["events","uniqueUsers"],"historyFields":["events","uniqueUsers"],"historyResolution":"hour"}' | jq -r ".historyData as $hd| range(0; $hd.events|length) as $idx | [.history[$idx], $hd.events[$idx], $hd.uniqueUsers[$idx], $hd.sessionStarts[$idx]]|@csv"
1425014990,15424,4318,
1425018590,22019,6547,
1425022190,24026,7248,
1425025790,21008,6989,
1425029390,19716,7477,
1425032990,18759,7278, |