Skip to main content

Azure Blob Storage

Azure Blob Storage datasources allow CloudQuant Data Liberator to read CSV, TSV, and other delimited files from Azure Blob containers. CloudQuant Data Liberator mounts the container via FUSE.

Connection Configuration

Required Fields

FieldTypeDescription
connection_typestringMust be "azure"
accountstringAzure storage account name
keystringStorage account access key
containerstringBlob container name

Optional Fields

FieldTypeDefaultDescription
endpointstringBlob endpoint URL (override for sovereign clouds or Azurite)
prefixstring""Blob prefix (virtual directory) within the container
mount_pointstringLocal mount path for FUSE-based access
config_namestringInternal configuration identifier
object_keystringObject key pattern for blob selection
The endpoint field is only needed for non-standard Azure environments such as Azure Government, Azure China, or local development with Azurite. For standard Azure public cloud, CloudQuant Data Liberator derives the endpoint from the account name.

Example Connection

{
  "name": "azure-market-data",
  "connection_type": "azure",
  "account": "mystorageaccount",
  "key": "base64encodedstorageaccountkey==",
  "container": "market-data",
  "prefix": "equities/daily/"
}
Storage account keys grant full access to the entire storage account. Rotate keys regularly and use environment variables or a secrets manager to inject them at deployment time.

Dataset Configuration (data_args)

The data_args fields are identical to all file-based sources. See Local File for the full reference. The file_pattern is evaluated relative to the prefix configured on the connection.

Required data_args

FieldTypeDescription
file_patternstringGlob pattern relative to the prefix, e.g., "*.csv"
data_dt_columnstring or listColumn(s) containing the datetime value
data_dt_formatstring or liststrptime format or special values ("muts", "uts", "datetime")
data_key_columnstring or listSymbol/key column(s)

Optional data_args

FieldTypeDefaultDescription
sep_overridestring","Delimiter character
encodingstring"utf-8"File encoding
data_dt_timezonestring"UTC"Source data timezone
fname_dt_regexstringRegex to extract date from filename
fname_dt_formatstringstrptime format for filename date
fname_dt_timezonestringTimezone of filename date
fname_dt_nudgeint0Microsecond offset for filename date
fname_dt_approx_secondsintApproximate seconds per file
arrow_sortlist["symbol", "muts"]Sort order
arrow_timestampbooltrueGenerate human-readable timestamp column

Complete Example

Connection

{
  "name": "azure-eod-prices",
  "connection_type": "azure",
  "account": "caboretlstorage",
  "key": "xYzAbCdEfGhIjKlMnOpQrStUvWxYz0123456789==",
  "container": "eod-data",
  "prefix": "prices/us-equities/"
}

Dataset

{
  "name": "us-equity-eod",
  "connection": "azure-eod-prices",
  "data_args": {
    "file_pattern": "eod_*.csv",
    "sep_override": ",",
    "encoding": "utf-8",
    "data_dt_column": "date",
    "data_dt_format": "%Y-%m-%d",
    "data_dt_timezone": "America/New_York",
    "data_key_column": "ticker",
    "fname_dt_regex": "eod_(\\d{8})\\.csv",
    "fname_dt_format": "%Y%m%d",
    "fname_dt_timezone": "America/New_York",
    "fname_dt_approx_seconds": 86400,
    "arrow_sort": ["symbol", "muts"],
    "arrow_timestamp": true
  },
  "schema": [
    { "name": "ticker", "type": "string", "group": "key", "description": "Ticker symbol" },
    { "name": "date", "type": "string", "group": "time", "description": "Trade date" },
    { "name": "open", "type": "double", "group": "value", "description": "Open price" },
    { "name": "high", "type": "double", "group": "value", "description": "High price" },
    { "name": "low", "type": "double", "group": "value", "description": "Low price" },
    { "name": "close", "type": "double", "group": "value", "description": "Close price" },
    { "name": "volume", "type": "int64", "group": "value", "description": "Daily volume" },
    { "name": "adj_close", "type": "double", "group": "value", "description": "Adjusted close price" }
  ]
}

Azure Setup Requirements

Ensure the following before configuring your Azure Blob connection:
  1. Storage account exists and is accessible from the CloudQuant Data Liberator host
  2. Container is created within the storage account
  3. Access key is available (found under Storage Account > Access Keys in the Azure Portal)
  4. Network access is permitted — if the storage account uses firewall rules, add the CloudQuant Data Liberator host’s IP to the allowed list
For initial testing, use Azure Storage Explorer to verify your files are accessible before configuring the CloudQuant Data Liberator connection. This eliminates credential and network issues early.
See the Azure Blob Storage integration guide for additional setup details.