チュートリアル: Visual Studio Code Jupyter ノートブックを使用して Azure Cosmos DB for NoSQL アカウントのデータを分析する Jupyter Notebook を作成する
適用対象: NoSQL
このチュートリアルでは、Visual Studio Code Jupyter ノートブックを使用して Azure Cosmos DB for NoSQL アカウントを操作する方法について説明します。 アカウントへの接続方法、データのインポート方法、クエリの実行方法について説明します。
前提条件
- 既存の Azure Cosmos DB for NoSQL アカウント。
- Azure サブスクリプションを既にお持ちの場合は、新しいアカウントを作成します。
- Azure サブスクリプションがない場合。 Azure Cosmos DB を無料で試すことができます。クレジット カードは必要ありません。
- ノートブックを使用するには、Visual Studio Code をインストールし、環境を設定します。
新しいノートブックを作成する
このセクションでは、Azure Cosmos データベースとコンテナーを作成し、コンテナーに小売データをインポートします。
- Visual Studio Code を開きます。
- コマンド パレット (Ctrl+Shift+P) から Create: New Jupyter Notebook コマンドを使用するか、ワークスペースで新しい .ipynb ファイルを作成します。
ヒント
これで新しいノートブックが作成されたので、保存し、AnalyzeRetailData.ipynb のような名前を付けることができます。
SDK を使用してデータベースとコンテナーを作成する
既定のコード セルから開始します。
Azure.cosmos パッケージをインストールします。 続行前にこのセルを実行します。
%pip install azure.cosmos
このチュートリアルに必要なパッケージをすべてインポートします。
import azure.cosmos from azure.cosmos.partition_key import PartitionKey from azure.cosmos import CosmosClient
最後に、CosmosClient の新しいインスタンスを作成します。
endpoint = "<FILL ME>" key = "<FILL ME>" cosmos_client = CosmosClient(url=endpoint, credential=key)
組み込みの SDK を使用して RetailIngest という名前のデータベースを作成します。
database = cosmos_client.create_database_if_not_exists('RetailIngest')
WebsiteMetrics という名前のコンテナーを
/CartID
のパーティション キーで作成します。container = database.create_container_if_not_exists(id='WebsiteMetrics', partition_key=PartitionKey(path='/CartID'))
[実行] を選択して、データベースとコンテナー リソースを作成します。
データをコンテナーにインポートします
新しいコード セルを追加します
コード セル内で、コード
<https://cosmosnotebooksdata.blob.core.windows.net/notebookdata/websiteData.json>
を追加し、この URL からデータをアップロードします。import urllib.request import json with urllib.request.urlopen("https://cosmosnotebooksdata.blob.core.windows.net/notebookdata/websiteData.json") as url: docs = json.loads(url.read().decode()) for doc in docs: container.upsert_item(doc)
セルを実行します。 実行には 45 秒から 1 分かかります。
データの分析
別の新しいコード セルを作成します。
コード セルで、SQL クエリを使用して Pandas DataFrame を設定します。 このセルを実行します。
import pandas as pd from pandas import DataFrame QUERY = "SELECT c.Action, c.Price as ItemRevenue, c.Country, c.Item FROM c" results = container.query_items( query=QUERY, enable_cross_partition_query=True ) df_cosmos = pd.DataFrame(results)
別の新しいコード セルを作成します。
コード セルで、データフレームから上位 10 個の項目を出力します。 このセルを実行します。
df_cosmos.head(10)
コマンドを実行した出力を確認します。
アクション ItemRevenue 国 Item 0 購入済み 19.99 マケドニア旧ユーゴスラビア共和国 Button-Up Shirt 1 表示 12.00 パプアニューギニア Necklace 2 表示 25.00 スロバキア (スロバキア共和国) Cardigan Sweater 3 購入済み 14.00 セネガル Flip Flop Shoes 4 表示 50.00 パナマ Denim Shorts 5 表示 14.00 セネガル Flip Flop Shoes 6 追加 14.00 セネガル Flip Flop Shoes 7 追加 50.00 パナマ Denim Shorts 8 購入済み 33.00 パレスチナ Red Top 9 表示 30.00 マルタ Green Sweater 別の新しいコード セルを作成します。
コード セルで pandas パッケージをインポートして、データフレームの出力をカスタマイズします。 このセルを実行します。
import pandas as pd df_cosmos.groupby("Item").size().reset_index()
コマンドを実行した出力を確認します。
Item テスト 0 Flip Flop Shoes 66 1 Necklace 55 2 Athletic Shoes 111 [...] ... ... 45 ウィンドブレーカー ジャケット 56