STEP-1 : Azure Data Explorer クラスターとデータベースを作成する
概要
AWSの「S3 + Athena」 で実行できること、つまり、S3に保存されているJSON形式等のデータ(以下、JSONデータ)を Athenaで提供されているSQLライクな構文を用いてクエリ実行することによりデータ抽出が可能となっています。同様なことをAzure上の「BLOB + Azure Data Explorer」構成においても可能であることを確認しました。なお、「Web UI」と「Pythonプログラム」の両方で実現しております。
Azure Data Explorer は、ログや利用統計情報データ等のための高速で拡張性に優れたデータ探索サービスです。
Azure Data Explorer を使用するには、最初にクラスターを作成し、そのクラスター内に 1 つまたは複数のデータベースを作成します。
その後、クエリを実行できるように、JSONデータ等をデータベースに取り込み (読み込み) ます。
以下の3つのステップで順次説明します。今回は STEP-1 についてとなります。
STEP-1 : Azure Data Explorer クラスターとデータベースを作成する
STEP-2 : Azure Data Explorer の Web UI でデータベースへのクエリを実行する
STEP-3 : Azure Data Explorer の Python ライブラリを使用してデータベースへのクエリを実行する
ローカル環境
macOS Big Sur 11.1
python 3.8.3
Microsoft Edge 89.0.774.63(Safariでは Azure Data Explorer がうまく動きませんでした)
ローカル上での事前準備
Azure Storega Exploere がインストールされていること。
Azure上での事前準備
今回は、「ストレージアカウント:storageituru」で「BLOBコンテナー:test20210226」を作成し、そこに「ADX2222_test-iot-dummy-2.json」のJSONデータを用意しました。下図は Azure Storage Explorer での確認となります。
そのJSONデータはこの記事 にある「IoTSample-write.py」で 2222件生成したものとなります。データ構成は以下となります(プログラムの一部抜粋)。
# ダミーデータ作成のための Faker の使用
Faker = Factory.create
fake = Faker()
fake = Faker("ja_JP")
# IoT機器のダミーセクション(小文字アルファベットを定義)
section = string.ascii_uppercase
# IoT機器で送信JSONデータの作成
def iot_json_data(count, proc):
iot_items = json.dumps({
'items': [{
'id': i, # id
'time': generate_time(), # データ生成時間
'proc': proc, # データ生成プロセス名
'section': random.choice(section), # IoT機器セクション
'iot_num': fake.zipcode(), # IoT機器番号
'iot_state': fake.prefecture(), # IoT設置場所
'vol_1': random.uniform(100, 200), # IoT値−1
'vol_2': random.uniform(50, 90) # IoT値−2
}
for i in range(count)
]
}, ensure_ascii=False).encode('utf-8')
return iot_items
BLOBコンテナーのSAS(Shared Access Signature)の取得
Azure Data Explorer のデータベースの作成で必要となるBLOBコンテナーのSASを事前に取得しておきます。
1. Azure Storage Explorer 画面の左タブで「BLOBコンテナー:test20210226」を選択し、右クリックで、「Shared Access Signatureの取得...」を選択します。
2.表示された「Shared Access Signature」ダイアログにおいて、「開始時刻」と「有効期限」を設定し、画面の下部にある [作成] を選択します。
3.表示されたダイアログには、BLOB コンテナーと共に、ストレージリソースへのアクセスに使用できる URL とクエリ文字列が表示されます。 クリップボードにコピーする URL の横にある [コピー] を選択します。この値を後ほど使用します。コピーが完了したら、画面下部の [閉じる] を選択します。
Azure Data Explorer クラスターの作成
コンピューティング リソースとストレージ リソースの定義済みセットを使って、Azure リソース グループ内に Azure Data Explorer クラスターを作成します。
1.Azureポータルにサインインします。
2.ポータルの左上隅にある [+ リソースの作成] ボタンを選択します。
3.Azure Data Explorer を検索します。
4.[Azure Data Explorer] で、画面の下部にある [作成] を選択します。
5.次の情報を基本クラスターの詳細として入力します。
6.[確認と作成] を選択してクラスターの詳細を確認し、 [作成] を選択してクラスターをプロビジョニングします。 プロビジョニングには 約15分 かかりました。 完了後 [リソースに移動] を選択します。
Azure Data Explorer データベースの作成
1.[概要] タブで [データベースの作成] を選択します。
2.フォームに次の情報を入力します。入力後、フォーム画面下部の[作成] を選択してデータベースを作成します。
3.作成にかかる時間は 1 分未満でした。 プロセスが完了すると、クラスターの [概要] タブに表示が戻ります。
4.[概要] タブで [新しいデータの取り込み] を選択します。「Ingest new data」フォームが表示されます。
5.そのフォームの「Table」欄には新規に作成するデータベース名を入力します。
6.そのフォームの「Source type」欄では「BLOBコンテナーから」を選択します。
7.そのフォームの「Link to source」欄には、対象となるBLOBコンテナーのSASを入力します(先述の「BLOBコンテナーのSASの取得」の「3」のURLの値)。
8.フォームの入力が完了したら、画面下部の[Edit schema] を選択します。
9.表示された画面の内容に問題なければ。画面下部の[Start ingestion] を選択します。作成にかかる時間は 1 分未満でした。
10.クラスターにデータベースが作成されたことを確認できます。
Azure Data Explorer データベースで基本コマンドを実行する
問題なくアクセス可能か確認します。
作成したクラスターで [クエリ] を選択します。「.show databases」コマンドを「クエリ ウィンドウ」に入力後、 [実行] を選択します。結果セットには、このクラスター内の唯一のデータベースである 「IoTDummyDatabase」 が表示されます。
次のステップでは、Azure Data Explorer の Web UI でデータベースへのクエリを実行してみます。
本課題のシリーズ情報
3つのステップ
STEP-1.Azure Data Explorer クラスターとデータベースを作成する
STEP-2.Azure Data Explorer の Web UI でデータベースへのクエリを実行する
STEP-3.Azure Data Explorer の Python ライブラリを使用してデータベースへのクエリを実行する