135 lines
2.9 KiB
Markdown
135 lines
2.9 KiB
Markdown
# Step-by-step Guide
|
|
|
|
A step-by-step guide to connecting MongoDB and HubSpot in MindsDB, querying across them, and using an AI agent over the same data.
|
|
|
|
---
|
|
|
|
## 1. Create Databases
|
|
|
|
Connect MongoDB (reviews, product sales) and HubSpot (companies, contacts) as MindsDB datasources.
|
|
|
|
**MongoDB**
|
|
|
|
```sql
|
|
CREATE DATABASE mongodb_data
|
|
WITH ENGINE = 'mongodb',
|
|
PARAMETERS = {
|
|
"host": "mongodb+srv://demouser:MindsDB_demo@mindsdb-demo.whljnvh.mongodb.net/demo"
|
|
};
|
|
```
|
|
|
|
**HubSpot**
|
|
|
|
```sql
|
|
CREATE DATABASE hubspot_data
|
|
WITH ENGINE = 'hubspot',
|
|
PARAMETERS = {
|
|
"access_token": "pat-na1-d7a93c10-07d1-45fd-ac7a-b109d00d9e2b"
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Display Data
|
|
|
|
Verify data from each source.
|
|
|
|
**HubSpot companies** (sample fields):
|
|
|
|
```sql
|
|
SELECT name, domain, industry, annualrevenue, numberofemployees
|
|
FROM hubspot_data.companies
|
|
LIMIT 10;
|
|
```
|
|
|
|
**MongoDB reviews** (sample fields):
|
|
|
|
```sql
|
|
SELECT customer_email, product_sku, star_rating, review_title, review_text
|
|
FROM mongodb_data.reviews
|
|
LIMIT 10;
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Query Data
|
|
|
|
### Single-database queries
|
|
|
|
**Q. What is the average product review rating?**
|
|
|
|
```sql
|
|
SELECT AVG(star_rating) AS average_rating
|
|
FROM mongodb_data.reviews;
|
|
```
|
|
|
|
### Cross-database queries
|
|
|
|
**Q. Who are our top 10 customers by revenue?**
|
|
|
|
```sql
|
|
SELECT
|
|
hc.firstname,
|
|
hc.lastname,
|
|
ROUND(SUM(ps.sales_amount), 2) AS total_revenue
|
|
FROM mongodb_data.product_sales AS ps
|
|
JOIN hubspot_data.contacts AS hc ON ps.customer_email = hc.email
|
|
GROUP BY hc.firstname, hc.lastname
|
|
ORDER BY total_revenue DESC
|
|
LIMIT 10;
|
|
```
|
|
|
|
---
|
|
|
|
## 4. Create Agent
|
|
|
|
Define a `sales_agent` that can answer questions over HubSpot contacts and MongoDB product sales.
|
|
|
|
```sql
|
|
CREATE AGENT sales_agent
|
|
USING
|
|
model = {
|
|
"provider": "openai",
|
|
"model_name": "gpt-5.4",
|
|
"api_key": "<your-openai-api-key>"
|
|
},
|
|
data = {
|
|
"tables": [
|
|
"hubspot_data.contacts",
|
|
"mongodb_data.product_sales"
|
|
]
|
|
},
|
|
prompt_template = '
|
|
hubspot_data.contacts stores CRM contact data including:
|
|
id, email, firstname, lastname, jobtitle, company, city,
|
|
website, lifecyclestage, hs_lead_status.
|
|
|
|
mongodb_data.product_sales stores sales order line items including:
|
|
order_number, order_date, customer_email, city, state, product_sku,
|
|
sales_quantity, discount_percent, sales_price, sales_amount,
|
|
sales_tax_percent, tax_amount.
|
|
|
|
To join both sources, use:
|
|
hubspot_data.contacts.email = mongodb_data.product_sales.customer_email.
|
|
',
|
|
timeout = 60;
|
|
```
|
|
|
|
---
|
|
|
|
## 5. Query Agent
|
|
|
|
### Single-database question
|
|
|
|
```sql
|
|
SELECT answer FROM sales_agent
|
|
WHERE question = 'What is the total revenue in product sales?';
|
|
```
|
|
|
|
### Cross-database question
|
|
|
|
```sql
|
|
SELECT answer FROM sales_agent
|
|
WHERE question = 'What is the lifecycle stage of noah.johnson@clearwaterholdings.co, and how much have they spent in total?';
|
|
```
|