> ## Documentation Index
> Fetch the complete documentation index at: https://support.entegrata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Fabric warehouse

## Overview

Emit collected data from Entegrata into a Microsoft Fabric Warehouse.

**Emission is available to customers on the Firm-Hosted model. This emitter endpoint is not currently available to customers on the Entegrata-Hosted model.**

**Destination type:** SQL database (Microsoft Fabric Warehouse)

## Before You Start

Entegrata authenticates to Fabric with an Azure AD identity. Pick one of:

* **Managed Identity** — ask your Entegrata Customer Experience Manager for the managed identity Entegrata uses in Azure. Add that identity to the target Fabric workspace as a **Member** (or higher) and grant it read/write access to the warehouse.
* **Service Principal** — create (or reuse) an Azure AD app registration with a client secret or certificate. Add the app registration to the target Fabric workspace as a **Member** (or higher) and grant it read/write access to the warehouse.
* Pick (or create) a target schema where Entegrata can create and manage tables

See [Azure Entra ID Authentication](/data/collector/connections/entra-authentication) for detailed setup steps.

## Connection Details

<ResponseField name="Host" type="string" required>
  Fabric Warehouse endpoint hostname, e.g. `<workspace>.datawarehouse.fabric.microsoft.com`.
</ResponseField>

<ResponseField name="Database" type="string" required>
  Fabric Warehouse name.
</ResponseField>

<ResponseField name="Target Schema" type="string" required>
  Schema inside the warehouse where emitted tables live. Defaults to `dbo`.
</ResponseField>

<ResponseField name="Encrypt Connection" type="boolean" default="true">
  Encrypt the connection in transit. Enabled by default. Only disable for legacy servers that cannot negotiate encryption.
</ResponseField>

## Authentication

Fabric endpoints don't accept SQL logins — Entegrata authenticates with an Azure AD identity. Pick the method that matches how you've set up access.

<Tabs>
  <Tab title="Entra Service Principal">
    Application-based authentication using an Azure AD app registration.

    <ResponseField name="Tenant ID" type="string" required>
      Azure AD tenant (directory) ID.
    </ResponseField>

    <ResponseField name="Client ID" type="string" required>
      Application (client) ID of the Azure AD app registration.
    </ResponseField>

    <ResponseField name="Client Secret" type="string">
      Client secret from the app registration. Provide **either** a secret **or** a certificate.
    </ResponseField>

    <ResponseField name="Client Certificate" type="string">
      PEM-encoded client certificate. Provide **either** a secret **or** a certificate.
    </ResponseField>

    <Warning>
      Service principal secrets and certificates expire. Set the **Secret Expiration** field on the connection so you're notified before they do.
    </Warning>
  </Tab>

  <Tab title="Entra ID">
    Passwordless authentication using the managed identity Entegrata uses in Azure. No credentials are entered — the managed identity must be added to the Fabric workspace and granted access to the target.

    <Note>
      Entra ID (managed identity) authentication is only available for self-hosted instances. Entegrata-hosted instances must use the Service Principal option.
    </Note>
  </Tab>
</Tabs>

## Write Modes

* **Full Refresh** — Entegrata loads all rows into a staging table and atomically swaps it with the target table. Any indexes and keys you've added to the target are captured beforehand and reapplied after the swap.
* **Incremental Merge** — Entegrata writes only rows that changed in the source since the last emission, using the target's primary key to apply inserts, updates, and deletes.

Entegrata picks the mode automatically on each emission — Full Refresh for the first run or when the schema changes materially, Incremental Merge for subsequent runs.

## Naming Convention

Emitted table and column names are transformed to match the convention configured on the emitter (default: `snake_case`). Configure the convention per emitter to match the downstream tools consuming the replica.
