Onvo Documentation
APIs
Dashboards
Post:Update Dashboard Widget Cache

Update dashboard widget cache

POST
/
api
/
dashboards
/
{id}
/
update-cache

Authorizations

x-api-key
string
headerrequired

Response

200 - application/json

The response is of type object.

[
    {
        "id": "5a85328f-ed69-4c44-9cfb-cdea08324397",
        "title": "Orders M-o-M",
        "query": "Create a bar chart showing the orders per month. The x axis should show the month and year in MM-YYYY format",
        "x": 6,
        "y": 3,
        "w": 6,
        "h": 3,
        "assumptions": [
            "1. The 'Order Date' field from the 'd65edfb2-f781-4815-899e-5f50134b36b8' key will be used to extract the month and year for the x-axis.",
            "2. The 'Order ID' field from the 'd65edfb2-f781-4815-899e-5f50134b36b8' key will be used to count the number of orders for the y-axis.",
            "3. The 'Order Date' field is assumed to be in the 'YYYY-MM-DD' format.",
            "4. The 'Order ID' field is assumed to be unique for each order.",
            "5. The data is unsorted, so we will need to sort it by date to correctly display the orders per month.",
            "6. We are not using any fields from the '93e483e0-1246-43ac-a8bc-5fad124fbf14' key in this function."
        ],
        "code": "import pandas as pd\nimport numpy as np\ndef main():\n    # Load the necessary columns from the first CSV file\n    df1 = pd.read_csv('/tmp/9f5cd772-aaff-460e-8e7a-03d21070b12c.csv', \n                      usecols=['Order ID', 'Order Date'])\n    \n    # Convert 'Order Date' to datetime format and extract the month and year\n    df1['Order Date'] = pd.to_datetime(df1['Order Date'])\n    df1['Month-Year'] = df1['Order Date'].dt.strftime('%m-%Y')\n    \n    # Count the number of orders per month\n    orders_per_month = df1['Month-Year'].value_counts().sort_index()\n    \n    # Create the chart.js object\n    chart = {\n        \"type\": \"bar\",\n        \"data\": {\n            \"labels\": orders_per_month.index.tolist(),\n            \"datasets\": [{\n                \"label\": \"Number of Orders\",\n                \"data\": orders_per_month.values.tolist(),\n                \"backgroundColor\": 'rgba(75, 192, 192, 0.2)',\n                \"borderColor\": 'rgba(75, 192, 192, 1)',\n                \"borderWidth\": 1\n            }]\n        },\n        \"options\": {\n            \"responsive\": True,\n            \"maintainAspectRatio\": False,\n            \"plugins\": {\n                \"datalabels\": {\n                    \"display\": False\n                },\n                \"title\": {\n                    \"display\": True,\n                    \"text\": 'Orders per Month'\n                }\n            }\n        }\n    }\n    \n    return chart",
        "team": "ee5b08c6-5167-4425-bbc3-a746fe4a7ead",
        "dashboard": "fd0b9d77-791d-4898-afa6-99800301d861",
        "cache": "{\"type\":\"bar\",\"data\":{\"labels\":[\"01-2015\",\"01-2016\",\"01-2017\",\"01-2018\",\"02-2015\",\"02-2016\",\"02-2017\",\"02-2018\",\"03-2015\",\"03-2016\",\"03-2017\",\"03-2018\",\"04-2015\",\"04-2016\",\"04-2017\",\"04-2018\",\"05-2015\",\"05-2016\",\"05-2017\",\"05-2018\",\"06-2015\",\"06-2016\",\"06-2017\",\"06-2018\",\"07-2015\",\"07-2016\",\"07-2017\",\"07-2018\",\"08-2015\",\"08-2016\",\"08-2017\",\"08-2018\",\"09-2015\",\"09-2016\",\"09-2017\",\"09-2018\",\"10-2015\",\"10-2016\",\"10-2017\",\"10-2018\",\"11-2015\",\"11-2016\",\"11-2017\",\"11-2018\",\"12-2015\",\"12-2016\",\"12-2017\",\"12-2018\"],\"datasets\":[{\"label\":\"Number of Orders\",\"data\":[79,58,89,155,46,64,83,107,157,138,163,238,135,160,170,203,122,146,225,242,135,138,199,245,143,140,201,226,153,159,176,218,268,293,363,459,159,166,196,298,318,324,370,459,278,316,352,462],\"backgroundColor\":\"rgba(75, 192, 192, 0.2)\",\"borderColor\":\"rgba(75, 192, 192, 1)\",\"borderWidth\":1}]},\"options\":{\"responsive\":true,\"maintainAspectRatio\":false,\"plugins\":{\"datalabels\":{\"display\":false},\"title\":{\"display\":true,\"text\":\"Orders per Month\"}}}}"
    },
    {
        "id": "5e1c3f60-e046-4cc3-b73e-251ad14ee151",
        "title": "Sales volume M-o-M",
        "query": "Create a line chart that shows sales volume month over month. The x-axis should show the month in MM-YYYY format. Do not use moment.js",
        "x": 0,
        "y": 5,
        "w": 6,
        "h": 3,
        "assumptions": [
            "1. The 'Order Date' field from the array with key 'd65edfb2-f781-4815-899e-5f50134b36b8' will be used to determine the month and year.",
            "2. The 'Sales' field from the same array will be used to calculate the sales volume.",
            "3. The 'Order Date' field is assumed to be in the format 'YYYY-MM-DD'.",
            "4. The 'Sales' field is assumed to be a string that can be converted to a number using the 'validateNumber' function.",
            "5. The data will be sorted by date and the sales volume will be accumulated for each month.",
            "6. The chart type will be 'line' and the x-axis will represent the month in 'MM-YYYY' format while the y-axis will represent the sales volume."
        ],
        "code": "import pandas as pd\nimport numpy as np\ndef main():\n    # Load the necessary columns from the first CSV file\n    df1 = pd.read_csv('/tmp/9f5cd772-aaff-460e-8e7a-03d21070b12c.csv', \n                      usecols=['Order Date', 'Sales'])\n    # Convert 'Order Date' to datetime and extract the month and year\n    df1['Order Date'] = pd.to_datetime(df1['Order Date'])\n    df1['Month-Year'] = df1['Order Date'].dt.to_period('M')\n    # Group by 'Month-Year' and calculate the sum of 'Sales'\n    df1_grouped = df1.groupby('Month-Year')['Sales'].sum().reset_index()\n    # Create the chart.js object\n    chart = {\n        \"type\": \"line\",\n        \"data\": {\n            \"labels\": df1_grouped['Month-Year'].astype(str).tolist(),\n            \"datasets\": [{\n                \"label\": \"Sales Volume\",\n                \"data\": df1_grouped['Sales'].tolist(),\n                \"fill\": False\n            }]\n        },\n        \"options\": {\n            \"responsive\": True,\n            \"maintainAspectRatio\": False,\n            \"plugins\": {\n                \"datalabels\": {\n                    \"display\": False\n                },\n                \"title\": {\n                    \"display\": True,\n                    \"text\": \"Sales Volume Month Over Month\"\n                }\n            }\n        }\n    }\n    return chart",
        "team": "ee5b08c6-5167-4425-bbc3-a746fe4a7ead",
        "dashboard": "fd0b9d77-791d-4898-afa6-99800301d861",
        "cache": "{\"type\":\"line\",\"data\":{\"labels\":[\"2015-01\",\"2015-02\",\"2015-03\",\"2015-04\",\"2015-05\",\"2015-06\",\"2015-07\",\"2015-08\",\"2015-09\",\"2015-10\",\"2015-11\",\"2015-12\",\"2016-01\",\"2016-02\",\"2016-03\",\"2016-04\",\"2016-05\",\"2016-06\",\"2016-07\",\"2016-08\",\"2016-09\",\"2016-10\",\"2016-11\",\"2016-12\",\"2017-01\",\"2017-02\",\"2017-03\",\"2017-04\",\"2017-05\",\"2017-06\",\"2017-07\",\"2017-08\",\"2017-09\",\"2017-10\",\"2017-11\",\"2017-12\",\"2018-01\",\"2018-02\",\"2018-03\",\"2018-04\",\"2018-05\",\"2018-06\",\"2018-07\",\"2018-08\",\"2018-09\",\"2018-10\",\"2018-11\",\"2018-12\"],\"datasets\":[{\"label\":\"Sales Volume\",\"data\":[14236.895,4519.892,55691.009,28295.345,23648.287,34595.1276,33946.393,27909.4685,81777.3508,31453.393,78628.7167,69545.6205,18174.0756,11951.411,38726.252,34195.2085,30131.6865,24797.292,28765.325,36898.3322,64595.918,31404.9235,75972.5635,74919.5212,18542.490999999998,22978.815,51715.875,38750.039000000004,56987.728,40344.534,39261.963,31115.3743,73410.0249,59687.745,79411.9658,96999.043,43971.374,20301.1334,58872.3528,36521.5361,44261.1102,52981.7257,45264.416,63120.888,87866.652,77776.9232,118447.825,83829.3188],\"fill\":false}]},\"options\":{\"responsive\":true,\"maintainAspectRatio\":false,\"plugins\":{\"datalabels\":{\"display\":false},\"title\":{\"display\":true,\"text\":\"Sales Volume Month Over Month\"}}}}"
    },
    {
        "id": "d80fec08-95f9-4c06-b696-a359470e2ad3",
        "title": "Orders per year",
        "query": "Create a bar chart showing the sales in USD per year",
        "x": 4,
        "y": 1,
        "w": 4,
        "h": 2,
        "assumptions": [
            "1. The 'Order Date' field from the array with key 'd65edfb2-f781-4815-899e-5f50134b36b8' will be used to determine the year.",
            "2. The 'Sales' field from the same array will be used to calculate the total sales in USD per year.",
            "3. The 'Customer ID' field is not used in this case as we are not filtering or grouping data based on customers.",
            "4. The data is unsorted, so we will need to sort it based on the 'Order Date' field to correctly calculate the sales per year.",
            "5. The 'validateNumber' function will be used to ensure the 'Sales' field is a usable number.",
            "6. The chart type will be 'bar' as we are showing a comparison of sales across different years.",
            "7. The x-axis will represent the years and the y-axis will represent the sales in USD."
        ],
        "code": "import pandas as pd\nimport numpy as np\ndef main():\n    # Load the necessary columns from the first CSV file\n    df1 = pd.read_csv('/tmp/9f5cd772-aaff-460e-8e7a-03d21070b12c.csv', \n                      usecols=['Order ID', 'Order Date'])\n    \n    # Extract the year from the 'Order Date' column\n    df1['Year'] = pd.to_datetime(df1['Order Date']).dt.year\n    \n    # Count the number of orders per year\n    order_counts = df1.groupby('Year')['Order ID'].nunique()\n    \n    # Create the chart.js object\n    chart = {\n        \"type\": \"bar\",\n        \"data\": {\n            \"labels\": order_counts.index.tolist(),\n            \"datasets\": [{\n                \"label\": \"Number of Orders\",\n                \"data\": order_counts.values.tolist(),\n                \"backgroundColor\": 'rgba(75, 192, 192, 0.2)',\n                \"borderColor\": 'rgba(75, 192, 192, 1)',\n                \"borderWidth\": 1\n            }]\n        },\n        \"options\": {\n            \"responsive\": True,\n            \"maintainAspectRatio\": False,\n            \"plugins\": {\n                \"datalabels\": {\n                    \"display\": False\n                },\n                \"title\": {\n                    \"display\": True,\n                    \"text\": 'Yearly Order Count'\n                }\n            }\n        }\n    }\n    \n    return chart",
        "team": "ee5b08c6-5167-4425-bbc3-a746fe4a7ead",
        "dashboard": "fd0b9d77-791d-4898-afa6-99800301d861",
        "cache": "{\"type\":\"bar\",\"data\":{\"labels\":[2015,2016,2017,2018],\"datasets\":[{\"label\":\"Number of Orders\",\"data\":[969,1038,1315,1687],\"backgroundColor\":\"rgba(75, 192, 192, 0.2)\",\"borderColor\":\"rgba(75, 192, 192, 1)\",\"borderWidth\":1}]},\"options\":{\"responsive\":true,\"maintainAspectRatio\":false,\"plugins\":{\"datalabels\":{\"display\":false},\"title\":{\"display\":true,\"text\":\"Yearly Order Count\"}}}}"
    },
    {
        "id": "6a834b47-c4e1-48c1-84ec-ac1c8c3aa210",
        "title": "Top 5 states by sales",
        "query": "Create a bar chart showing the top 5 states by sales volume",
        "x": 0,
        "y": 3,
        "w": 4,
        "h": 2,
        "assumptions": [
            "1. The 'Sales' field from the array with key 'd65edfb2-f781-4815-899e-5f50134b36b8' will be used to calculate the sales volume.",
            "2. The 'State' field from the array with key '93e483e0-1246-43ac-a8bc-5fad124fbf14' will be used to identify the states.",
            "3. The 'Customer ID' field will be used to match the data from both arrays.",
            "4. The 'validateNumber' function will be used to convert the 'Sales' field into a usable number.",
            "5. The top 5 states by sales volume will be determined by summing up the sales for each state and then selecting the top 5.",
            "6. The chart will be a bar chart with the states on the x-axis and the sales volume on the y-axis."
        ],
        "code": "import pandas as pd\nimport numpy as np\ndef main():\n    # Load necessary columns from the first CSV file\n    df1 = pd.read_csv('/tmp/9f5cd772-aaff-460e-8e7a-03d21070b12c.csv', \n                      usecols=['Order ID', 'Customer ID', 'Sales'])\n    \n    # Load necessary columns from the second CSV file\n    df2 = pd.read_csv('/tmp/6c06673a-8b53-4eba-a4a8-17e23daf0504.csv', \n                      usecols=['Customer ID', 'State'])\n    \n    # Merge the two dataframes on 'Customer ID'\n    df = pd.merge(df1, df2, on='Customer ID')\n    \n    # Group by 'State' and sum 'Sales' to get total sales volume for each state\n    state_sales = df.groupby('State')['Sales'].sum().nlargest(5)\n    \n    # Prepare data for the chart\n    labels = state_sales.index.tolist()\n    data = state_sales.values.tolist()\n    \n    # Create a chart.js object\n    chart = {\n        \"type\": \"bar\",\n        \"data\": {\n            \"labels\": labels,\n            \"datasets\": [{\n                \"label\": \"Sales Volume (USD)\",\n                \"data\": data,\n                \"backgroundColor\": [\"rgba(255, 99, 132, 0.2)\"] * 5,\n                \"borderColor\": [\"rgba(255, 99, 132, 1)\"] * 5,\n                \"borderWidth\": 1\n            }]\n        },\n        \"options\": {\n            \"responsive\": True,\n            \"maintainAspectRatio\": False,\n            \"plugins\": {\n                \"datalabels\": {\n                    \"display\": False\n                },\n                \"title\": {\n                    \"display\": True,\n                    \"text\": \"Top 5 States by Sales Volume\"\n                }\n            }\n        }\n    }\n    \n    return chart",
        "team": "ee5b08c6-5167-4425-bbc3-a746fe4a7ead",
        "dashboard": "fd0b9d77-791d-4898-afa6-99800301d861",
        "cache": "{\"type\":\"bar\",\"data\":{\"labels\":[\"California\",\"New York\",\"Texas\",\"Pennsylvania\",\"Washington\"],\"datasets\":[{\"label\":\"Sales Volume (USD)\",\"data\":[451036.5823,279549.8235,192758.2049,142838.551,133177.2518],\"backgroundColor\":[\"rgba(255, 99, 132, 0.2)\",\"rgba(255, 99, 132, 0.2)\",\"rgba(255, 99, 132, 0.2)\",\"rgba(255, 99, 132, 0.2)\",\"rgba(255, 99, 132, 0.2)\"],\"borderColor\":[\"rgba(255, 99, 132, 1)\",\"rgba(255, 99, 132, 1)\",\"rgba(255, 99, 132, 1)\",\"rgba(255, 99, 132, 1)\",\"rgba(255, 99, 132, 1)\"],\"borderWidth\":1}]},\"options\":{\"responsive\":true,\"maintainAspectRatio\":false,\"plugins\":{\"datalabels\":{\"display\":false},\"title\":{\"display\":true,\"text\":\"Top 5 States by Sales Volume\"}}}}"
    },
    {
        "id": "c118fc21-3be0-40ec-b3b5-9341dbba6de3",
        "title": "Lifetime value (LTV)",
        "query": "Create a metric showing the lifetime value of all the customers. It can be calculated by dividing the total sales in USD divided by the number of customers",
        "x": 8,
        "y": 0,
        "w": 4,
        "h": 1,
        "assumptions": [
            "1. The total sales in USD can be calculated by summing up the 'Sales' field from the array with key 'd65edfb2-f781-4815-899e-5f50134b36b8'.",
            "2. The number of customers can be calculated by counting the unique 'Customer ID' from the array with key '93e483e0-1246-43ac-a8bc-5fad124fbf14'.",
            "3. The 'validateNumber' function is used to ensure that the 'Sales' field is a valid number before summing it up.",
            "4. The lifetime value of all customers is calculated by dividing the total sales by the number of customers.",
            "5. The result is returned as a metric in a chart.js object."
        ],
        "code": "import pandas as pd\nimport numpy as np\ndef main():\n    # Load necessary columns from the first dataset\n    df1 = pd.read_csv('/tmp/9f5cd772-aaff-460e-8e7a-03d21070b12c.csv', \n                      usecols=['Customer ID', 'Sales'])\n    \n    # Load necessary columns from the second dataset\n    df2 = pd.read_csv('/tmp/6c06673a-8b53-4eba-a4a8-17e23daf0504.csv', \n                      usecols=['Customer ID'])\n    \n    # Merge the two datasets on 'Customer ID'\n    df = pd.merge(df1, df2, on='Customer ID')\n    \n    # Calculate the total sales and the number of unique customers\n    total_sales = df['Sales'].sum()\n    num_customers = df['Customer ID'].nunique()\n    \n    # Calculate the lifetime value of all customers\n    lifetime_value = total_sales / num_customers\n    \n    # Create the chart.js object\n    chart = {\n        \"type\": \"metric\",\n        \"data\": {\n            \"datasets\": [{\n                \"data\": [lifetime_value],\n                \"label\": \"USD\"\n            }]\n        },\n        \"options\": {\n            \"responsive\": True,\n            \"maintainAspectRatio\": False,\n            \"plugins\": {\n                \"datalabels\": {\n                    \"display\": False\n                },\n                \"title\": {\n                    \"text\": \"Lifetime Value of All Customers\"\n                }\n            }\n        }\n    }\n    \n    return chart",
        "team": "ee5b08c6-5167-4425-bbc3-a746fe4a7ead",
        "dashboard": "fd0b9d77-791d-4898-afa6-99800301d861",
        "cache": "{\"type\":\"metric\",\"data\":{\"datasets\":[{\"data\":[2896.8484997477935],\"label\":\"USD\"}]},\"options\":{\"responsive\":true,\"maintainAspectRatio\":false,\"plugins\":{\"datalabels\":{\"display\":false},\"title\":{\"text\":\"Lifetime Value of All Customers\"}}}}"
    },
    {
        "id": "7317800e-6c3e-4f1e-9969-2cab0f8480a1",
        "title": "Sales Comparison between 2018 and 2019",
        "query": "Create a pie chart showing the sales in 2018 vs the sales in 2019",
        "x": 0,
        "y": 0,
        "w": 4,
        "h": 2,
        "assumptions": [
            "",
            "1. Load the 'Sample Orders' dataset using pandas with only the necessary columns 'Order Date' and 'Sales' to minimize memory usage.",
            "2. Convert the 'Order Date' column to a datetime object to filter the data for the years 2018 and 2019.",
            "3. Filter the dataset for orders that occurred in 2018 and 2019 separately.",
            "4. Sum the 'Sales' for each year after converting the 'Sales' column to numerical values using the provided `convertNum` function.",
            "5. Create a pie chart using Chart.js configuration that shows the proportion of sales for 2018 and 2019.",
            "6. Set the chart options to be responsive and maintainAspectRatio to false.",
            "7. Add a title to the chart that describes the content.",
            "8. Since the user has not specified a chart type and a pie chart is appropriate for showing proportions, we will use a pie chart.",
            "9. Set the plugins.datalabels.display to false as the user has not asked to show the values in the chart.",
            "",
            ""
        ],
        "code": "import pandas as pd\ndef main():\n    # Load the necessary data\n    orders_df = pd.read_csv('/tmp/9f5cd772-aaff-460e-8e7a-03d21070b12c.csv', usecols=['Order Date', 'Sales'])\n    \n    # Convert 'Order Date' to datetime and 'Sales' to numerical values\n    orders_df['Order Date'] = pd.to_datetime(orders_df['Order Date'], format='%Y-%m-%d')\n    orders_df['Sales'] = orders_df['Sales'].map(convertNum)\n    \n    # Filter data for 2018 and 2019\n    sales_2018 = orders_df[orders_df['Order Date'].dt.year == 2018]['Sales'].sum()\n    sales_2019 = orders_df[orders_df['Order Date'].dt.year == 2019]['Sales'].sum()\n    \n    # Create the chart.js configuration object\n    chart_config = {\n        'type': 'pie',\n        'data': {\n            'labels': ['2018 Sales', '2019 Sales'],\n            'datasets': [{\n                'data': [sales_2018, sales_2019],\n                'backgroundColor': ['#4e79a7', '#f28e2b']\n            }]\n        },\n        'options': {\n            'responsive': True,\n            'maintainAspectRatio': False,\n            'plugins': {\n                'title': {\n                    'display': True,\n                    'text': 'Sales Comparison between 2018 and 2019'\n                },\n                'datalabels': {\n                    'display': False\n                }\n            }\n        }\n    }\n    \n    return chart_config",
        "team": "ee5b08c6-5167-4425-bbc3-a746fe4a7ead",
        "dashboard": "fd0b9d77-791d-4898-afa6-99800301d861",
        "cache": "{\"type\":\"pie\",\"data\":{\"labels\":[\"2018 Sales\",\"2019 Sales\"],\"datasets\":[{\"data\":[733215.2552,0],\"backgroundColor\":[\"#4e79a7\",\"#f28e2b\"]}]},\"options\":{\"responsive\":true,\"maintainAspectRatio\":false,\"plugins\":{\"title\":{\"display\":true,\"text\":\"Sales Comparison between 2018 and 2019\"},\"datalabels\":{\"display\":false}}}}"
    },
    {
        "id": "496c8f73-916d-4514-a3a0-bed15d7f1b1c",
        "title": "California vs New York",
        "query": "Create a pie chart showing the sales volumes of New York and California",
        "x": 8,
        "y": 1,
        "w": 4,
        "h": 2,
        "assumptions": [
            "1. The user wants to compare the sales volumes of New York and California.",
            "2. The sales volume is represented by the 'Sales' field in the data for key 'd65edfb2-f781-4815-899e-5f50134b36b8'.",
            "3. The 'State' field in the data for key '93e483e0-1246-43ac-a8bc-5fad124fbf14' will be used to filter the data for New York and California.",
            "4. The 'Customer ID' field is the common ID in both data sources and will be used to relate the data.",
            "5. The 'validateNumber' function will be used to convert the 'Sales' field into a usable number.",
            "6. The pie chart will have two data points, one for New York and one for California. The labels for these data points will be 'New York' and 'California' respectively."
        ],
        "code": "import pandas as pd\nimport numpy as np\ndef main():\n    # Load necessary columns from the first dataset\n    df1 = pd.read_csv('/tmp/9f5cd772-aaff-460e-8e7a-03d21070b12c.csv', \n                      usecols=['Customer ID', 'Sales'])\n    \n    # Load necessary columns from the second dataset\n    df2 = pd.read_csv('/tmp/6c06673a-8b53-4eba-a4a8-17e23daf0504.csv', \n                      usecols=['Customer ID', 'State'])\n    \n    # Merge the two datasets on 'Customer ID'\n    df = pd.merge(df1, df2, on='Customer ID')\n    \n    # Filter rows for 'New York' and 'California'\n    df = df[df['State'].isin(['New York', 'California'])]\n    \n    # Group by 'State' and sum 'Sales'\n    sales = df.groupby('State')['Sales'].sum()\n    \n    # Prepare data for the chart\n    labels = sales.index.tolist()\n    data = sales.values.tolist()\n    \n    # Create a chart.js object\n    chart = {\n        \"type\": \"pie\",\n        \"data\": {\n            \"labels\": labels,\n            \"datasets\": [{\n                \"label\": \"Sales Volume\",\n                \"data\": data,\n                \"backgroundColor\": [\"#FF6384\", \"#36A2EB\"],\n                \"hoverBackgroundColor\": [\"#FF6384\", \"#36A2EB\"]\n            }]\n        },\n        \"options\": {\n            \"responsive\": True,\n            \"maintainAspectRatio\": False,\n            \"plugins\": {\n                \"datalabels\": {\n                    \"display\": False\n                },\n                \"title\": {\n                    \"display\": True,\n                    \"text\": \"Sales Volumes of New York and California\"\n                }\n            }\n        }\n    }\n    \n    return chart",
        "team": "ee5b08c6-5167-4425-bbc3-a746fe4a7ead",
        "dashboard": "fd0b9d77-791d-4898-afa6-99800301d861",
        "cache": "{\"type\":\"pie\",\"data\":{\"labels\":[\"California\",\"New York\"],\"datasets\":[{\"label\":\"Sales Volume\",\"data\":[451036.5823,279549.8235],\"backgroundColor\":[\"#FF6384\",\"#36A2EB\"],\"hoverBackgroundColor\":[\"#FF6384\",\"#36A2EB\"]}]},\"options\":{\"responsive\":true,\"maintainAspectRatio\":false,\"plugins\":{\"datalabels\":{\"display\":false},\"title\":{\"display\":true,\"text\":\"Sales Volumes of New York and California\"}}}}"
    },
    {
        "id": "5541de64-fdfc-4273-b2c5-579c89d79df5",
        "title": "Total orders overall",
        "query": "Create a metric showing total orders",
        "x": 4,
        "y": 0,
        "w": 4,
        "h": 1,
        "assumptions": [
            "1. The total orders can be calculated by counting the number of unique Order IDs in the array for key d65edfb2-f781-4815-899e-5f50134b36b8.",
            "2. The function will return a chart.js object with the type set to 'metric' and the datasets.data array containing a single data point representing the total orders.",
            "3. The datasets.label will be set to 'Total Orders'.",
            "4. The function will use a Set to store unique Order IDs and count them.",
            "5. The function will not use any other fields from the input arrays."
        ],
        "code": "import pandas as pd\nimport numpy as np\ndef main():\n    # Load necessary columns from the first CSV file\n    df1 = pd.read_csv('/tmp/9f5cd772-aaff-460e-8e7a-03d21070b12c.csv', \n                      usecols=['Order ID'])\n    \n    # Count the total number of orders\n    total_orders = df1['Order ID'].nunique()\n    \n    # Create the chart.js object\n    chart = {\n        \"type\": \"metric\",\n        \"data\": {\n            \"datasets\": [{\n                \"data\": [total_orders],\n                \"label\": \"Total Orders\"\n            }]\n        },\n        \"options\": {\n            \"responsive\": True,\n            \"maintainAspectRatio\": False,\n            \"plugins\": {\n                \"datalabels\": {\n                    \"display\": False\n                },\n                \"title\": {\n                    \"text\": \"Total Orders\"\n                }\n            }\n        }\n    }\n    \n    return chart",
        "team": "ee5b08c6-5167-4425-bbc3-a746fe4a7ead",
        "dashboard": "fd0b9d77-791d-4898-afa6-99800301d861",
        "cache": "{\"type\":\"metric\",\"data\":{\"datasets\":[{\"data\":[5009],\"label\":\"Total Orders\"}]},\"options\":{\"responsive\":true,\"maintainAspectRatio\":false,\"plugins\":{\"datalabels\":{\"display\":false},\"title\":{\"text\":\"Total Orders\"}}}}"
    },
    {
        "id": "db851576-ea8c-40e0-827d-31238b7e21f5",
        "title": "Total customers",
        "query": "Create a metric showing all my customers to date",
        "x": 0,
        "y": 2,
        "w": 4,
        "h": 1,
        "assumptions": [
            "1. The user wants to see the total number of unique customers to date.",
            "2. The 'Customer ID' field from the first data source (key: 93e483e0-1246-43ac-a8bc-5fad124fbf14) will be used to identify unique customers.",
            "3. The 'Order Date' field from the second data source (key: d65edfb2-f781-4815-899e-5f50134b36b8) will be used to filter the data up to the current date.",
            "4. The two data sources will be related using the 'Customer ID' field.",
            "5. The chart will be a metric type, showing a single data point - the total number of unique customers to date."
        ],
        "code": "import pandas as pd\nimport numpy as np\ndef main():\n    # Load necessary columns from the CSV files\n    df1 = pd.read_csv('/tmp/9f5cd772-aaff-460e-8e7a-03d21070b12c.csv', usecols=['Customer ID'])\n    df2 = pd.read_csv('/tmp/6c06673a-8b53-4eba-a4a8-17e23daf0504.csv', usecols=['Customer ID'])\n    # Merge the two dataframes on 'Customer ID'\n    df = pd.merge(df1, df2, on='Customer ID')\n    # Calculate the number of unique customers\n    num_customers = df['Customer ID'].nunique()\n    # Create the chart.js object\n    chart = {\n        \"type\": \"metric\",\n        \"data\": {\n            \"datasets\": [{\n                \"data\": [num_customers],\n                \"label\": \"Number of Customers\"\n            }]\n        },\n        \"options\": {\n            \"responsive\": True,\n            \"maintainAspectRatio\": False,\n            \"plugins\": {\n                \"datalabels\": {\n                    \"display\": False\n                },\n                \"title\": {\n                    \"text\": \"Total Number of Customers\"\n                }\n            }\n        }\n    }\n    return chart",
        "team": "ee5b08c6-5167-4425-bbc3-a746fe4a7ead",
        "dashboard": "fd0b9d77-791d-4898-afa6-99800301d861",
        "cache": "{\"type\":\"metric\",\"data\":{\"datasets\":[{\"data\":[793],\"label\":\"Number of Customers\"}]},\"options\":{\"responsive\":true,\"maintainAspectRatio\":false,\"plugins\":{\"datalabels\":{\"display\":false},\"title\":{\"text\":\"Total Number of Customers\"}}}}"
    }
]