Compartilhar via


Tutorial: Criar um Jupyter Notebook para analisar dados da conta do Azure Cosmos DB for NoSQL usando notebooks Jupyter do Visual Studio Code

APLICA-SE A: NoSQL

Este tutorial explica como usar os notebooks Jupyter do Visual Studio Code para interagir com a sua conta do Azure Cosmos DB for NoSQL. Você verá como se conectar à sua conta, importar dados e executar consultas.

Pré-requisitos

Criar um novo notebook

Nesta seção, você criará o banco de dados Azure Cosmos e o contêiner e importará os dados de varejo para o contêiner.

  1. Abra o Visual Studio Code.
  2. Execute o comando Criar: Jupyter Notebook na paleta de comandos (CTRL + SHIFT + P) ou crie um arquivo.ipynb no seu workspace.

Dica

Agora que o notebook foi criado, você pode salvá-lo e nomeá-lo como AnalyzeRetailData.ipynb.

Criar um banco de dados e um contêiner usando o SDK

  1. Comece na célula de código padrão.

  2. Instale o pacote Azure.cosmos. Execute esta célula antes de continuar.

    %pip install azure.cosmos
    
  3. Importe os pacotes necessários para este tutorial.

    import azure.cosmos
    from azure.cosmos.partition_key import PartitionKey
    from azure.cosmos import CosmosClient
    
  4. Crie uma instância do CosmosClient.

    endpoint = "<FILL ME>"
    key = "<FILL ME>"
    cosmos_client = CosmosClient(url=endpoint, credential=key)
    
  5. Crie um banco de dados chamado RetailIngest usando o SDK interno.

    database = cosmos_client.create_database_if_not_exists('RetailIngest')
    
  6. Crie um contêiner chamado WebsiteMetrics com uma chave de partição /CartID.

    container = database.create_container_if_not_exists(id='WebsiteMetrics', partition_key=PartitionKey(path='/CartID'))
    
  7. Selecione Executar para criar o banco de dados e o recurso de contêiner.

    Captura de tela da célula Executar no notebook Jupyter do Visual Studio Code.

Importar dados para o contêiner

  1. Adicionar uma nova célula de código

  2. Dentro da célula de código, adicione o seguinte código para carregar dados desta 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. Execute a célula. Isso levará de 45 segundos a 1 minuto para ser executado.

Analise os dados

  1. Crie outra célula de código.

  2. Na célula de código, use uma consulta SQL para popular um DataFrame do Pandas. Execute esta célula.

    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. Crie outra célula de código.

  4. Na célula de código, gere os 10 itens principais do dataframe. Execute esta célula.

    df_cosmos.head(10)
    
  5. Observe a saída da execução do comando.

    Ação ItemRevenue País Item
    0 Comprado 19.99 Macedônia Camisa de botões
    1 Exibido 12,00 Papua Nova Guiné Colar
    2 Exibido 25,00 Eslováquia (República Eslovaca) Cardigã
    3 Comprado 14.00 Senegal Sandálias de dedo
    4 Exibido 50,00 Panamá Shorts jeans
    5 Exibido 14.00 Senegal Sandálias de dedo
    6 Adicionado 14.00 Senegal Sandálias de dedo
    7 Adicionado 50,00 Panamá Shorts jeans
    8 Comprado 33,00 Território Palestino Blusa vermelha
    9 Exibido 30,00 Malta Suéter verde
  6. Crie outra célula de código.

  7. Na célula de código, importe o pacote pandas para personalizar a saída do dataframe. Execute esta célula.

    import pandas as pd    
    df_cosmos.groupby("Item").size().reset_index()
    
  8. Observe a saída da execução do comando.

    Item Teste
    0 Sandálias de dedo 66
    1 Colar 55
    2 Tênis esportivos 111
    ... ... ...
    45 Windbreaker Jacket 56

Próximas etapas