Skip to main content

Azure Blob Storage

Overview

This destination writes data to Azure Blob Storage.

The Calabi Connect Azure Blob Storage destination allows you to sync data to Azure Blob Storage. Each stream is written to its own blob under the container, as <stream_namespace>/<stream_name>/yyyy_mm_dd_<unix_epoch>_<part_number>.<file_extension>.

Supported sync modes

Sync modeSupported?
Full Refresh - OverwriteYes
Full Refresh - AppendYes
Full Refresh - Overwrite + DedupedNo
Incremental Sync - AppendYes
Incremental Sync - Append + DedupedNo

Configuration

ParameterTypeNotes
Azure Blob Storage Endpoint Domain NamestringThis is Azure Blob Storage endpoint domain name. Leave default value (or leave it empty if run container from command line) to use Microsoft native one.
Azure Blob Storage Container NamestringA name of the Azure Blob Storage container. If not exists - will be created automatically. If leave empty, then will be created automatically airbytecontainer+timestamp.
Azure Blob Storage Account NamestringThe account's name of the Azure Blob Storage.
Azure Blob Storage Account KeystringAzure Blob Storage account key. If this is set, the Shared Access Signature, Azure Tenant ID, Azure Client ID, and Azure Client Secret fields must not be set. Example: abcdefghijklmnopqrstuvwxyz/0123456789+ABCDEFGHIJKLMNOPQRSTUVWXYZ/0123456789%++sampleKey==.
Shared Access SignaturestringAzure Blob Storage shared access signature (SAS). If this is set, the Azure Blob Storage Account Key, Azure Tenant ID, Azure Client ID, and Azure Client Secret fields must not be set. Example: sv=2025-01-01&ss=b&srt=co&sp=abcdefghijk&se=2026-01-31T07:00:00Z&st=2025-01-31T20:30:29Z&spr=https&sig=YWJjZGVmZ2hpamthYmNkZWZnaGlqa2FiY2RlZmdoaWp%3D.
Azure Tenant IDstringAzure Active Directory (Entra ID) tenant ID. Required for Entra ID authentication. If this is set, Azure Client ID and Azure Client Secret must also be set. Example: 12345678-1234-1234-1234-123456789012.
Azure Client IDstringAzure Active Directory (Entra ID) client ID. Required for Entra ID authentication. If this is set, Azure Tenant ID and Azure Client Secret must also be set. Example: 87654321-4321-4321-4321-210987654321.
Azure Client SecretstringAzure Active Directory (Entra ID) client secret. Required for Entra ID authentication. If this is set, Azure Tenant ID and Azure Client ID must also be set.
Azure Blob Storage Target Blob Size (MB)integerHow large each blob should be, in megabytes. Example: 500. After a blob exceeds this size, the connector will start writing to a new blob, and increment the part number.
FormatobjectFormat specific configuration. See below for details.

Output Schema

CSV

Like most other Calabi Connect destination connectors, the output contains your data, along with some [metadata fields]. If you select the "root level flattening" option, your data will be promoted to additional columns; if you select "no flattening", your data will be left as a JSON blob inside the _airbyte_data column.

For example, given the following JSON object from a source:

{
"user_id": 123,
"name": {
"first": "John",
"last": "Doe"
}
}

With no flattening, the output CSV is:

_airbyte_raw_id_airbyte_extracted_at_airbyte_generation_id_airbyte_meta_airbyte_data
26d73cde-7eb1-4e1e-b7db-a4c03b4cf206162213580500011{"changes":[], "sync_id": 10111 }{ "user_id": 123, name: { "first": "John", "last": "Doe" } }

With root level flattening, the output CSV is:

_airbyte_raw_id_airbyte_extracted_at_airbyte_generation_id_airbyte_metauser_idname.firstname.last
26d73cde-7eb1-4e1e-b7db-a4c03b4cf206162213580500011{"changes":[], "sync_id": 10111 }123JohnDoe

JSON Lines (JSONL)

JSON Lines is a text format with one JSON per line. As with the CSV format, this connector will write your data along with some [metadata fields]. You can enable "root level flattening" to promote your data to the root of the JSON object, or use "no flattening" to leave your data inside the _airbyte_data object.

For example, given the following two JSON object from a source:

{
"user_id": 123,
"name": {
"first": "John",
"last": "Doe"
}
}
{
"user_id": 456,
"name": {
"first": "Jane",
"last": "Roe"
}
}

With no flattening, the output JSONL is:

{ "_airbyte_raw_id": "26d73cde-7eb1-4e1e-b7db-a4c03b4cf206", "_airbyte_extracted_at": "1622135805000", "_airbyte_generation_id": "11", "_airbyte_meta": { "changes": [], "sync_id": 10111 }, "_airbyte_data": { "user_id": 123, "name": { "first": "John", "last": "Doe" } } }
{ "_airbyte_raw_id": "0a61de1b-9cdd-4455-a739-93572c9a5f20", "_airbyte_extracted_at": "1631948170000", "_airbyte_generation_id": "12", "_airbyte_meta": { "changes": [], "sync_id": 10112 }, "_airbyte_data": { "user_id": 456, "name": { "first": "Jane", "last": "Roe" } } }

With root level flattening, the output JSONL is:

{ "_airbyte_raw_id": "26d73cde-7eb1-4e1e-b7db-a4c03b4cf206", "_airbyte_extracted_at": "1622135805000", "_airbyte_generation_id": "11", "_airbyte_meta": { "changes": [], "sync_id": 10111 }, "user_id": 123, "name": { "first": "John", "last": "Doe" } }
{ "_airbyte_raw_id": "0a61de1b-9cdd-4455-a739-93572c9a5f20", "_airbyte_extracted_at": "1631948170000", "_airbyte_generation_id": "12", "_airbyte_meta": { "changes": [], "sync_id": 10112 }, "user_id": 456, "name": { "first": "Jane", "last": "Roe" } }

Getting started

Requirements

  1. Create an AzureBlobStorage account.
  2. Check if it works under https://portal.azure.com/ -> "Storage browser".

Setup guide

  • Fill up AzureBlobStorage info
    • Azure Blob Storage Endpoint Domain Name
      • Leave the default value (or leave it empty if running the container from the command line) to use the Microsoft endpoint, or specify your own.
    • Azure Blob Storage Container Name
      • If the container does not exist, it will be created automatically. If left empty, a container named airbytecontainer with a timestamp suffix will be created.
    • Azure Blob Storage Account Name
      • See this on how to create an account.
    • Authentication - you must use exactly one of these:
      • Shared Access Signature (recommended)
        • See this for how to create an SAS.
      • Azure Entra ID (Service Principal)
        • Azure Tenant ID, Azure Client ID, and Azure Client Secret from an Azure service principal with appropriate permissions.
        • See this for how to create a service principal.
      • Azure Blob Storage Account Key
        • Corresponding key to the above user.
    • Format
      • Data format that will be use for a migrated data representation in blob.
  • Make sure your user has access to Azure from the machine running Calabi Connect.
    • This depends on your networking setup.
    • The easiest way to verify if Calabi Connect is able to connect to your Azure blob storage container is via the check connection tool in the UI.

Namespace support

This destination supports namespaces. The namespace is used as part of the output path structure.