ThoughtSpotをフリートライアルで試してみた！

# はじめに
DX化が進んでるのか進んで無いのかいまいち分からない昨今ですが、皆様いかがお過ごしでしょうか。
数年前から「これからはビッグデータの時代だ！DXだ！データ活用だ！」と息巻いてDBやBIの勉強をしてきましたが、データ分析と言えば思い描いていたような恰好良い近未来的なものではなく、実際にはクエリや手作業でETLチックなことをしたりと泥臭いことをやっているのが現実です。
そんな私が最近出会ったのが、検索とAIを使ったシンプルなUIで高度なデータ分析が可能というThoughtSpotという分析ツールです。
知りたいことをGoogleのように検索窓に入れていけば、クエリを書かずに誰でも簡単にデータ分析ができるとのこと。
新時代の香がするこのThoughtSpotというツールに興味が湧いたのですが、実際にどれぐらい簡単なUIなの？本当に簡単なの？と疑念を抱き、悩むよりやってみよう！ということでフリートライアルで試してみることにしました。

:::note info
ThougthSpotについては[公式サイト](https://www.thoughtspot.com/jp "https://www.thoughtspot.com/jp")を参照ください。
もしくは、[DB ONLINEの記事](https://enterprisezine.jp/article/detail/15315 "https://enterprisezine.jp/article/detail/15315")が特徴をとらえていて分かりやすかったのでご参考に。
:::

# 環境構築、テストデータについて
ThoughtSpotはそれ自体もクラウドサービスで、SnowflakeやAmazonRedshiftなどのクラウド型のデータベースと接続することを前提としています（オンプレのSQL Server等は対応していません）が、フリートライアル環境ではCSVファイルを1ファイルだけ取込み分析することが可能です（通常版ではCSVは対応不可のはずなのでご注意ください）。
本来はクラウドデータベースから検証環境を作るのがQiita的には好ましいとは思いますが、今回の目的はユーザー目線でどれぐらい簡単に使えるUIなのか？をさくっと試すことなので、データベースは構築せずに適当なオープンデータを使ってテキストファイルを取込ます。

:::note info
テストデータは[政府統計の総合窓口（ｅ－Ｓｔａｔ）](https://www.e-stat.go.jp/ "https://www.e-stat.go.jp/")からお借りします。
このサイトでは各府省等が公表する統計データを総務省統計局が整備して提供しています。
都道府県×男女×年齢(5歳ごと)の5年ごとの人口推移データを使ってみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/d8206626-92fb-131e-c12e-3b6c028192c8.png)

:::

# ThoughtSpot フリートライアル申請
まずはThoughtSpot公式サイトから「無料トライアル」より申請を行います。
サイトのフォームに従い、メールアドレス・姓名・会社名などを入力して登録していきます。
なお、企業の導入検討時などの試用を前提としているためか、gmailなどフリーのメールアドレスでは受付けてないようです。申請方法などの不明点はThoughtSpot社にお問合せをお願いします。

https://www.thoughtspot.com/jp

# ThoughtSpot セットアップ
申請完了後にThoughtSpotにサインインすると、まずセットアップ画面が開きます。
ここでは分析に使用するデータソースを接続し、それらの定義などを設定していきます。
「今すぐ接続する」をクリックするとデータウェアハウスの選択画面に移ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/a971d3f0-0115-3ea4-1809-4d9b57e5867c.png)

冒頭でもお伝えした通りThoughtSpotはクラウドデータベースを使用する前提の作りとなっていますので、こちらの画面に表示されているDBのみ対応となっています。
今回はCSVを取込するので「I don't see my database Other options」を開きます。
※CSVファイルは1ファイルのみフリートライアル環境で取込が可能です（通常版はCSV非対応のはず）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/ef6c844c-ee5f-3bf8-e955-e9b2b63ecf67.png)

ここでCSVを取込するか、予め用意されたデモデータを使うかを選択します。
最も手軽に試すならデモデータを使うのが早いですが、今回はCSVを取込みます。
※CSVファイルは1ファイルのみフリートライアル環境で取込が可能です（通常版はCSV非対応のはず）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/c297b4aa-a128-b2d6-5342-1b25ae2c31f4.png)

画面にCSVをドラッグし、ヘッダー有り無しとデリミタを選び次へ進みます。
なお、CSVの文字コードはShift-JISだと文字化けしてしまったのでUTF-8にしています。
囲み文字は有り無しどちらでも通りました。
※CSVファイルは1ファイルのみフリートライアル環境で取込が可能です（通常版はCSV非対応のはず）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/86598213-4c21-5f35-fb9b-57eaacb1bdce.png)

この画面で列名を変更できます。実際に分析を行うときにわかりやすい名前にしておくことをお勧めします。
※CSVファイルは1ファイルのみフリートライアル環境で取込が可能です（通常版はCSV非対応のはず）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/8da61284-7c9b-549c-4c18-07a77914a111.png)

この画面で各列のデータ型を設定できます。コード類はTEXT型に、人口の人数が入るところはデフォルトでセットされたLARGE INTEGER型とします。
最後にアップロードをクリックしてCSVを取込ます。
※CSVファイルは1ファイルのみフリートライアル環境で取込が可能です（通常版はCSV非対応のはず）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/0654ac51-ed76-c31c-4ee2-e5a35ff62785.png)

# ThoughtSpot データ検索
取込が完了するとデータ検索画面が表示されます。接続したデータの項目が左側に表示されます。
上部には検索ボックスがあり、ここに集計項目を入力していきます。試しに「人口」「年齢」と入れてみます。
検索ボックスに直接手入力するか、左側のデータ項目をダブルクリックで入力することもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/ca69bac2-1e42-90b7-53b3-05caafdba6bd.png)

検索ボックスに「人口」は値として識別され緑色で表示され、「年齢」は属性として識別され水色で表示されます。最適なグラフとして棒グラフが自動設定されます。
全体的に数値が大きくデータの重複などありそうなので、棒グラフから総数を右クリックして「ドリルダウン」で年齢総数の内訳をチェックします。ドリルダウン項目には「男女」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/278f5bd8-4c67-25a5-a913-5b1dbb6238c2.png)

「年齢」の総数を項目「男女」別に見た内訳が表示されます。
女性人口＋男性人口＋総数（男女人口）とデータが重複しているので、総数（男女人口）を右クリックして「"総数を含めない"」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/f36b1aba-9335-2d20-de8d-d2974cb2433e.png)

検索ボックスに式が入力され男女の総数が除外されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/72408520-8b09-5175-bf91-e8b8569f4c0d.png)

検索ボックスから「総数」「by男女」を「×」で削除し、「年齢」と「調査年」を入力します。
「年齢」と「調査年」の2項目が属性として識別され、最適なグラフとして積上縦棒グラフが自動設定されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/52d5eb92-7f81-1e83-a424-fa6d66373947.png)

右端にあるグラフのマークをクリックするとグラフの種類を変更できます。
チャートの候補から線グラフを選択します。
凡例から人口の「総数」をクリックして非表示にします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/1cca77a0-4f0e-2651-cd66-7614ccbcec78.png)
↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/d13a6c6f-ef59-4fd9-1702-6d6518aab421.png)

左下の数式の「＋」マークで数式エディタを開き、if文を使って年齢を下記のグループに分けます。数式名は「人口区分」とします。
・0～14歳：年少人口
・15～64歳：生産年齢人口
・65歳以上：老年人口
・総数：総数
```
if ( 年齢 in {'0～4歳', '05～9歳', '10～14歳'}) then '年少人口'
 else if ( 年齢 in {'15～19歳', '20～24歳', '25～29歳', '30～34歳', '35～39歳', '40～44歳', '45～49歳', '50～54歳', '55～59歳', '60～64歳'}) then '生産年齢人口' 
 else if ( 年齢 = '総数') then '総数'  else '老年人口'
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/0e93c03e-a405-b06a-69c0-026c29bad9d4.png)

検索ボックスに「人口区分」が追加されるので、「人口」を削除します。
するとX軸が「調査年」から「人口区分」に入替ってしまったので、画面右の歯車マーク（グラフ編集ボタン）をクリックし、X軸と色付きスライスをドラッグしてX軸が調査年になるよう入れ替えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/356295f7-e86c-b57f-22af-ba1f05c3077f.png)
↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/ff2d3f74-3776-e772-0b50-fdc17e123682.png)

グラフ編集画面の「設定」タブから、マーカーやグリッド線などのグラフの見た目を設定できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/7de656fd-e989-4031-b5e4-2312ab0e3bd0.png)

グラフ右上の「・・・」マークから保存をクリックすると、現在の検索条件一式を検索結果として保存することができます。
保存した検索結果は画面上部メニューの「検索結果」より参照できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2780637/9c01bb74-0e95-6029-cfb2-ba0ba6119d91.png)

# まとめ
単純な分析内容で恐縮ですが、ThoughtSpotの操作性がどれだけ簡単なのかを試す目的で一連の流れで使ってみました。
現在私が現場で使っているDr.SumやMotionBoardといったBIツールでは設定画面が複雑でマニュアルを熟読する必要がありますが、ThoughtSpotは非常にシンプルなUIでとっつき易く、一般ユーザーが興味を持ってすぐに始めやすいツールとなっているため、現場でのデータ活用や非定型の分析を全社的に推進するといった使い方にも向いているように思いました。
ThoughtSpotには他にもAIを使ったSPOTIQ分析など高度な分析機能もありますので、機会があればそちらも試してTableau等との比較などもしてみたいと思います。