# Creating a Report by Uploading a CSV to Data Sandbox

15\.   Delete rows with empty or invalid values in relevant columns after applying the required transformations.

20\.   Save the data preparation and exit.

25\. Plot a KPI to compare CTC by individuals using Name, Previous CTC, and Offered CTC.

31\.   Design a pie chart by selecting Candidate ID and Source, changing the style to doughnut, and    adjusting the legend.

{% hint style="warning" %}
**Prerequisites:**

* CSV file (e.g., **Hiring Data**).
* Access to **Data Center** (Data Sandbox, Data Preparation, Data Store) and **Report Module**.
* Permission to create/save assets.
  {% endhint %}

### Phase 1 — Upload the CSV to **Data Sandbox**

1. **Download** the sample dataset (**Hiring Data**).

2. Open **Apps Menu → Data Center**.

3. Go to **My Connectors** → **Data Sandbox**.

4. Click **Create**, enter a **Data Sandbox Name** and optional **Description**.

   <figure><img src="/files/5psddjVE7nRwkBv3vF2J" alt=""><figcaption></figcaption></figure>

5. **Upload** your CSV (from local machine) and wait for the upload to complete.

   * The file name appears at the bottom when successfully uploaded from the system.&#x20;
   * Click the Upload option to complete the process.

   <figure><img src="/files/RRZtaGMxKEfGhxJz9yCo" alt=""><figcaption></figcaption></figure>

6. A notification appears to inform that the selected file has been uploaded.

7. The recently created Sandbox entry will be listed at the top of the Data Sandbox list.

8. Click the **Vertical Ellipsis** icon to open the Options context menu for the newly uploaded Sandbox file.

9. Click **Preview** to verify the content.

   <figure><img src="/files/nZGR7hlbvVtk0SZMLw6i" alt=""><figcaption></figcaption></figure>

### Phase 2 — Clean the data with **Data Preparation**

1. In **Data Sandbox**, click the **⋯ (More)** menu for the uploaded file → **Create Data Preparation**.
   * Data opens in a grid (rows/columns) with summary details below.
2. **Profile the data** and note issues:
   * **Gender** has 6 categories (expect 2) with **17 invalid rows**.
   * **Experience** contains **decimals** (invalid format).
   * **Previous CTC, Offered CTC, and Monthly Salary** have **empty rows** (highlighted light blue).
3. Click **AutoPrep** and accept the default transformations.
   * Ensure **special characters are removed from column headers**.
4. Apply corrective steps:
   * **Delete rows** with empty/invalid values where appropriate.
   * **Normalize Experience** (fix decimal issues).
   * **Impute blanks** in **Previous CTC, Offered CTC, and Monthly Salary** with **0**.
   * **Validate** changes in preview.
5. **Reduce Gender categories**:
   * After AutoPrep, Gender shows **4 categories**.
   * Use **Search & Replace** to standardize to **Male** and **Female** (2 categories total).
6. **Name** the preparation (e.g., `Hiring_dataprep`) → **Save** and **Exit**.

   <figure><img src="/files/ejFTZzpDyrhnGccOhQmc" alt=""><figcaption></figcaption></figure>

### Phase 3 — Create a **Data Store**

1. From the sandbox file’s **⋯ (More)** menu, choose **Create Data Store**.
2. Enter a **Data Store Name**, select the **prepared data** (from Phase 2).

   <figure><img src="/files/IbeD6ojOTmnpC9a3hkOQ" alt=""><figcaption></figcaption></figure>
3. **Validate** and **Save**; wait for the creation to complete.
   * The Data Store now appears for reporting.

{% hint style="info" %}
**Note:** Upload-based Data Stores won’t support some actions (e.g., View/Edit, Refresh Data). Use them primarily as reporting sources.
{% endhint %}

### Phase 4 — Build a **Self-Service Report**

1. Open **Apps Menu → Report Module**.
2. Create a new **Self Service Report** using the **Data Store** created above.
3. **Design visuals** using fields under the Data Store:

   * **KPI / Chart:** Compare CTC by individual: use **Name**, **Previous CTC**, and **Offered CTC**.
   * **Sort** in **descending** order and **limit to 6** entries.
   * **Add Title** → **Save View**.

   &#x20;&#x20;

   <figure><img src="/files/uuCXlqVOBXbTFc2n8rrw" alt=""><figcaption></figcaption></figure>
4. **Add tabs** for additional views:
   * **Bar/Column**: **Team** vs **Monthly Salary** (descending by salary).
     * Configure chart properties, labels, title → **Save View**.
   * **Doughnut (Pie style)**: **Candidate ID** by **Source**.
     * Adjust legend, titles, display names → **Save View**.
   * **Treemap**: team-wise candidate details using **Team** and **Candidate ID**.
     * Customize colors, titles, display names → **Save View**.

### Phase 5 — Accelerate with **NLP & Synonyms**

* Use **NLP search** in the Report Module to create charts by typing queries\
  (e.g., **“monthly salary by skills”**).
* **Pin** selected NLP charts to the report board; **Save** adjustments.
* In the **Data Store**, add **Synonyms** (e.g., map **“salary”** → **Monthly Salary**) to improve NLP recall.
* Re-run queries using synonyms, pin the best results, and **save**.

- [x] A detailed self-service report gets created.&#x20;

  <figure><img src="/files/wPxCd4Xn1ARIGt9j4EPd" alt=""><figcaption></figcaption></figure>

### Outcome

* CSV data is uploaded, cleaned, standardized, and materialized as a **Data Store**.
* A multi-tab **Self Service Report** with KPIs and charts is published for analysis and sharing.

### Tips & Good Practices

* **Validate at each stage** (prep and store) to catch issues early.
* Use **AutoPrep** to jump-start cleaning; then add targeted transforms (search/replace, impute, delete invalids).
* **Standardize categories** (e.g., Gender) to avoid fragmented segments.
* Keep **field names clean** (no special chars) for smoother reporting and NLP.
* For large CSVs, iterate on a **sample** in Data Preparation, then finalize on the full data.

### Troubleshooting

* **Unexpected categories (e.g., Gender):** Use Search/Replace + value normalization in Data Preparation.
* **Invalid numeric/date fields:** Cast types and replace non-conforming values (or delete invalid rows).
* **Report shows blank/duplicates:** Recheck Data Store source (correct prep version) and chart field mappings.
* **NLP misses terms:** Add **Synonyms** to the Data Store and retry the query.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bdb.ai/bdb-user-documentation/platform-modules/10.0/how-to-guides-and-tutorials/self-service-report/creating-a-report-by-uploading-a-csv-to-data-sandbox.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
