教程:创建 Jupyter 笔记本以使用 Visual Studio Code Jupyter 笔记本分析 Azure Cosmos DB for NoSQL 帐户中的数据

适用范围: NoSQL

本教程介绍如何使用 Visual Studio Code Jupyter 笔记本与 Azure Cosmos DB for NoSQL 帐户进行交互。 你将了解如何连接到帐户、导入数据和运行查询。

先决条件

创建新的 Notebook

在本部分,你将创建 Azure Cosmos 数据库和容器,并将零售数据导入该容器。

  1. 打开 Visual Studio Code。
  2. 从命令面板 (Ctrl+Shift+P) 运行“创建:新 Jupyter 笔记本”命令,或在工作区中创建新的 .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. 使用 /CartID 分区键创建名为“WebsiteMetrics”的容器。

    container = database.create_container_if_not_exists(id='WebsiteMetrics', partition_key=PartitionKey(path='/CartID'))
    
  7. 选择“运行”以创建数据库和容器资源。

    Visual Studio Code Jupyter 笔记本中的“执行单元格”的屏幕截图。

将数据导入容器

  1. 添加新的代码单元

  2. 在代码单元中,添加以下代码以从此 URL 上传数据:<https://cosmosnotebooksdata.blob.core.chinacloudapi.cn/notebookdata/websiteData.json>

        import urllib.request
        import json
    
        with urllib.request.urlopen("https://cosmosnotebooksdata.blob.core.chinacloudapi.cn/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 Country
    0 已购买 19.99 马其顿 纽扣衬衫
    1 已查看 12.00 巴布亚新几内亚 项链
    2 已查看 25.00 斯洛伐克(斯洛伐克共和国) 开襟毛衣
    3 已购买 14.00 塞内加尔 人字拖
    4 已查看 50.00 巴拿马 牛仔短裤
    5 已查看 14.00 塞内加尔 人字拖
    6 已添加 14.00 塞内加尔 人字拖
    7 已添加 50.00 巴拿马 牛仔短裤
    8 已购买 33.00 巴勒斯坦占领区 红色上衣
    9 已查看 30.00 马耳他 绿色毛衣
  6. 另创建一个新的代码单元格。

  7. 在代码单元格中,导入 pandas 包以自定义数据帧的输出。 运行此单元格。

    import pandas as pd    
    df_cosmos.groupby("Item").size().reset_index()
    
  8. 观察运行命令的输出。

    Item 测试
    0 人字拖 66
    1 项链 55
    2 运动鞋 111
    ... ... ...
    45 防风夹克 56

后续步骤