你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

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

先决条件

创建新笔记本

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

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

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

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

将数据导入容器

  1. 添加新的代码单元

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

        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. 观察运行命令的输出。

    Action ItemRevenue 国家 Item
    0 已采购 19.99 马其顿 纽扣衬衫
    1 已查看 12.00 巴布亚新几内亚 项链
    2 已查看 25.00 斯洛伐克(斯洛伐克共和国) 开襟毛衣
    3 已采购 14.00 塞内加尔 人字拖
    4 已查看 50.00 巴拿马 牛仔短裤
    5 已查看 14.00 塞内加尔 人字拖
    6 Added 14.00 塞内加尔 人字拖
    7 Added 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

后续步骤