「S3 + Athena」 で実行していたことを 「BLOB + Azure Data Explorer」 で実現してみました − ２


# STEP-2 : Azure Data Explorer の Web UI でデータベースへのクエリを実行する

## 概要
AWSの「S3 + Athena」 で実行できること、つまり、S3に保存されているJSON形式等のデータ（以下、JSONデータ）を Athenaで提供されているSQLライクな構文を用いてクエリ実行することによりデータ抽出が可能となっています。同様なことをAzure上の「BLOB + Azure Data Explorer」構成においても可能であることを確認しました。なお、「Web UI」と「Pythonプログラム」の両方で実現しております。

この実現を以下の３つのステップで順次説明します。
STEP-1．Azure Data Explorer クラスターとデータベースを作成する
STEP-2．Azure Data Explorer の Web UI でデータベースへのクエリを実行する
STEP-3．Azure Data Explorer の Python ライブラリを使用してデータベースへのクエリを実行する

[STEP-1についてはこちらを参照ください](https://qiita.com/turupon/items/ce4be135cb5d1f7f86b4)。 今回は STEP-2 について説明します。

Azure Data Explorer は、大量のデータのリアルタイム分析を実現するフルマネージドの高速データ分析サービスです。 Azure Data Explorer の Web UI を使用すると、Azure Data Explorer クラスターに接続して、Kusto クエリ言語のコマンドとクエリを作成、実行、共有できます。


## ローカル環境
macOS Big Sur 11.1 
python 3.8.3
Microsoft Edge 89.0.774.63（Safariでは Azure Data Explorer がうまく動きませんでした）

## ローカル上での事前準備
Azure Storega Exploere が[インストール](https://azure.microsoft.com/ja-jp/features/storage-explorer/)されていること。

## Azure上での事前準備
[STEP-1を完了していること](https://qiita.com/turupon/items/ce4be135cb5d1f7f86b4)。
今回のクエリー対象となるデータは、[この記事](https://qiita.com/turupon/items/e16789a959fc92068c68) にある「IoTSample-write.py」で 2222件生成したものとなります。

## Azure Data Explorer の Web UI の表示
Azure Data Explorer の Web UI を以下の手順で表示します。

１．Azureポータルにサインインします。
２．STEP-1 で作成した Azure Data Explorer クラスター「ituruadxcluster」リソースを選択します。
３．Azure Data Explorer クラスター画面に表示されている「URL」をコピーします

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544022/67f89067-baf1-9f88-6b28-01b35095a928.png)|
|:-:|

３．コピーした「URL」をブラウザの新しいタブで開きます。これが Azure Data Explorer の Web UI となります。

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544022/82d0e58c-6d15-3c16-39b0-99529c77af14.png)|
|:-:|

## Azure Data Explorer Web UI でデータベースで基本コマンドを実行する
まずは、「.show databases」コマンドを「クエリ ウィンドウ」に入力後、 [実行] を選択します。結果セットには、データベースである 「IoTDummyDatabase」 が表示されることを確認します。

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544022/5c128623-057a-2347-0663-64a7d2c2f8ed.png)|
|:-:|

## Azure Data Explorer Web UI でデータベースへのクエリを実行
今回のメインディッシュ、いくつかのサンプルクエリーを実行してみます。

１．次のクエリをコピーしてクエリ ウィンドウに貼り付けます。 ウィンドウの上部にある [実行] を選択します。

```
# Kusto
iot_tbl 
| sort by ['id'] desc 
| take 10
```

このクエリを実行すると、iot_tbl テーブルから最新の 10 レコードが返されます。 結果は次のテーブルのようになります。

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544022/a2e114ba-2dff-c580-e685-244af24641de.png)|
|:-:|


2．次のクエリをコピーしてクエリ ウィンドウに貼り付けます。 ウィンドウの上部にある [実行] を選択します。

```
# Kusto
iot_tbl 
| sort by ['id'] desc 
| project ['time'], iot_state, iot_num, section, vol_1, vol_2 
| take 10
```

このクエリを実行すると、iot_tbl テーブルから最新の 10 レコードが返され、表示されるカラムは Kusto の project で定義したもののみとその表示順となります。 結果は次のテーブルのようになります。

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544022/a138d19e-f01f-53d0-8ea3-1d1bd76d64dc.png)|
|:-:|


3．次のクエリをコピーしてクエリ ウィンドウに貼り付けます。 ウィンドウの上部にある [実行] を選択します。

```
# Kusto
iot_tbl
| summarize event_count=count(iot_state) by iot_state
| sort by event_count
| where event_count > 1
| project iot_state, event_count
| render columnchart
```

このクエリを実行すると、iot_tbl テーブルから iot_state（都道府県）毎のデータ件数をカウントし、件数の多い都道府県から棒グラフで表示されます。 結果は以下のようになります。

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544022/cec837c9-61b6-7135-c44b-b313f23085d0.png)|
|:-:|


4．次のクエリをコピーしてクエリ ウィンドウに貼り付けます。 ウィンドウの上部にある [実行] を選択します。

```
# Kusto
iot_tbl
| where section == "C"
```

このクエリを実行すると、iot_tbl テーブの section カラムの値が "C" のもののみ返されます。 結果は次のテーブルのようになります。

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544022/2dd91037-0e22-a127-e66b-7a9b59d14f7f.png)|
|:-:|


5．次のクエリをコピーしてクエリ ウィンドウに貼り付けます。 ウィンドウの上部にある [実行] を選択します。

```
# Kusto
iot_tbl
| where section == "C" or section == "E" or section == "W"
```

このクエリを実行すると、iot_tbl テーブの section カラムの値が "C","E","W" のもののみ返されます。 結果は次のテーブルのようになります。

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544022/7c0d1a63-6722-5cbb-cc57-a49bd17993b9.png)|
|:-:|


6．次のクエリをコピーしてクエリ ウィンドウに貼り付けます。 ウィンドウの上部にある [実行] を選択します。

```
# kusto
iot_tbl
| summarize event_count=count(section) by section
| sort by event_count
| where section == "C" or section == "E" or section == "W"
| project section, event_count
| render columnchart
```

このクエリを実行すると、iot_tbl テーブの section カラムの値が "C","E","W" のもののみを対象に、それ毎のデータ件数をカウントし、件数の多い section から棒グラフで表示されます。 結果は以下のようになります。

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/544022/dda1a35d-ec7b-b53e-f8cc-e9488c33be97.png)|
|:-:|

次の最後のステップでは、Azure Data Explorer の Python ライブラリを使用してデータベースへのクエリを実行してみます。


## 本課題のシリーズ情報
３つのステップ
[STEP-1．Azure Data Explorer クラスターとデータベースを作成する](https://qiita.com/turupon/items/ce4be135cb5d1f7f86b4)
[STEP-2．Azure Data Explorer の Web UI でデータベースへのクエリを実行する](https://qiita.com/turupon/items/b2886387832d4826afbf)
[STEP-3．Azure Data Explorer の Python ライブラリを使用してデータベースへのクエリを実行する](https://qiita.com/turupon/items/6739b03ee80d9d5e2ae0)