# Dremio

Dremio is a lakehouse platform that enables high-performance SQL queries directly on data lake storage. Paradime supports connections to both **Dremio Cloud** and **Dremio Software**. As a development environment in Paradime, Dremio enables dbt™️ development from Paradime's **Code IDE**.

{% hint style="warning" %}
**IP RESTRICTIONS**

Make sure to allow traffic from one of the Paradime IPs in your firewall depending on the data location selected.

👉 See also: [Paradime IP addresses](https://docs.paradime.io/app-help/developers/ip-restrictions).
{% endhint %}

### Prerequisites

Dremio offers different authentication methods for Dremio Cloud and Dremio Software deployments. Choose the appropriate method and ensure complete their respective prerequisites.

#### Dremio Cloud

* Access to a Dremio Cloud workspace
* Access to the ID of the Sonar project you want to use. See [Obtaining the ID of a Project](https://docs.dremio.com/cloud/cloud-entities/projects/#obtaining-the-id-of-a-project).
* A valid personal access token (PAT) for authenticating to Dremio Cloud. See [Creating a Token](https://docs.dremio.com/cloud/security/authentication/personal-access-token/#creating-a-token).
* Python 3.9 or later installed on the system that you are running dbt on.

#### Dremio Software

* Dremio Software version 22.0 or later
* Python 3.9 or later installed
* Required support keys enabled in your Dremio cluster (See [Support Keys](https://docs.dremio.com/software/advanced-administration/support-settings/#support-keys) docs for details)
  * `dremio.iceberg.enabled`
  * `dremio.iceberg.ctas.enabled`
  * `dremio.execution.support_unlimited_splits`

### Setup Instructions

1. Click **Settings** in the top menu bar of the Paradime interface to access **Account Settings**
2. In the left sidebar, click "**Connections**"
3. Click "**Add New**" next to the Code IDE section
4. Select "**Dremio**"
5. In the **Profile Configuration** field, add the following parameters based on your authentication method. Reference the [**Profile Fields Reference**](#profile-fields-reference) section below for additional context and configurations:

{% tabs %}
{% tab title="Dremio Cloud" %}

```yaml
cloud_host: https://api.dremio.cloud      # US Control Plane
cloud_project_id: 12345678                # Sonar project ID
object_storage_source: my_storage         # Filesystem name for objects
object_storage_path: data/analytics       # Filesystem path for objects
dremio_space: analytics_space             # Space for view creation
dremio_space_folder: reports.daily        # Space folder path
pat: drm_cl_1a2b3c4d5e6f                 # Personal access token
use_ssl: true                             # Required for Cloud
user: analyst@company.com                 # Your email
```

{% endtab %}

{% tab title="Dremio Software (Username/Password)" %}

```yaml
software_host: dremio.company.com         # Hostname or IP address
port: 9047                                # Default: 9047
user: dremio_analyst                      # Username
password: your_secure_password            # Password
object_storage_source: company_storage    # Filesystem name for objects
object_storage_path: data/transforms      # Filesystem path for objects
dremio_space: dev_space                   # Space for view creation
dremio_space_folder: testing.models       # Space folder path
threads: 4                                # Number of threads
use_ssl: true                             # Enable SSL
```

{% endtab %}

{% tab title="Dremio Software (Personal Access Token)" %}

```yaml
pat: drm_sw_1a2b3c4d5e6f                 # Token for authentication
port: 9047                                # Port for Dremio Software cluster API endpoints
software_host: dremio.internal.net        # Hostname or IP address of the Dremio coordinator node
object_storage_source: analytics_source    # Name of filesystem for creating tables and views
object_storage_path: production/models     # Path in filesystem for objects
dremio_space: prod_space                  # Dremio space for creating views
dremio_space_folder: models.validated     # Folder path in Dremio space
threads: 4                                # Number of threads for dbt project execution
use_ssl: true                             # Enable/disable SSL connection
user: dremio_prod                         # Username for authentication
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
After adding the configuration, ensure it's properly formatted using a YAML formatter like [YAML Formatter](https://jsonformatter.org/yaml-formatter).
{% endhint %}

6. Provide a dbt™ **Profile Name** (This should match with the profile name set in your `dbt_project.yml`).
7. In the **Target** field, enter "**dev**". This is the default target your dbt project will use for development work.
8. The "**Threads**" value is pre-configured to 1, but you can adjust this number to specify how many parallel operations your dbt project can run.

***

### Example Profile Configuration

<figure><img src="https://2337193041-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHET0AD04uHMgdeLAjptq%2Fuploads%2F5UCHauFVPmuDcYJoQqO5%2Fimage.png?alt=media&#x26;token=b826302f-a636-49a5-a7de-94dbf5865ecd" alt=""><figcaption><p>Profile configuration example is for "Dremio Cloud" </p></figcaption></figure>

***

### Profile Fields Reference[​](https://docs.getdbt.com/docs/core/connect-data-platform/clickhouse-setup#description-of-clickhouse-profile-fields)

{% tabs %}
{% tab title="Common Fields" %}

<table><thead><tr><th width="205">Field</th><th width="185">Description</th><th width="206">Default Value</th><th>Required</th></tr></thead><tbody><tr><td>object_storage_source</td><td>Source name for storing tables and other objects</td><td><code>$scratch</code></td><td>❌</td></tr><tr><td>object_storage_path</td><td>Path within storage for object creation</td><td><code>no_schema</code></td><td>❌</td></tr><tr><td>dremio_space</td><td>Space designation for view creation</td><td><code>@username</code></td><td>❌</td></tr><tr><td>dremio_space_folder</td><td>Folder structure within Dremio space</td><td><code>no_schema</code></td><td>❌</td></tr></tbody></table>
{% endtab %}

{% tab title="Dremio Cloud" %}

<table><thead><tr><th width="178">Field</th><th width="242">Description</th><th width="163">Default Value</th><th>Required</th></tr></thead><tbody><tr><td>cloud_host</td><td>Dremio Cloud API endpoint</td><td><code>https://api.dremio.cloud</code></td><td>✅</td></tr><tr><td>cloud_project_id</td><td>Project identifier in Dremio Cloud</td><td>None</td><td>✅</td></tr><tr><td>user</td><td>Email address for authentication</td><td>None</td><td>✅</td></tr><tr><td>pat</td><td>Authentication token</td><td>None</td><td>✅</td></tr><tr><td>use_ssl</td><td>SSL connection enablement</td><td><code>true</code></td><td>✅</td></tr></tbody></table>
{% endtab %}

{% tab title="Dremio Software " %}

<table><thead><tr><th width="159">Field</th><th width="185">Description</th><th width="206">Default Value</th><th>Required</th></tr></thead><tbody><tr><td>software_host</td><td>Host address of Dremio instance</td><td>None</td><td>✅</td></tr><tr><td>port</td><td>Connection port number</td><td><code>9047</code></td><td>✅</td></tr><tr><td>user</td><td>Authentication username</td><td>None</td><td>✅</td></tr><tr><td>password</td><td>User password (if not using PAT)</td><td>None</td><td>✅*</td></tr><tr><td>pat</td><td>Authentication token (if not using password)</td><td>None</td><td>✅*</td></tr><tr><td>use_ssl</td><td>SSL connection enablement</td><td><code>false</code></td><td>✅</td></tr></tbody></table>

\*: Either password or port must be provided, but not both
{% endtab %}
{% endtabs %}
