Destinations & Activation → Batch / File Exports

Snowflake / BigQuery

Delivers data directly into a partner or internal team's own cloud data warehouse — either via native Iceberg attachment or a warehouse-native load, no file hand-off required.

High-Level Design

Because storage is open Iceberg, warehouse delivery can be a table attachment, not a copy.

Data Source
Data Sources
Every touchpoint and business system
→
Ingestion
Ingestion Layer
SDKs, connectors, protocols
→
Processing
Rollups & Aggregations
Produces the mart being delivered
→
Foundation
Open Table Format (Iceberg)
What makes direct Snowflake attachment possible
→
Intelligence
Query & Analytics Engine
Alternative read path when a warehouse-native load is preferred
→
Activation
Snowflake / BigQuery
Iceberg external tables (Snowflake) or scheduled load job (BigQuery)

💼 Business Context

  • Teams that already standardize on Snowflake or BigQuery for analysis get CXOS data without learning a new query engine
  • Because the lakehouse is open Iceberg, Snowflake delivery can be a zero-copy table attachment rather than a duplicated, staling export — the same zero-copy principle from the Unified Data Foundation extended to an external consumer
  • Owned by Data Engineering / Analytics Engineering

🔌 Technical Overview

For Snowflake, delivery is a governance-reviewed grant of Iceberg external-table access directly against the lakehouse's Azure Data Lake Storage Gen2 location — no data movement at all, consistent with the platform's zero-copy architecture. BigQuery, lacking native Iceberg external-table support at the same maturity, instead receives a scheduled load job (a .NET Core Docker container on Azure Container Apps Jobs) that reads via the Query & Analytics Engine and writes into a BigQuery-native table on a schedule.

Delivery Modes

Snowflake — Iceberg external table (zero-copy) BigQuery — scheduled load job Governance-reviewed grant

💾 Warehouse Delivery Config

-- Snowflake: zero-copy external table
CREATE EXTERNAL TABLE partner_db.order_fact
  LOCATION = 'abfss://lakehouse@cxosdata.dfs.core.windows.net/marts/order_fact'
  FILE_FORMAT = ICEBERG;

-- BigQuery: scheduled load job (no native Iceberg external tables)
{ "destination": "bigquery://partner-project.cxos.order_fact", "schedule": "hourly" }

🔗 Integration Points

  • Open Table Format (Iceberg) — what makes the Snowflake zero-copy path possible
  • Query & Analytics Engine — read path for the BigQuery load job
  • Governance & Security — reviews and grants external-table access before any warehouse can attach
  • Azure Data Lake Storage Gen2 — the physical location Snowflake attaches to directly

🧰 Services Consumed

  • Owning microservice — Cxos.Connectors.BatchExport (see the Full Application Service Map)
  • No dedicated database — stateless connector (see Platform Connectors above)

⚠️ Non-Functional Considerations

  • Scale: Snowflake attachment has no export-size limit since no copy is made; BigQuery load jobs are sized to the scheduled table/range like any batch export
  • Latency: Snowflake external tables reflect the lakehouse in near-real-time (as fast as the underlying dbt refresh); BigQuery lags by its load schedule
  • Reliability: Snowflake's zero-copy path has no separate copy to drift out of sync with the source; the BigQuery path is validated like any other batch export
  • Security/Privacy: external-table grants are entitlement-scoped and reviewed by Governance & Security before being issued, same as any other access grant

🎯 Enterprise Example

A partner analytics team standardized on Snowflake asks for order data access. Rather than building a recurring export pipeline, Data Engineering grants a reviewed Iceberg external-table connection — the partner queries current data directly, with zero ongoing export maintenance.

← Back to Batch / File Exports