(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa
Azure Synapse Analytics
Azure Synapse Analytics 1 min

Synapse Link para Cosmos DB: analytics operacionais sem ETL

João Barros 15 de July de 2025 1 min de leitura

O Azure Synapse Link for Cosmos DB é uma integração HTAP (Hybrid Transactional/Analytical Processing) que replica automaticamente dados do Cosmos DB para um analytical store no Synapse, sem impacto nas operações transaccionais.

Como funciona

Cosmos DB (OLTP)
  └─ Transactional Store (row-oriented, TTL curto)
  └─ Analytical Store (column-oriented, auto-sync, TTL longo)
            ↑
            Synapse Link (replicação automática, ~2 min latência)
            ↓
  Azure Synapse Analytics
    └─ Serverless SQL Pool → T-SQL sobre dados Cosmos
    └─ Spark Pool → PySpark sobre dados Cosmos

Activar Synapse Link no Cosmos DB

// Portal: Cosmos DB account → Features → Azure Synapse Link → Enable
// Demora ~5 minutos; operação não reversível

// Activar por container (via SDK ou portal):
az cosmosdb sql container update \
  --account-name cosmos-bconcepts \
  --database-name operational \
  --name pedidos \
  --analytical-storage-ttl -1  // -1 = sem expiração

Consultar com Serverless SQL

-- No Synapse Studio (sem pipeline, dados actualizados em ~2 min)
SELECT
    JSON_VALUE(doc, '$.cliente_id')    AS cliente_id,
    JSON_VALUE(doc, '$.estado')        AS estado,
    JSON_VALUE(doc, '$.valor_total')   AS valor,
    JSON_VALUE(doc, '$.data_criacao')  AS data
FROM OPENROWSET(
    PROVIDER = 'CosmosDB',
    CONNECTION = 'account=cosmos-bconcepts;database=operational',
    OBJECT = 'pedidos',
    SERVER_CREDENTIAL = 'CosmosDBCredential'
)
WITH (doc NVARCHAR(MAX)) AS rows
WHERE JSON_VALUE(doc, '$.estado') = 'Pendente';

Consultar com PySpark

df = spark.read.format("cosmos.olap") \
    .option("spark.synapse.linkedService", "CosmosDB_Operational") \
    .option("spark.cosmos.container", "pedidos") \
    .load()

df.groupBy("estado").agg({"valor_total": "sum"}).show()

Conclusão

O Synapse Link elimina o padrão clássico de replicar dados operacionais para o data warehouse via ETL nocturno. Para análises sobre dados quase-em-tempo-real de Cosmos DB, é a solução mais simples e eficiente disponível na Azure.

Partilhar: