{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": "# Getting started with Cosmos notebooks\nIn this notebook, we'll learn how to use Cosmos notebook features. We'll create a database and container, import some sample data in a container in Azure Cosmos DB and run some queries over it."
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": "### Create new database and container\n\nTo connect to the service, you can use our built-in instance of ```cosmos_client```. This is a ready to use instance of [CosmosClient](https://docs.microsoft.com/python/api/azure-cosmos/azure.cosmos.cosmos_client.cosmosclient?view=azure-python) from our Python SDK. It already has the context of this account baked in. We'll use ```cosmos_client``` to create a new database called **RetailDemo** and container called **WebsiteData**.\n\nOur dataset will contain events that occurred on the website - e.g. a user viewing an item, adding it to their cart, or purchasing it. We will partition by CartId, which represents the individual cart of each user. This will give us an even distribution of throughput and storage in our container. Learn more about how to [choose a good partition key.](https://docs.microsoft.com/azure/cosmos-db/partition-data)"
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "trusted": false
      },
      "outputs": [],
      "source": "import azure.cosmos\nfrom azure.cosmos.partition_key import PartitionKey\n\ndatabase = cosmos_client.create_database_if_not_exists('RetailDemo')\nprint('Database RetailDemo created')\n\ncontainer = database.create_container_if_not_exists(id='WebsiteData', partition_key=PartitionKey(path='/CartID'))\nprint('Container WebsiteData created')\n"
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": "#### Set the default database and container context to the new resources\n\nWe can use the ```%database {database_id}``` and ```%container {container_id}``` syntax."
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "trusted": false
      },
      "outputs": [],
      "source": "%database RetailDemo"
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "trusted": false
      },
      "outputs": [],
      "source": "%container WebsiteData"
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": "### Load in sample JSON data and insert into the container. \nWe'll use the **%%upload** magic function to insert items into the container"
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "collapsed": false,
        "inputHidden": false,
        "outputHidden": false,
        "trusted": false
      },
      "outputs": [],
      "source": "%%upload --databaseName RetailDemo --containerName WebsiteData --url https://cosmosnotebooksdata.blob.core.windows.net/notebookdata/websiteData-small.json"
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": "The new database and container should show up under the **Data** section. Use the refresh icon after completing the previous cell. \n\n<img src=\"https://cosmosnotebooksdata.blob.core.windows.net/notebookdata/refreshData.png\" alt=\"Refresh Data resource tree to see newly created resources\" width=\"40%\"/>"
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": "### Run a query using the built-in Azure Cosmos notebook magic\n"
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "trusted": false
      },
      "outputs": [],
      "source": "%%sql\nSELECT c.Action, c.Price as ItemRevenue, c.Country, c.Item FROM c"
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": "We can get more information about the %%sql command using ```%%sql?```"
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": "### Next steps\n\nNow that you've learned how to use basic notebook functionality, follow the **Visualization.ipynb** notebook to further analyze and visualize our data. You can find it under the **Sample Notebooks** section."
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "version": "3.6.8"
    },
    "nteract": {
      "version": "dataExplorer 1.0"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 2
}