チュートリアル: Visual Studio Code Jupyter ノートブックを使用して Azure Cosmos DB for NoSQL アカウントのデータを分析する Jupyter Notebook を作成する

適用対象: NoSQL

このチュートリアルでは、Visual Studio Code Jupyter ノートブックを使用して Azure Cosmos DB for NoSQL アカウントを操作する方法について説明します。 アカウントへの接続方法、データのインポート方法、クエリの実行方法について説明します。

前提条件

新しいノートブックを作成する

このセクションでは、Azure Cosmos データベースとコンテナーを作成し、コンテナーに小売データをインポートします。

  1. Visual Studio Code を開きます。
  2. コマンド パレット (Ctrl+Shift+P) から Create: New Jupyter Notebook コマンドを使用するか、ワークスペースで新しい .ipynb ファイルを作成します。

ヒント

これで新しいノートブックが作成されたので、保存し、AnalyzeRetailData.ipynb のような名前を付けることができます。

SDK を使用してデータベースとコンテナーを作成する

  1. 既定のコード セルから開始します。

  2. Azure.cosmos パッケージをインストールします。 続行前にこのセルを実行します。

    %pip install azure.cosmos
    
  3. このチュートリアルに必要なパッケージをすべてインポートします。

    import azure.cosmos
    from azure.cosmos.partition_key import PartitionKey
    from azure.cosmos import CosmosClient
    
  4. 最後に、CosmosClient の新しいインスタンスを作成します。

    endpoint = "<FILL ME>"
    key = "<FILL ME>"
    cosmos_client = CosmosClient(url=endpoint, credential=key)
    
  5. 組み込みの SDK を使用して RetailIngest という名前のデータベースを作成します。

    database = cosmos_client.create_database_if_not_exists('RetailIngest')
    
  6. WebsiteMetrics という名前のコンテナーを /CartID のパーティション キーで作成します。

    container = database.create_container_if_not_exists(id='WebsiteMetrics', partition_key=PartitionKey(path='/CartID'))
    
  7. [実行] を選択して、データベースとコンテナー リソースを作成します。

    Visual Studio Code Jupyter ノートブックの [実行] セルのスクリーンショット。

データをコンテナーにインポートします

  1. 新しいコード セルを追加します

  2. コード セル内で、コード <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)
    
  3. セルを実行します。 実行には 45 秒から 1 分かかります。

データの分析

  1. 別の新しいコード セルを作成します。

  2. コード セルで、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)
    
  3. 別の新しいコード セルを作成します。

  4. コード セルで、データフレームから上位 10 個の項目を出力します。 このセルを実行します。

    df_cosmos.head(10)
    
  5. コマンドを実行した出力を確認します。

    アクション 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
  6. 別の新しいコード セルを作成します。

  7. コード セルで pandas パッケージをインポートして、データフレームの出力をカスタマイズします。 このセルを実行します。

    import pandas as pd    
    df_cosmos.groupby("Item").size().reset_index()
    
  8. コマンドを実行した出力を確認します。

    Item テスト
    0 Flip Flop Shoes 66
    1 Necklace 55
    2 Athletic Shoes 111
    [...] ... ...
    45 ウィンドブレーカー ジャケット 56

次のステップ